Слайд 1Переменные и типы данных в С++
Слайд 2Как и во многих языках программирования, в C++ для хранения
данных используются переменные. Переменная имеет тип, имя и значение. Тип определяет,
какую информацию может хранить переменная.
Слайд 3Переменная — поименованная, либо адресуемая иным способом область памяти, адрес которой
можно использовать для осуществления доступа к данным и изменять значение
в ходе выполнения программы.
Слайд 4Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит
следующим образом:
;
Слайд 5Пример объявления переменных
int a; // объявление переменной a целого типа.
float b; // объявление переменной b типа данных с плавающей
запятой.
double c = 14.2; // инициализация переменной типа double.
char d = 's'; // инициализация переменной типа char.
bool k = true; // инициализация логической переменной k.
Слайд 6В языке C++ есть две похожие концепции, которые новички часто
путают: присваивание и инициализация.
Слайд 7int a; // это объявление переменной
a = 8; // а
это присваивание переменной a значения 8
Слайд 8int a = 8; // инициализируем переменную a значением 8
Слайд 9Правило: Если у вас изначально имеется значение для переменной, то
используйте инициализацию, вместо присваивания.
Слайд 10В отличие от других языков программирования, языки Cи и C++
не инициализируют переменные определенными значениями (например, нулем) по умолчанию. Поэтому,
при создании переменной, ей присваивается ячейка в памяти, в которой уже может находиться какой-нибудь мусор! Переменная без значения (со стороны программиста или пользователя) называется неинициализированной переменной.
Использование неинициализированных переменных может привести к ошибкам
Слайд 11Важные моменты:
Переменная должна бывать объявлена до обращения к себе, буквально находиться выше по
коду. Иначе вы получите ошибку “переменная не объявлена” – Not declared
in this scope
Глобальные переменные при объявлении имеют значение 0 по умолчанию (если не инициализировать)
Локальные переменные (создаваемые внутри функций в процессе работы программы) при объявлении могут иметь случайное значение, т.к. выделяются из динамической памяти. Крайне рекомендуется их инициализировать, если в дальнейшем коде они используются как нулевое значение (пример ниже)
Слайд 13Константы
Если значение переменной не будет изменяться в процессе выполнения программы
– рекомендуется объявить её как константу, это позволит компилятору лучше
оптимизировать код и в большинстве случаев он будет чуточку легче и
Слайд 14Задать константы можно:
Точно так же как переменную, указав перед типом
данных слово const.
const byte myConst = 10; // объявить константу типа
byte
Слайд 15Задать константы можно:
При помощи директивы препроцессору #define, которая делает следующее: на
этапе компиляции кода препроцессор заменяет указанные все последовательности символов в текущем
документе (напомню, что вкладки Arduino IDE являются одним документом) на соответствующие им значения. Константа, определённая при помощи #define не занимает места в оперативной памяти, а хранится как код программы во Flash памяти, это самый большой плюс данного способа. Синтаксис: #define имя значение
Точка запятой не ставится. Таким способом обычно указывают пины подключения, настройки, различные величины и всё такое. Пример:
#define BTN_PIN 10
#define DEFAULT_VALUE 3423
Слайд 16Область видимости
Переменные, константы и другие типы данных (структуры и перечисления)
имеют такое важное понятие, как область видимости. Она бывает
Глобальной
Локальной
Формальной (параметр)
Слайд 17Глобальная переменная объявляется вне функций и доступна для чтения и записи в
любом месте программы, в любой её функции.
byte var;
void setup() {
//
спокойно меняем глобальную переменную
var = 50;
}
void loop() {
// спокойно меняем глобальную переменную
var = 70;
}
Слайд 18Локальная переменная живёт внутри функции или внутри любого блока кода, заключённого в {
фигурные скобки }, доступна для чтения и записи только внутри
него. При попытке обратиться к локальной переменной из другой функции (за пределами её { блока } ) вы получите ошибку, потому что локальная переменная создаётся заново при выполнении содержащего её блока кода (или функции) и удаляется из памяти при завершении выполнения этого блока (или функции).
Слайд 19Формальная переменная, она же параметр, передаваемый в функцию, ведёт себя
как обыкновенная локальная переменная, но появляется при немного других условиях:
при вызове функции. Эту переменную можно читать и менять внутри её функции.