роботы
робототехника
микроконтроллеры
Главная
Новости
Спорт
Шаг за шагом
Статьи
Wiki
Форум
Downloads
Ссылки
Контакты
 

Простейший робот
Схема и описание простого робота на одной микросхеме. Робот может двигаться на свет или следовать за рукой.  

Схема и описание первого проекта на микроконтроллере AVR
"Hello, world!" для микроконтроллера.  

Робот на микроконтроллере AVR
Схема робота на микроконтроллере. Примеры программ.  

AVR GCC :: ПЕРЕМЕННЫЕ И КОНСТАНТЫ


Типы переменных. Объявление переменных.
Константы. Присваивание. Арифметические операции.
Инкремент и декремент.


Переменные


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

Давая переменной имя, программист одновременно тем же именем называет и область памяти, куда будут записываться значения переменной для хранения.

Хорошим стилем является осмысленное именование переменных. Имя переменной может содержать от одного до 32 символов. Разрешается использовать строчные и прописные буквы, цифры и символ подчёркивания, который в Си считается буквой. Первым символом обязательно должна быть буква. Имя переменной не может совпадать с зарезервированными словами.

В языке Си все переменные должны быть объявлены. Это означает, что, во-первых, в начале каждой программы или функции Вы должны привести список всех используемых переменных, а во-вторых, указать тип каждой из них.

При объявлении переменной компилятор отводит ей место в памяти в зависимости от её типа. Стандартными средствами AVR GCC работает с типами данных char (символьный тип) и int (целочисленный тип).


Типы переменных


Тип char

char - является самым экономным типом. Тип char может быть знаковым и беззнаковым. Обозначается, соответственно, как "signed char" (знаковый тип) и "unsigned char" (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый - от 0 до 255. Под переменную типа char отводится 1 байт памяти (8 бит).

Ключевые слова (модификаторы) signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый.

Тип int

Целочисленная величина int может быть short (короткой) или long (длинной).

Ключевое слово (модификатор) short ставится после ключевых слов signed или unsigned. Таким образом, различают следующие типы: signed short int, unsigned short int, signed long int, unsigned long int.

Переменная типа signed short int (знаковая короткая целая) может принимать значения от -32768 до +32767, unsigned short int (беззнаковая короткая целая) - от 0 до 65535. Под каждую из них отводится ровно по два байта памяти (16 бит).

При объявлении переменной типа signed short int ключевые слова signed и short могут быть пропущены, и такой тип переменной может быть объявлен просто int. Допускается и объявление этого типа одним ключевым словом short.

Переменная unsigned short int может быть объявлена как unsigned int или unsigned short.

Под каждую величину signed long int или unsigned long int отводится 4 байта памяти (32 бита). Значения переменных этого типа могут находиться в интервалах от -2147483648 до 2147483647 и от 0 до 4294967295 соответственно.

Существуют также переменные типа long long int, для которых отводится 8 байт памяти (64 бита). Они также могут быть знаковыми и беззнаковыми. Для знакового типа диапазон значений лежит в пределах от -9223372036854775808 до 9223372036854775807, для беззнакового - от 0 до 18446744073709551615. Знаковый тип может быть объявлен и просто двумя ключевыми словами long long.


Тип Диапазон Шестнадцатиричный диапазон Размер
unsigned char 0 ... 255 0x00 ... 0xFF 8 bit
signed char
или просто
char
-128 ... 127 -0x80 ... 0x7F 8 bit
unsigned short int
или просто
unsigned int или unsigned short
0 ... 65535 0x0000 ... 0xFFFF 16 bit
signed short int или signed int
или просто
short или int
-32768 ... 32767 0x8000 ... 0x7FFF 16 bit
unsigned long int
или просто
unsigned long
0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 bit
signed long
или просто
long
-2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 bit
unsigned long long 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFF 64 bit
signed long long
или просто
long long
-9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFF 64 bit



Объявление переменных


Переменные объявляют в операторе описания. Оператор описания состоит из спецификации типа и списка имён переменных, разделённых запятой. В конце обязательно должна стоять точка с запятой.

Объявление переменной имеет следующий формат:

[модификаторы]  спецификатор_типа  идентификатор  [, идентификатор] ...


Модификаторы - ключевые слова signed, unsigned, short, long.
Спецификатор типа - ключевое слово char или int, определяющее тип объявляемой переменной.
Идентификатор - имя переменной.


Пример:
   char x;
   int a, b, c;
   unsigned long long y;

Таким образом, будут объявлены переменные x, a, b, c, y. В переменную x можно будет записывать значения от -128 до 127. В переменные a, b, c - от -32768 до +32767. В переменную y - от 0 до 18446744073709551615.

Инициализация значения переменной при объявлении

При объявлении переменную можно проинициализировать, то есть присвоить ей начальное значение. Сделать это можно следующим образом.
   int x = 100;
Таким образом, в переменную x при объявлении сразу же будет записано число 100.

Лучше избегать смешивания инициализируемых переменных в одном операторе описания, то есть инициализируемые переменные лучше объявлять в отдельных строках.


Константы


Переменная любого типа может быть объявлена как немодифицируемая. Это достигается добавлением ключевого слова const к спецификатору типа. Переменные с типом const представляют собой данные, используемые только для чтения, то есть этой переменной не может быть присвоено новое значение. Если после слова const отсутствует спецификатор типа, то константы рассматриваются как величины со знаком, и им присваивается тип int или long int в соответствии со значением константы: если константа меньше 32768, то ей присваивается тип int, в противном случае long int.

Пример:
   const long int k = 25;
   const m = -50; // подразумевается const int m=-50
   const n = 100000; // подразумевается const long int n=100000


Присваивание


Для присваивания в Си служит знак "=". Выражение, стоящее справа от знака присваивания, вычисляется, и полученное значение присваивается переменной, стоящей слева от знака присваивания. При этом предыдущее значение, хранящееся в переменной, стирается и заменяется на новое.

Оператор "=" не следует понимать как равенство.
Например, выражение a = 5; следует читать как "присвоить переменной a значение 5".

Примеры:
   x = 5 + 3; // сложить значения 5 и 3, 
              // результат присвоить переменной x (записать в переменную x)

   b = a + 4; // прибавить 4 к значению, хранящемуся в переменной a, 
              // полученный результат присвоить переменной b (записать в переменную b)

   b = b + 2; // прибавить 2 к значению, хранящемуся в переменной b, 
              // полученный результат присвоить переменной b (записать в переменную b)

В правой части значение переменной может использоваться несколько раз:
   c = b * b + 3 * b;


Арифметические операции


Арифметические операции записываются в выражениях следующим образом:

+ плюс
- минус
* умножить
/ разделить


Пример:
   x = 3;     // переменной x будет присвоено значение 3

   y = x + 5; // к значению, хранящемуся в переменной x, будет прибавлено число 5,
   	      // полученный результат будет записан в переменную y

   z = x * y; // значения переменных x и y будут перемножены,
   	      // результат будет записан в переменную z

   z = z - 1; // от значения, хранящегося в переменной z, будет отнято 1
   	      // результат будет записан в переменную z

Таким образом, в переменной z будет храниться число 23


Дополнительные способы присваивания


Кроме простого оператора присваивания "=", в Си существует еще несколько комбинированных операторов присваивания: "+=", "-=", "*=<", "/=", "%=".

Примеры:
   x += y; // то же, что и x = x + y; - сложить x и y 
           // и записать результат в переменную x

   x -= y; // то же, что и x = x - y; - отнять от x значение y 
           // и записать результат в переменную x

   x *= y; // то же, что и x = x * y; - умножить x на y 
           // и записать результат в переменную x

   x /= y; // то же, что и x = x / y; - разделить x на y 
           // и записать результат в переменную x

   x %= y; // то же, что и x = x % y; 
           // вычислить целочисленный остаток от деления x на y
           // и записать результат в переменную x


Инкремент и декремент


Если необходимо изменить значение переменной на 1, то используют инкремент или декремент.

Инкремент - операция увеличения значения, хранящегося в переменной, на 1.

Пример:
   x++; // значение переменной x будет увеличено на 1

Декремент - операция уменьшения значения, хранящегося в переменной, на 1.

Пример:
   x--; // значение переменной x будет уменьшено на 1

Инкремент и декремент относятся к операциям присваивания. При использовании декремента и инкремента совместно с оператором присваивания "=" применяют постфиксную (x++) или префиксную (++x) запись. Первой выполняется префиксная запись.

Примеры:
   y = x++;

Предположим, что в переменной x хранилось значение 5. Тогда в y будет записано значение 5, после чего значение переменной x будет увеличено на 1. Таким образом, в y будет 5, а в x - 6.
   y = --x;

Если в x хранилось значение 5, то сначала будет выполнено уменьшение x до 4, а затем это значение будет присвоено переменной y. Таким образом, x и y будет присвоено значение 4.





myROBOT.ru Это оригинальная статья myROBOT.ru
Постоянный адрес статьи: http://myrobot.ru/stepbystep/pr_variables.php








Статьи раздела
ПРОГРАММИРОВАНИЕ

Все статьи курса
Язык программирования C (Си): введение.

Переменные и константы. Присваивание.

Управление портами микроконтроллера AVR.

Циклы в языке Си. Формирование задержки.






Copyright © myrobot.ru, 2005-2013


OpenHosting