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

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

Перед использованием переменной её необходимо создать. В программировании создание переменной называется "объявлением переменной".
Для этого нужно указать тип данных, которые будут храниться в нашей переменной и её имя.
О типах данных мы поговорим в отдельном уроке. Здесь, в качестве примера мы будем использовать тип intinteger» - целое число).
Имена переменных должны начинаться с буквы английского алфавита или символа подчеркивания. Последующим символом может быть буква, цифра или символ подчеркивания. Символ подчеркивания можно использовать для улучшения читабельности имени переменной, например, chislo_strok.
Пример:
int a;
Это стейтмент объявления переменной с типом int и именем а.
Справка:
Cтейтмент (англ. «statement») — это инструкция, наименьшая независимая единица в языке С++. Стейтмент в программировании — это то же самое, что и «предложение» в русском языке. Мы пишем предложения, чтобы выразить какую-то идею. В программировании мы пишем стейтменты, чтобы выполнить какую-то задачу.
ВАЖНО Все стейтменты в C++ заканчиваются точкой с запятой.
При выполнении этой инструкции часть оперативной памяти будет выделена под эту переменную. Предположим, что переменной a присваивается ячейка памяти под номером 150. Когда программа видит переменную a в выражении или в стейтменте, то она понимает, что для того, чтобы получить значение этой переменной, нужно заглянуть в ячейку памяти под номером 150.
Так переменные и работают.
После того, как мы создали нашу переменную, мы можем её использовать:
a = 5;
Это стейтмент присвоения. Мы поместили значение 5 в переменную a.
Когда программа выполняет эту инструкцию, она понимает её как «поместить значение 5 в ячейку памяти под номером 150».

l-values и r-values

В языке C++ все переменные являются l-values.
l-value — это значение, которое имеет свой собственный адрес в памяти. Поскольку все переменные имеют адреса, то они все являются l-values (например, переменные a, b, c — все они являются l-values). l от слова «left», так как только значения l-values могут находиться в левой стороне в операциях присваивания (в противном случае, мы получим ошибку). Например, стейтмент 9 = 10; вызовет ошибку, так как 9 не является l-value. Число 9 не имеет своего адреса в памяти и, таким образом, мы ничего не можем ему присвоить (9 = 9 и ничего здесь не изменить).
Противоположностью l-value является r-value.
r-value — это значение, которое не имеет постоянного адреса в памяти. Примерами могут быть единичные числа (например, 7, которое имеет значение 7) или выражения (например, 3 + х, которое имеет значение х плюс 3).
Справка:
Выражение (англ. «expression») — это математический объект, который создается (составляется) для проведения вычислений и нахождения соответствующего результата. Например, в математике выражение 2 + 3 имеет значение 5. Выражения в языке С++ могут содержать:
  • отдельные цифры и числа (например, 2, 45);
  • буквенные переменные (например, х, у);
  • операторы, в т.ч. математические (например, +, -);
  • функции.
Выражения могут состоять как из единичных символов — цифр или букв (например, 2 или х), так и из различных комбинаций этих символов с операторами (например, 2 + 3, 2 + х, х + у или (2 + х) * (y - 3)).
Вот несколько примеров операций присваивания с использованием r-values:
int a;      // объявляем целочисленную переменную a
a = 2;      // 2 имеет значение 2, которое затем присваивается переменной а
a = 3 + 5;  // 3 + 5 имеет значение 8, которое затем присваивается переменной а
 
int b;      // объявляем целочисленную переменную b
b = a;      // a имеет значение 8 (исходя из предыдущих операций), которое затем присваивается переменной b
b = b;      // b имеет значение 8, которое затем присваивается переменной b (ничего не происходит)
b = b + 2;  // b + 2 имеет значение 10, которое затем присваивается переменной b
Справка:
Всё, что идёт после символов // - является комментарием.
Комментарий — это строка (или несколько строк) текста, которая вставляется в исходный код для объяснения того, что делает код. В языке C++ есть 2 типа комментариев: однострочные и многострочные.
Однострочные комментарии — это то, что вы видите в блоке кода выше. Они пишутся в отдельных строках после символов // и всё, что находится после этих символов комментирования, — игнорируется программой.
Как правило, однострочные комментарии используются для объяснения одной строчки кода.
Многострочные комментарии пишутся между символами /* */. Всё, что находится между звёздочками, — игнорируется:
/*
начиная отсюда
всё написанное
будет игнорироваться
аж досюда
*/
Давайте детально рассмотрим последнюю операцию присвоения:
b = b + 2;
Здесь переменная b используется в двух различных контекстах. Слева b используется как l-value (переменная с адресом в памяти), а справа b используется как r-value и имеет отдельное значение (в данном случае, 10). При выполнении этого стейтмента, программа видит следующее:
b = 8 + 2;
И здесь уже понятно, какое значение присваивается переменной b.
Сильно беспокоиться о l-values или r-values сейчас не нужно, так как мы еще вернемся к этой теме на следующих уроках. Всё, что вам нужно сейчас запомнить — это то, что в левой стороне операции присваивания всегда должно находиться l-value (которое имеет свой собственный адрес в памяти), а в правой стороне операции присваивания — r-value (которое имеет какое-то значение).

Инициализация и Присвоение

В языке C++ есть две похожие концепции, которые новички часто путают: присвоение и инициализация.
После объявления переменной, ей можно присвоить значение с помощью оператора присваивания (знак равенства =), как мы это уже делали ранее:
int b;  // это объявление переменной
b = 4;  // а это присваивание переменной b значения 4
А можно объявить переменную и присвоить ей значение одновременно. Это называется инициализацией (или «определением»):
int b = 4;  // инициализируем переменную b значением 4
В отличие от других языков программирования, языки C и C++ не инициализируют переменные определенными значениями (например, нулем) по умолчанию. Поэтому, при создании переменной, ей присваивается ячейка в памяти, в которой уже может находиться какой-нибудь мусор. Переменная без значения (со стороны программиста или пользователя) называется неинициализированной переменной.
Использование неинициализированных переменных может привести к ошибкам. Например:
int a;  // объявляем целочисленную переменную a
int b;  // объявляем целочисленную переменную b

b = a + 2;  // присваиваем переменной b значение a+2
Вы ожидаете, что в переменной b окажется значение 2, потому что в переменной a ничего нету, а при сложении 0 + 2 должно получиться 2.
Но на самом деле, в переменной a нету ноля. Там может быть что угодно, например 344512.
Почему так?
Вы объявили переменную. Компилятор присваивает переменной какую-то ячейку в памяти, которая в данный момент свободна (не используется). Затем вы используете значение, которое находится в этой переменной (то есть в ячейке памяти, на которую эта переменная ссылается). А какие данные лежат по этому адресу, если вы ещё ничего не поместили в переменную? Никто не знает. Там могут быть абсолютно любые данные, которые остались от выполнения других операций.
Если бы мы писали свою самостоятельную программу на C++, скорее всего, компилятор выдал бы ошибку, что мы пытаемся использовать неинициализированную переменную. Но мы редактириуем файлы скриптов Корсаров, которые обрабатываются движком игры и никакого компилятора у нас нет. Отлов ошибок здесь - вообще больная тема, но об этом в отдельном уроке.
Использование неинициализированных переменных является одной из самых распространенных ошибок начинающих программистов.
ПРАВИЛО Убедитесь, что все ваши переменные в программе имеют значения (либо через инициализацию, либо через операцию присвоения). Если у вас изначально имеются данные для переменной - используйте их, если нет - используйте нулевые значения.

Константы

Константа — это специальная переменная, значение которой устанавливается при ее объявлении и не может быть изменено в последующем ходе выполнения программы.
Такие переменные нужны для хранения постоянных данных, например, тех же математических констант, как число Пи. Они предотвращают случайное изменение данных, которые в такой переменной находятся.
Но ОСОБЕННОСТЬ скриптовой части такова, что никаких специальных переменных здесь нет - ни константных, ни статических, никаких. Вместо этого программисты Акеллы используют директиву #define.
Подробно мы об этом поговорим в уроке, посвященном директивам.
Этот комментарий удален
30
Примерами могут быть единичные числа (например, 7, которое имеет значение 7) или выражения (например, 3 + х, которое имеет значение х плюс 3).
Чисто технически, 7 это тоже expression, значением которого является 7.
30
Тоде пытался описывать JASS. Но потом натолкнулся на Writerside и жизнь заиграла новыми красками. Во пример.
30
Выражения на отдельную статью тянут. Ибо опущена такая важная вещь как операторы.
23
Вышла новая версия! Прокрутить к ресурсу
Добавлен раздел, описывающий константы.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.