Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроц техника / 4 курс_МТ_МСУД / описание микроСи .doc
Скачиваний:
34
Добавлен:
10.02.2015
Размер:
261.63 Кб
Скачать

Void func (int n, float f, char ch);

Точка с запятой «;» - терминатор утверждения. Любое правильное выражение (включая пустое выражение) сопровождающееся точкой с запятой интерпретируется как законченное утверждение.

a + b;

++a; x = 0;

; //пустое или нулевое утверждение

Двоеточие « используется для выделения утверждения:

start: x = 0;

goto start;

Указатель «*» возвращает значение переменной по указанному адресу. например, если m содержит адрес переменной count, то х=m*; помещает значение count в х.

Знак Равенства «=» – используется для операции присваивания:

int x = 5;

int test[5]={1,2,3,4,5};

Знак (#) (директива препроцессора). Директивы препроцессора, не являясь частью языка, расширяют область его применения. Обработка программы препроцессором проходит перед ее компиляцией. На этом этапе: в компилируемый файл включаются другие файлы, определяются символьные константы и макросы, задаются режимы условной компиляции программного кода и условного выполнения директив препроцессора. Любая строка, начинающаяся с # воспринимается как директива препроцессора, а в конце директивы (;) не ставится.

Типы данных

МikroC – очень формализованный язык, это означает что каждый объект, функция и выражение должны иметь строго определенный тип, который может быть распознан компилятором. Причем, mikroC работает исключительно с числовыми типами.

МikroC поддерживает много стандартных (встроенных) и определяемых пользователем типов данных, включая беззнаковые целые числа, числа с плавающей запятой разной точности, массивы структуры и объединения.

Все типы можно разбить на 4 основных группы

Aggregate (структуры данных)

Array

Массивы

struct

Структуры

union

Объединения

class

Классы

Function

Функции

Scalar (скалярные)

Arithmetic

Арифметические

Enumeration

Перечислимые

Pointer

Указатели

Reference

Ссылки

void

Нет значения

Синтаксис объявления типа:

Определение_типа идентификатор;

Идентификатор – вводимое пользователем имя нового типа, определение_типа – описание этого типа.

Например,

double Ar[10];//объявление типа с именем Ar,

в дальнейшем на этот тип можно ссылаться при объявлении переменных, например,

Ar A={1,2,3,4,5,6,7,8,9,10};

Арифметические типы

Арифметические описатели типа построены из следующих ключевых слов: void, char, int, float, double со следующими модификаторами: short, long, signed and unsigned. Используя эти ключевые слова можно сформировать как целое число так и число с плавающей запятой.

Целочисленные типы

Типы char, int вместе с их модификаторами образуют следующие типы данных.

Тип

Размер в байтах

диапазон

(unsigned) char

1

0.. 255

signed char

1

-128.. 127

(signed) short (int)

1

-128.. 127

unsigned short (int)

1

0 .. 255

(signed) int

2

-32768 .. 32767

unsigned (int)

2

0.. 65535

(siqned) lonq (int)

4

-2147483648 .. 2147483647

unsigned lonq

4

0 .. 4294967295

Ключевые слова (стоят в скобках) могут быть опущены.

Числа с плавающей запятой находятся в диапазоне:

float (‑1,5*1045…3,4*1038) – 4 байта,

double (1,5*1045…3,4*1038) - 4 байта,

long double (1,5*1045…3,4*1038) - 4 байта

Перечислимые типы определяют упорядоченное множество идентификаторов, представляющих собой возможные значения переменных этого типа. Вводятся для того, чтобы сделать код более понятным, например, пусть в переменной Mode зафиксированы режимы работы приложения: чтение, запись, редактирование. Можно присвоить переменной тип int и в нужном месте программы присваивать ей условные числа: 0-режим чтения, 1 – режим редактирования, 2-режим записи. Тогда программа будет содержать операторы вида

if (Mode==1)… ;

Однако, через некоторое время оператор забудет, что означает «режим 1», а что «режим 0» или «режим 2», поэтому можно объявить переменную Mode как переменную перечислимого типа и обозначить ее возможные значения как Read, Edit,Write и тогда приведенный выше оператор будет иметь вид:

if (Mode==Edit) …;

Определение переменных этого типа: enum{<константа1 >, …, <константа n>}<имена переменных>;

enum colors { Read, Edit, Write } Mode;

В момент объявления переменная инициализируется значением первой константы (в примере - Read), потом ей можно присваивать любые значения, например, Mode=Edit, к ним можно применять операторы сравнения: If(Mode<Edit) …;

Тип void указывает на то, что функция не возвращает никаких значений или не получает никаких параметров или создает нетипизированные указатели.

void print_temp (char temp) //функция print_temp не

// возвращает никаких значений

{

Lcd_Out_Cp(“temperature:”);

Lcd_Out_Cp (temp);

Lcd_Out_Cp(223);

Lcd_Out_Cp(‘C’);

}

Указатель – это адрес переменной в памяти. Зная адрес переменной, можно упростить работу программы. Основные назначения указателей: 1) предоставляют быстрое обращение к элементам массива, 2) позволяют функциям модифицмровать передаваемые параметры, 3) поддерживают динамические структуры данных, например списки.

Объявление указателя. Указатель объявляется так же как и любая переменная, но перед идентификатором добавляется *. * - унарный оператор, возвращающий значение переменной по указанному адресу, например, если m содержит адрес переменной с, то g=*m помещает значение с в g.

тип *имя_указателя // неинициализированный указатель

Массивы – совокупность переменных одного типа, к которым обращаются с помощью общего имени. Доступ к отдельному элементу массива – с помощью индекса. Все массивы состоят из соприкасающихся участков памяти, наименьший адрес соответствует первому элементу, наибольший – последнему.

Одномерный массив. Объявление такого массива:

тип имя_переменной [размер]

У всех массивов первый индекс 0, поэтому в массиве char p [10];, содержащем 10 элементов, индексы элементов будут 0…9.

Многомерные массивы. Простейший пример многомерных массивов - двумерные. Двумерный массив – это массив одномерных массивов. Объявляется следующим образом:

Тип имя_массива [размер 2-го измерения] [размер 1-го измерения]

Первое измерение – количество строк, второе – количество столбцов. Например, массив размером 10 столбцов на 20 строк объявляется как int d [10] [20];.

Инициализация массива:

одномерный массив: int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};

двумерный массив: int m[3] [2]={{1,2},{2,3},{3,4}};

Структуры. Структура - это совокупность переменных, объединенных одним именем, предоставляющая общепринятый способ совместного хранения данных. Объявление структуры приводит к образованию шаблона, используемого для создания объектов структуры. Переменные, образующие структуру – ее члены (элементы или поля).

Объявление структуры сопровождается ключевым словом struct, например:

struct addr // addr - ярлык

{

char name[20]; //тип имя_переменной

char street[40];