Для хранения различных данных в языках программирования используют переменные. Переменной называется область памяти, имеющая имя, которое иначе называют идентификатором.
Давая переменной имя, программист одновременно тем же именем называет и область памяти, куда будут записываться значения переменной для хранения.
Хорошим стилем является осмысленное именование переменных. Разрешается использовать строчные и прописные буквы, цифры и символ подчёркивания, который в Си считается буквой. Первым символом обязательно должна быть буква, в имени переменной не должно быть пробелов. В современных версиях компиляторов длина имени практически не ограничена.
Имя переменной не может совпадать с зарезервированными ключевыми словами. Заглавные и строчные буквы в именах переменных различаются, переменные a и A — разные переменные.
Зарезервированные ключевые слова auto double int struct break else long switch register tupedef char extern return void case float unsigned default for signed union do if sizeof volatile continue enum short while
В языке Си все переменные должны быть объявлены. Это означает, что, во-первых, в начале каждой программы или функции Вы должны привести список всех используемых переменных, а во-вторых, указать тип каждой из них.
Переменная величина
При объявлении переменной компилятор отводит ей место в памяти в зависимости от её типа. Стандартными средствами AVR GCC работает с типами данных char (символьный тип) и int (целочисленный тип).
Типы переменных |
char — является самым экономным типом. Тип char может быть знаковым и беззнаковым. Обозначается, соответственно, как » signed char » (знаковый тип) и » unsigned char » (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый — от 0 до 255.
Под переменную типа char отводится 1 байт памяти (8 бит).
Ключевые слова (модификаторы) signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый.
Целочисленная величина 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 .
УРОК 7-8. Строковые величины (9 класс)
Переменная 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″.
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
Инкремент и декремент относятся к операциям присваивания. При использовании декремента и инкремента совместно с оператором присваивания » COLOR: #0807a2; FONT-FAMILY: courier new, courier, courier cyr, monospace, sans-serif, arial; FONT-SIZE: 14px; OVERFLOW: auto; PADDING-LEFT: 6px; PADDING-RIGHT: 6px; PADDING-TOP: 12px;»> y = x++;
Предположим, что в переменной x хранилось значение 5. Тогда в y будет записано значение 5, после чего значение переменной x будет увеличено на 1. Таким образом, в y будет 5, а в x — 6.
y = —x;
Если в x хранилось значение 5, то сначала будет выполнено уменьшение x до 4, а затем это значение будет присвоено переменной y . Таким образом, x и y будет присвоено значение 4.
Это оригинальная статья myROBOT.ru Постоянный адрес статьи: http://myrobot.ru/stepbystep/pr_variables.php |
Статьи раздела
ПРОГРАММИРОВАНИЕ
Источник: myrobot.ru
Линейные программы
Линейной называется программа, все операторы которой выполняются последовательно, в том порядке, в котором они записаны. Это самый простой вид программ.
Переменные
Переменная – это величина, которая во время работы программы может изменять свое значение. Все переменные, используемые в программе, должны быть описаны в разделе описания переменных, начинающемся со служебного слова var.
Для каждой переменной задается ее имя и тип, например:
var number : integer; х, у: real;
Имя переменной определяет место в памяти, по которому находится значение переменной. Имя дает программист. Оно должно отражать смысл хранимой величины и быть легко распознаваемым.
Тип переменных выбирается исходя из диапазона и требуемой точности представления данных.
При объявлении можно присвоить переменной некоторое начальное значение, т.е. инициализировать ее. Под инициализацией понимается задание значения, выполняемое до начала работы программы. Инициализированные переменные описываются после ключевого слова const:
number : integer = 100; x: real = 0.02;
option : char = ‘ю’;
По умолчанию все переменные, описанные в главной программе, обнуляются.
Выражения
Выражение – это правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы, переменные и вызовы функций. Операции выполняются в определенном порядке в соответствии с приоритетами, как и в математике. Для изменения порядка выполнения операций используются круглые скобки, уровень их вложенности практически не ограничен.
Результатом выражения всегда является значение определенного типа, который определяется типами операндов. Величины, участвующие в выражении, должны быть совместимых типов.
Далее приведены операции ПАСКАЛЯ, упорядоченные по убыванию приоритетов.
Источник: studme.org
Компьютерная грамотность с Надеждой
Заполняем пробелы — расширяем горизонты!
Что такое переменная в программировании и чем она отличается от константы
Прежде чем переходить к вопросу о том, что такое переменная в программировании, попробуем разобраться, почему понадобились и константы, и переменные. Алгебра от арифметики существенно отличается тем, что в арифметике мы имеем дело только с числами, а в алгебре вводится понятие переменной величины.
Согласитесь, что выражение
2 + 3 = 5
достаточно серьезно отличается от выражения:
a + b = c
В чем отличие? Не только в том, что в алгебре вместо цифр применяются буквы латинского алфавита, но отличие и в уровне абстракции.
Численные выражения, хоть что с ними делай, дают в итоге только численный результат.
А вот абстрактные буквенные выражения превращаются в формулы, законы и следствия и, двигаясь дальше за пределы алгебры, в леммы, в теоремы, и, вообще, ведут к дифференциальному и интегральному исчислению, к математическому анализу и прочему. Правда, в матанализе (в математическом анализе) уже не хватает латинских букв, в ход идут греческие, всякие «дельты», «сигмы» и прочее. Но это уже не столько от нехватки букв, сколько от постоянного роста уровня абстракции, которая (абстракция) требует новых выразительных средств.
Почему так? Потому что определенный, пусть даже небольшой дополнительный уровень абстракции позволяет мыслить иначе, делать иначе, изучать иначе, и показывать иные результаты, чем при меньшем уровне абстракции.
Так же и в компьютерной грамотности. Можно говорить сначала о самом низком уровне абстракции, например, об арифметике в программировании.
Калькуляторы дружат с константами
Например, возьмем калькулятор. Что он может делать? Достаточно много: выполнять ряд арифметических и даже более сложных действий.
- Вводим на калькуляторе первое число, например, «2»,
- нажимаем на знак «плюс»,
- вводим второе число, скажем, «3» (см. рис. 1),
- и затем нажимаем знак «=».
Что получим? Очевидно, значение «5». Арифметика. Но с использованием компьютерной техники — калькулятора.
Рис. 1. Суммирование констант 2+3 на калькуляторе (Windows 7)
Не будем дальше углубляться в возможности калькуляторов. Например, можно было бы рассмотреть более сложные калькуляторы: для инженеров, для программистов, для обработки статистических данных и пр. (см. рис. 2).
Рис. 2. Некоторые виды калькуляторов, имеющихся в Windows 7
Но даже сложные калькуляторы так и останутся калькуляторами, то есть, будут делать арифметические операции той или иной степени сложности. Потому что это один уровень абстракции, самый низкий, на уровне чисел. Ничем другим, кроме как обработкой числовых выражений, калькуляторы заниматься не могут.
Программы дружат с переменными величинами
И если бы следующий, новый уровень абстракции не вошел в обиход в компьютерной грамотности, то тогда не появилось бы программирование в том виде, как оно существует в наше время. Программирование, которое позволяет делать программное обеспечение, что называется, на все случаи жизни, и с дружественным интерфейсом, то есть, удобным для последующего пользования.
Как это работает? Поясним несколько упрощенно, чтобы не требовалось глубокое погружение в сложную область программирования.
Для начала отметим, что в программировании все выражения пишут как бы наоборот по сравнению с тем, как их пишут в алгебре. Если в алгебре сначала указывают операнды (переменные), над которыми следует произвести действия, а потом после знака равенства указывают результат, как в примере
то в программировании делают все наоборот: сначала указывают результат, а потом действие, то есть:
Здесь не случайно я пишу строчные (заглавные) буквы вместо прописных (маленьких) букв:
во-первых, чтобы отличить алгебру от программирования, а
во-вторых, потому что первоначально в нашей стране в программировании использовали в основном заглавные буквы латинского алфавита.
Так как вместо прописных букв латиницы у нас делали строчную кириллицу, иначе где еще взять коды для русских букв?! Это связано с тем, что многие трансляторы с языков программирования у нас в стране лишь адаптировали с западных аналогов, а не разрабатывали с нуля. А там, откуда все это копировалось, русского языка не было по понятным причинам. Хотя были и примеры наших «родных» языков программирования.
И пишу я компьютерные выражения не посредине строки, как это принято в алгебре, а пишу в начале строки так, как это принято в программировании. Это уже вопросы синтаксиса языков программирования, правил написания выражения этих языков. В алгебре одни правила, в программировании – другие, хотя буквы и там, и там могут быть одинаковые.
Почему стали в программировании писать наоборот, а именно стали писать C = A + B? Трудно сказать. Так сложилось, что сначала надо было указывать результат, и лишь потом действие.
Что же дает подобное «волшебное» выражение с буквами вместо цифр для программирования? Казалось бы, в чем разница между константами и переменными:
5 = 2 + 3 (напишем наоборот лишь для сравнения) и
Давайте разберемся. Что может быть результатом сложения 2+3? Большинство ответит, конечно, «5». И хоть это почти правильный ответ, пожалуй, мы с этим согласимся.
Почему почти? Да потому что это правильный ответ для десятичной системы исчисления. Для четверичной системы исчисления, в которой используются только цифры от 0 до 3, ответ был бы «11», да-да, именно одиннадцать, можете не сомневаться. А в пятеричной системе исчисления, где добавляется еще цифра 4, ответ был бы «10».
Но в любом случае, о какой бы системе исчисления мы не говорили, результатом 2+3 всегда будет одно и то же число (константа). В десятичной системе (вернемся к ней теперь надолго), это «5», и только «пять».
А сколько будет A + B? Ответ очевиден: все зависит от того, чему равны A и B. Значит, результатом 2+3 всегда будет 5, а результатом A+B будут разные значения в зависимости от величин A и B.
Достаточно очевидно. Ну и что, что 5 – константа, а тут переменная? А то, что переменные – это другой уровень абстракции. За счет A+B мы теперь можем получать множество разных значений.
Как могут использоваться выражения с переменными величинами
Допустим, A – это вес одного товара, а B – это вес другого товара. Значит, A+B – это суммарный вес обоих товаров. Значит, используя выражение C=A+B, программист может запрограммировать автоматическое суммирование двух весов.
Как он это сделает?
- Например, сначала программист попросит ввести с клавиатуры вес первого товара (не описываю, как это можно сделать в языке программирования, поверим, что так можно сделать), и присваивает введенное значение переменной с именем A.
- Затем он проделывает то же самое с весом второго товара, и присваивает это уже переменной B.
- А потом пишет в своей программе теперь уже понятное нам выражение:
Что получается в итоге? Конечно, вы сразу догадались, что переменной C будет присвоено значение суммы весов, сохраненных в переменных A и B.
И далее программист напишет в своей программе (тоже прошу поверить, что это можно сделать средствами языка программирования): вывести на экране дисплея значение переменной C. Что мы увидим на экране? Конечно, сумму весов первого и второго товаров!
И теперь эту, один раз написанную программу, можно использовать снова, но уже для суммирования следующей пары весов.
Если еще убрать ручной ввод веса товара, и сразу автоматически ввести вес, скажем, с электронных весов (которые сейчас широко применяются в тех же супермаркетах), то на экран дисплея будет автоматически выводиться сумма весов 2-х товаров: положил одни товар, затем положил второй, и видишь сразу результат.
А если пойти дальше, и не выводить на экран сумму весов 2-х товаров, а записать это куда-то в базу данных?! А если не ограничиваться 2-я товарами, а, скажем, говорить о миллионе разных видов товаров, подлежащих взвешиванию? Почему бы и нет! Все это можно описать в виде выражений, подобных C = A + B.
И в итоге мы получим, можно без стеснения сказать, серьезную автоматизированную систему для супермаркета, где учитываются и веса всех товаров, и количество, и стоимость, а также все покупки, сделанные покупателями и прочее, и прочее и прочее. Но это стало возможным, когда появилось программирование с использованием переменных величин, тех самых A, B, C и тому подобное! Без этого уровня абстракции, без переменных не было бы программирования.
Переменные и константы – вместе навсегда
Справедливости ради, надо сказать, что цифры (простые и не очень простые числа) остались в программировании. Они тоже нужны. Их назвали иностранным словом «константы».
Константы – это величины, которые никогда и ни при каких обстоятельствах не меняют свои значения.
А что такое переменная в программировании?
Переменные, в отличие от констант, то и дело меняют свои значения, постоянно их меняют, оттого они и называются переменными величинами.
Так что наряду с выражением C = A + B, в программировании возможно как выражение C = A + 3, так и C = 2 + B.
Однако в левой части программного выражения (до знака равенства «=») константа не может употребляться. Там может быть только переменная, поскольку значение выражения, которое присваивается переменной в левой части выражения, может меняться в зависимости от значений переменных в правой части выражения. А значит, слева может быть только переменная величина.
Благодаря латинским буквам, которые используются вместо цифр, арифметика превратилась в алгебру. Так и программирование от калькуляторов перешло к вычислительным машинам благодаря переменным величинам.
Чего стоило разработчикам языков программирования реализовать возможности для применения переменных величин? Это уже отдельная тема. Одно могу сказать, стоило дорого, само собой, не только в деньгах. Дорого в расходовании (применении) интеллекта для изобретения подобных вещей.
Другой уровень абстракции требует принципиально иных решений, новой конфигурации «железа», новых команд для нового «железа». Но это уже, что называется, другая история…
Источник: www.compgramotnost.ru