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

«IT-специалист с нуля» наш лучший курс для старта в IT
Как работают переменные
В процессе исполнения компьютерная программа постоянно обращается к каким-либо данным, которые хранятся в ячейках памяти. То есть работающее приложение должно «знать», какие именно данные ему сейчас нужны для работы, а также — где они находятся. На ранних этапах развития компьютерной техники программисты писали программы на машинном языке, в котором для обращения к конкретным данным использовались регистры. Но на таком языке человек может писать только очень простой код. При создании более сложных программ использовать этот способ стало очень сложно.
С появлением ассемблеров задача обращения к данным существенно упростилась за счет более понятного человеку синтаксиса и логики. Теперь не нужно вручную прописывать регистры — вместо них стали использоваться переменные, которым программист просто присваивает те или иные данные (значения).
Понятие переменной в программировании в целом напоминает одноименный аналог из математики. В алгебре это абстрактное буквенное выражение, которое имеет определенный интервал конкретных значений (как правило, числовых). Переменные позволяют записывать различные математические операции в общем виде. Затем, заменяя их на конкретные значения из допустимого интервала, можно получить необходимые значения.
Аналогично работают переменные и в информатике, с той лишь разницей, что это не только логическая абстракция, вместо которой можно подставить конкретные значения, но и вполне конкретная область виртуальной/реальной памяти, куда обращается программа за нужными ей для работы данными.
Таким образом, переменные характеризуются следующими атрибутами:
- именем или адресом, обозначающим конкретную ячейку памяти, в которой хранятся необходимые для работы приложения данные;
- значением, то есть конкретными данными, которые содержатся в проименованной ячейке памяти;
- типом, который определяет характер значений, принимаемых переменной, виды операций с ними и их представление в памяти компьютера.
В программировании переменные используются для работы с динамическими (изменяющимися) данными. Например, если в компьютерной игре есть два перемещающихся персонажа, то им необходимо задать скорость движения. Можно сделать это вручную для каждого из них, однако каждое изменение скорости придется прописывать заново, что не очень удобно. Гораздо проще сделать это с помощью переменных — задав определенный интервал их значений. В этом случае изменять скорость персонажей можно, просто подставив нужные данные.
В императивных языках программирования также существует понятие константы — это тоже ячейка памяти, но содержащая только одно неизменяемое значение. Ее можно задать заранее, при этом указав ее имя, к которому может обращаться программа, или указать непосредственно в коде как непосредственное значение.
Профессия / 8 месяцев
IT-специалист с нуля
Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

Типы переменных
Компьютерные программы работают с разнообразными данными — числами, словами (символами), структурами (массивами, деревьями) и т. д. Соответственно, приложение должно уметь их различать, а также понимать, где они хранятся и в какой момент их необходимо задействовать. Поэтому в программировании используются следующие виды переменных:
- Статическая. В этом случае тип данных переменной определяется на этапе компиляции программы — то есть заранее задается программистом. Это позволяет в большинстве случаев сократить расходы ресурсов компьютера. Кроме того, статическая типизация переменных упрощает обнаружение ошибок, что снижает время разработки и повышает надежность программы. В то же время она делает программный код менее гибким, так как любые изменения в типе данных программисту придется указывать вручную.
- Динамическая. При такой типизации тип переменной определяется на этапе присвоения значения (то есть исполнения программы), а не его объявления. Благодаря этому в различных участках программного кода одна и та же переменная может принимать значения разных типов. Динамическая типизация делает программу более гибкой, позволяет ей лучше взаимодействовать с изменяющимся окружением, упрощает ее переход на новый формат данных. В то же время повышается вероятность ошибок, увеличивается расход ресурсов платформы при исполнении.

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить
Для каждой переменной устанавливается своя область видимости — часть программы, в пределах которой ее идентификатор (имя) остается с ней связанным, то есть позволяет через себя обратиться к ее значению. В зависимости от этого переменные могут быть:
- локальными — задействуются только конкретной подпрограммой (фрагментом кода);
- глобальными — используются всей программой.
Чтобы упорядочить использование переменных в программировании и исключить возникновение ошибок, применяется ограничение их зоны видимости. Благодаря этому программист может использовать одни и те же идентификаторы для похожих переменных в различных фрагментах программного кода.
В различных языках программирования в переменные можно «складывать» данные различных типов, например:
- целые числа с отрицательным или положительным знаком — например, 0, 1, –1, 234, –234 и т. д.;
- числа с плавающей запятой — компьютерная форма записи дробных действительных чисел;
- логические выражения — например, часто встречающееся в программировании true/false;
- строки (символы) — последовательности букв, чисел, знаков препинания, пробелов и т. д. (используются для записи текстовых данных);
- списки — структуры данных, представляющих собой упорядоченные последовательности значений;
- диапазоны — перечень значений стандартного дискретного типа, например, 1…100;
- массивы — фиксированное и структурированное количество однотипных данных;
- записи — совокупность связанных данных различного типа;
- файлы — однотипные данные, сохраненные на внешнем носителе информации.
В языках программирования со строгой (статической) типизацией тип переменных задается программистом заранее при их объявлении и не может быть изменен в дальнейшем. Более того, в этом случае в них нельзя добавить данные других типов. В частности в Java целочисленные переменные не могут содержать слова, строки или логические выражения. Напротив, в языках с динамической типизацией (например, Python) тип данных определяется программой автоматически при обращении к переменной, исходя из характера содержащихся в ней значений.
В зависимости от типа данных в переменной она может быть:
- Простой — используется для хранения данных, не имеющих структуры, таких как целые числа, символы, логические выражения true/false, отдельные значения из конечных множеств;
- Сложной — в такой переменной хранятся данные с внутренней структурой, наиболее показательными примерами которых являются массивы, деревья и записи.
Также в некоторых языках программирования предусмотрена возможность создания пустых переменных. Они имеют идентификатор (имя), но им не присвоено конкретных значений. Например, в JavaScript два типа таких переменных:
- Undefined (неопределенные). Это переменные, у которых не указан тип и значения. Иначе говоря, компьютер просто знает, что она есть, но не понимает, что в ней находится, какой объем памяти под нее выделить и как с ней потом работать. Чаще всего неопределенные переменные используются для отладки кода, определения данных, поступающих в программу, и поиска ошибок.
- Null (пустые). Такие переменные имеют определенный тип, но им не заданы конкретные значения. При этом компьютер понимает, какие данные в них положить, сколько им нужно памяти и как потом с ними работать. В отличие от undefined, null является конкретным значением переменной, означающим отсутствие данных.
От этих двух типов следует отличать переменную 0 (ноль), которая содержит конкретное целочисленное значение.
Использование переменных
Для работы с переменными необходимо их предварительно объявить. В различных языках программирования это происходит с некоторыми отличиями, но в целом используется похожий шаблон:
- Сначала ставится ключевое слово или знак, обозначающий новую переменную (например, var от английского «variation» или $);
- Далее указывается имя переменной. Как правило, оно записывается латинскими буквами и кратко описывает, какие данные будут использоваться (например, для переменной, содержащей имя человека, можно использовать слово name).
- После имени переменной указывается тип содержащихся в ней данных. Например, для каких-либо слов, имен, фраз это будет указатель string или char.
В некоторых языках порядок этих элементов в структуре объявления переменной может быть другим. Например, в ранних версиях Java отсутствовало ключевое слово var, которое указывает на создание новой переменной. Но в целом логика этого процесса везде примерно одинакова: нужно указать имя переменной и тип сохраняемых в ней данных.
На этом этапе заканчивается непосредственно объявление переменной. Но чтобы программа могла ее использовать, ей нужно присвоить определенное значение. Эта операция называется «присваиванием» и выражается с помощью математического символа «=», который называется оператором присваивания. После него указывается конкретное значение переменной, которое будет использоваться программой.

Хотя порядок объявления переменных может отличаться в зависимости от языка, существует несколько общих правил для корректного осуществления этой процедуры:
- Идентификаторы (имена) переменных могут содержать в себе буквы, цифры, знак нижнего подчеркивания, при этом оно обязательно не должно начинаться с цифры.
- Имя переменной лучше подбирать таким образом, чтобы было понятно, какие данные в ней сохраняются. Например, если это значения скорости персонажа в компьютерной игре, то подойдет идентификатор «speed».
- Следует избегать очень коротких (например, одно- или двухбуквенных) или слишком длинных имен переменных: первые неинформативны и затрудняют понимание, вторые делают код тяжеловесным и сложным для восприятия.
- Идентификаторы лучше писать английскими словами (например, price вместо stoimost), чтобы они были понятны другим людям, особенно при работе над иностранными или международными проектами.
- Первое слово в сложных именах рекомендуется записывать со строчной буквы, а каждое последующее — с заглавной (например, carsCount).
- Большинство современных языков программирования чувствительны к регистру имен переменных, что также необходимо учитывать при их написании.
В некоторых ЯП эти требования необязательны и просто рекомендуются как способы упростить написание и понимание кода. В других языках программирования они могут носить обязательный характер: несоблюдение правил их синтаксиса приводит к ошибкам и неисполнениям со стороны программы.
Переменные — одна из важнейших составляющих современного программирования, которая существенно упрощает написание кода, делает его более гибким и настраиваемым. В том или ином виде они встречаются в большинстве распространенных ЯП, поэтому понимание их структуры, принципа действия и правил написания являются основой создания правильно работающих приложений.
IT-специалист с нуля
Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.
#4 – Переменные и типы данных в Python

Переменные являются важной частью любого языка программирования. В ходе урока мы научимся создавать переменные и выполнять различные действия над ними. Помимо этого мы изучим типы данных что существуют в языке Python.
Видеоурок
Переменные невероятно важны, так как позволяют хранить информацию и использовать её в дальнейшем. Вначале может быть не совсем понятно зачем вообще что-то записывать в переменную, если можно просто оперировать значениями без них. Понимание переменных придет немного позже, когда мы начнем создавать более сложные программы и нам потребуется хранить информацию в каком-либо месте.
Типы переменных в языке Python не объявляются очевидно, тем не менее они присутствуют. Интерпретатор понимает что записывается в переменную и на основании этого добавляет тип к этой переменной.
Во время выполнения программы есть возможность перезаписывать переменные, а также менять их тип. Если вначале переменна была с типом float, то потом её можно преобразовать в другой тип, к примеру, в string.
first_num = 23.2 # Тип данных float first_num = "1" # Тип данных string
При объединение нескольких переменных с разными типами данных программа спровоцирует ошибку.
first_num = "IloveYou" second_num = 13 res = first_num + second_num # Скрипт выдаст ошибку
- some = 1 Integer — целые числа;
- some = 1.12 Float — числа с плавающей точкой;
- some = «Привет» String — строки;
- some = True Boolean — тип данных принимающий либо False, либо True.
В одной строке можно создать сразу несколько переменных:
first = sec = third = 1 # Всем трём переменным будет присвоено значение 1 first, sec, third = "Hi", 75, 23.1 # Поочередное присвоение значений
Переменные и работа с ними
number = 5 # int digit = -4.54356876 # float word = "Результат:" # string boolean = True # bool str_num = '5' # string # print(word + str(digit)) print(word + str(number + int(str_num))) del number number = 7 print("Результат:", number)
Посмотреть остальной код можно после подписки на проект!
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Какие бывают типы переменных
Синтаксис является основой любого языка программирования. Java не является исключением. Поэтому если ты собираешься в будущем стать разработчиком, необходимо начать с азов. В этой статье мы рассмотрим, какие переменные бывают в языке Java и каковы основные типы данных.
Что же такое переменная
Для того, чтобы тебе было проще понять, что такое переменная, вернемся к школьному курсу и вспомним простую формулу:
х+1 = y
Если мы подставим значение к «х», например, х = 1, то значение выражения будет равно «2». Соответственно, если х = 2, значение выражения будет «3» и так далее. Как видишь, все достаточно просто. «Х» в нашем случае переменная, куда мы помещаем любое значение. Подставляя его в формулу, мы получаем определенный результат.
В языке программирования переменная – это своего рода контейнер или ящичек, куда можно положить любое значение, чтобы оно там хранилось до определенного момента, пока это значение нам не потребуется для каких-то вычислений.
Какие типы переменных бывают в Java
В этом языке программирования выделяют четыре типа переменных:
-
Целочисленные. К этому типу относятся такие переменные, как byte, short, int, long.
Целочисленные
Уже из названия понятно, что в качестве значения таким переменным присваиваются целые числа. Например, это может быть 5, 10, 25, 100 и так далее. Причем они могут быть как положительными, так и отрицательными, в зависимости от потребности разработчика. А теперь рассмотрим подробнее каждый из видов переменных:
-
Byte – принимает значение от -128 до 127. Размер этой переменной – 1 байт памяти, что вполне логично исходя из названия.
Теперь нам нужно понять, какую именно переменную использовать. Здесь важно вспомнить, какое именно значение может принимать та или иная целочисленная переменная. Например, мы точно знаем, что количество апельсинов не будет выходить за пределы 127. В этом случае, можно смело объявлять byte.
Дальше, представим, что Вася, Катя и Аня выросли и стали заниматься поставками апельсинов. Теперь у каждого больше 1000 единиц этого вкусного фрукта. Объявлять byte мы больше не сможем. Если количество апельсинов не превышает 32767, мы можем работать с short, если больше с int и так далее.
Несмотря на то, что в Java представлено 4 целочисленных переменных, чаще всего будет использоваться только int. Более того этот тип в языке считается по умолчанию. А теперь посмотрим, как в Java объявляются переменные.
Приведем несколько примеров:
int oranges;
В языке Java, как и в любом другом переменные лучше называть выразительно. То есть так, чтобы можно было понять, что именно в ней лежит. Например, если мы просто назовем три переменные byte oranges, не будет понятно, что это за апельсины.
Если речь идет об апельсинах Васи, такую переменную можно было бы назвать int vasyaOranges (или orangesVasya). Заметили одну интересную особенность? Слово vasya мы почему-то написали с маленькой, а Oranges с большой. Такой прием называется CamelCase. Он применяется тогда, когда название переменной или функции состоит из двух и более слов. Применяется исключительно для удобства. Читать переменную vasyaOranges куда удобнее, чем vasyaoranges. А если в названии переменной еще больше слов, то без CamelCase придется туго.
Типы данных, переменные


Переменная – это ячейка в оперативной памяти микроконтроллера, которая имеет своё уникальное название (а также адрес в памяти) и хранит значение соответственно своему размеру. К переменной мы можем обратиться по её имени или адресу и получить это значение, либо изменить его. Зачем это нужно? В переменной могут храниться п ромежуточные результаты вычислений, полученные “снаружи” данные (с датчиков, Интернета, интерфейсов связи) и так далее.
Измерение информации
Прежде чем перейти к переменным и их типам, нужно вспомнить школьный курс информатики, а именно – как хранятся данные в “цифровом” мире. Любая память состоит из элементарных ячеек, которые имеют всего два состояния: 0 и 1. Эта единица информации называется бит (bit). Минимальным блоком памяти, к которому можно обратиться из программы по имени или адресу, является байт (byte), который в Arduino (и в большинстве других платформ и процессоров) состоит из 8 бит, таким образом любой тип данных будет кратен 1 байту.
Максимальное количество значений, которое можно записать в один байт, составляет 2^8 = 256. В программировании счёт всегда начинается с нуля, поэтому один байт может хранить число от 0 до 255. Более подробно о двоичном представлении информации и битовых операциях мы поговорим в отдельном уроке.
Стандартные типы переменных в Arduino по своему размеру кратны степени двойки, давайте их распишем:
- 1 байт = 8 бит = 256
- 2 байта = 16 бит = 65 536
- 4 байта = 32 бита = 4 294 967 296
Типы данных
Переменные разных типов имеют разные особенности и позволяют хранить числа в разных диапазонах.
| Название | Альт. название | Вес | Диапазон | Особенность |
| boolean | bool | 1 байт * | 0 или 1, true или false | Логический тип |
| char | – | 1 байт | -128… 127 (AVR), 0.. 255 (esp) | Символ (код символа) из таблицы ASCII |
| – | int8_t | 1 байт | -128… 127 | Целые числа |
| byte | uint8_t | 1 байт | 0… 255 | Целые числа |
| int ** | int16_t , short | 2 байта | -32 768… 32 767 | Целые числа. На ESP8266/ESP32 – 4 байта! См. ниже |
| unsigned int ** | uint16_t , word | 2 байта | 0… 65 535 | Целые числа. На ESP8266/ESP32 – 4 байта! См. ниже |
| long | int32_t | 4 байта | -2 147 483 648… 2 147 483 647 | Целые числа |
| unsigned long | uint32_t | 4 байта | 0… 4 294 967 295 | Целые числа |
| float | – | 4 байта | -3.4E+38… 3.4E+38 | Числа с плавающей точкой, точность: 6-7 знаков |
| double | – | 4/8 байт | -1.7E+308.. 1.7E+308 | Для AVR то же самое, что float . |
- (*) – да, bool занимает 1 байт (8 бит), так как это минимальная адресуемая ячейка памяти. Есть способы запаковать логические переменные в 1 бит, о них поговорим в другом уроке.
- (**) – на ESP8266/ESP32 int и unsigned int занимает 4 байта, то есть является аналогами типов long и unsigned long !
- (***) – Компилятор также поддерживает 64 битные числа. Стандартные Arduino-библиотеки с переменными этого типа не работают, поэтому можно использовать только в своём коде.
Целочисленные типы
Переменные целочисленных типов нужны для хранения целых чисел. В своей программе рекомендуется использовать альтернативное название типов (второй столбец в таблице выше), потому что:
- Проще ориентироваться в максимальных значениях
- Легче запомнить
- Название более короткое
- Проще изменить один тип на другой
- Размер переменной задан жёстко и не зависит от платформы (например int на AVR это 2 байта, а на esp8266 – 4 байта)
Максимальные значения хранятся в константах, которые можно использовать в коде. Иногда это помогает избавиться от лишних вычислений:
- UINT8_MAX – 255
- INT8_MAX – 127
- UINT16_MAX – 65 535
- INT16_MAX – 32 767
- UINT32_MAX – 4 294 967 295
- INT32_MAX – 2 147 483 647
- UINT64_MAX – 18 446 744 073 709 551 615
- INT64_MAX – 9 223 372 036 854 775 807
Логический тип
bool – логический, он же булевый (придуман Джорджем Булем) тип данных, принимает значения 0 и 1 или false и true – ложь и правда. Используется для хранения состояний, например включено/выключено, а также для работы в условных конструкциях.
Также переменная типа bool принимает значение true , если присвоить ей любое отличное от нуля число.
bool a = 0; // false bool b = 1; // true bool c = 25; // true
Символьный тип
char – тип данных для хранения символов, символ указывается в одинарных кавычках: char var = ‘a’; . По факту это целочисленный тип данных, а переменная хранит номер (код) символа в таблице ASCII:

Отдельный символьный тип данных нужен для удобства работы, чтобы программа могла понять разницу между числом и символом, например для вывода на дисплей (чтобы вывести именно букву A, а не число 65). Из символов можно составлять строки, об этом более подробно поговорим в уроках про символьные строки и String-строки.
Символы и числа
Несмотря на то, что в языке Си символ это по сути целое число, значения например ‘3’ и 3 не равны между собой, потому что символ ‘3’ с точки зрения программы является числом 51 . На практике иногда бывает нужно конвертировать символы чисел в соответствующие им целые числа и наоборот (при работе со строками и буферами вручную), для этого распространены следующие алгоритмы:
- Из символа в число – взять младший ниббл (4 бита): symbol & 0xF
- Из символа в число – вычесть символ 0: symbol — ‘0’
- Из числа в символ – прибавить символ 0: symbol + ‘0’
Дробные числа
float (англ. float – плавающий) – тип данных для чисел с плавающей точкой, т.е. десятичных дробей. Arduino поддерживает три типа ввода чисел с плавающей точкой:
| Тип записи | Пример | Чему равно |
| Десятичная дробь | 20.5 | 20.5 |
| Научный | 2.34E5 | 2.34*10^5 или 234000 |
| Инженерный | 67e-12 | 67*10^-12 или 0.000000000067 |
Выше в таблице есть пометка “точность: 6-7 знаков” – это означает, что в этом типе можно хранить числа, размер которых не больше 6-7 цифр, остальные цифры будут утеряны! Причём целой части отдаётся приоритет. Вот так это выглядит в числах (в комментарии – реальное число, которое записалось в переменную):
float v; v = 123456.654321; // 123456.656250 v = 0.0123456789; // 0.0123456788 v = 0.0000123456789; // 0.0000123456788 v = 123456789; // 123456792.0
Другие особенности float чисел и работу с ними мы рассмотрим в уроках про математические операции и условия.
Объявление и инициализация
- Объявление переменной – резервирование ячейки памяти указанного типа на имя: тип_данных имя;
- Присваивание – задание переменной значения при помощи оператора = (равно): имя = значение;
- Инициализация переменной – объявление и присваивание начального значения: тип_данных имя = значение;
Можно объявить и инициализировать несколько переменных через запятую:
byte myVal; int sensorRead = 10; byte val1, val2, val3 = 10;
- Переменная должна быть объявлена до использования, буквально выше по коду. Иначе вы получите ошибку Not declared in this scope – переменная не объявлена.
- Нельзя объявить две и более переменных с одинаковым именем в одной области определения.
Константы
Что такое константа понятно из её названия – что-то, значение чего мы можем только прочитать и не можем изменить: при попытке изменить получим ошибку компиляции. Задать константу можно двумя способами:
Как переменную, указав перед типом данных слово const: const тип_данных имя = значение; . Пример: const byte myConst = 10; . По сути это будет обычная переменная, но её значение нельзя поменять. Особенности:
- Занимает место в оперативной памяти, но может быть оптимизирована (вырезана) компилятором, если используется просто как значение.
- Имеет адрес в памяти, по которому к ней можно обратиться.
- Вычисления с ней не оптимизируются и чаще всего выполняются точно так же, как с обычными переменными.
- Компилятор выдаст ошибку, если имя константы совпадает с именем другой переменной в программе.
При помощи директивы #define, без знака равенства и точки с запятой в конце: #define имя значение . Пример: #define BTN_PIN 10 . Работает так: указанное имя буквально заменяется в тексте программы на указанное значение. Такая дефайн-константа:
- Не занимает места в оперативной памяти, а хранится во Flash памяти как часть кода программы.
- Не имеет адреса в оперативной памяти.
- Вычисления с такими константами оптимизируются и выполняются быстрее, так как это просто цифры.
- Если имя дефайн-константы совпадёт с именем другого “объекта” в программе или даже в библиотеке – работа может быть непредсказуемой: можно получить невнятную ошибку компиляции, либо программа может просто работать некорректно! Дефайн буквально заменяет текст в коде программы, это довольно опасная штука.
Во избежание проблем нужно называть дефайн-константы максимально уникальными именами. Можно добавлять к ним префиксы, например вместо PERIOD сделать MY_PERIOD и так далее.
Область видимости
Переменные, константы const и другие создаваемые пользователем данные имеют такое важное понятие, как область видимости. Она бывает глобальной и локальной.
Глобальная
- Объявляется вне функций, например просто в начале программы.
- Доступна для чтения и записи в любом месте программы.
- Находится в оперативной памяти на всём протяжении работы программы, то есть не теряет своё значение.
- При объявлении имеет нулевое значение.
byte var; // глобальная переменная void setup() < var = 50; >void loop()
Локальная
- Объявляется внутри любого блока кода, заключённого в < фигурные скобки >.
- Доступна для чтения и записи только внутри своего блока кода (и во всех вложенных в него).
- Находится в оперативной памяти с момента объявления и до закрывающей фигурной скобки, то есть удаляется из памяти и её значение стирается.
- При объявлении имеет случайное значение.
Важный момент: если имя локальной переменной совпадает с одной из глобальных, то приоритет обращения отдаётся локальной переменной (в её области определения).
byte var; // глобальная переменная void setup() < byte var; // локальная переменная var = 50; // меняем локальную var >void loop() < var = 70; // меняем глобальную var >
Статические переменные
Вспомним, как работает обычная локальная переменная: при входе в свой блок кода локальная переменная создаётся заново, а при выходе – удаляется из памяти и теряет своё значение. Если локальная переменная объявлена как static – она будет сохранять своё значение на всём протяжении работы программы, но область видимости останется локальной: взаимодействовать с переменной можно будет только внутри блока кода, где она создана (и во всех вложенных в него).
void setup() < >void loop() < byte varL = 0; varL++; static byte varS = 0; varS++; // здесь varL всегда будет равна 1 // а varS - постоянно увеличиваться >
Статические переменные позволяют более красиво организовывать свой код, избавляясь от лишних глобальных переменных.
Преобразование типов
Иногда требуется преобразовать один тип данных в другой: например, функция принимает int , а вы хотите передать ей byte . В большинстве случаев компилятор сам разберётся и преобразует byte в int , но иногда вылетает ошибка в стиле “попытка передать byte туда, где ждут int“. В таком случае можно преобразовать тип данных, для этого достаточно указать нужный тип данных в скобках перед преобразуемой переменной (тип_данных)переменная , иногда можно встретить запись тип_данных(переменная) . Результат вернёт переменную с новым типом данных, сам же тип данной у переменной не изменится. Например:
// переменная типа byte byte val = 10; // передаём какой-то функции, которая ожидает int sendVal( (int)val );
И всё! val будет обрабатываться как int , а не как byte .
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])