Типы переменных в программе

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

Что же такое переменная

Для того, чтобы тебе было проще понять, что такое переменная, вернемся к школьному курсу и вспомним простую формулу:

Если мы подставим значение к «х», например, х = 1, то значение выражения будет равно «2». Соответственно, если х = 2, значение выражения будет «3» и так далее. Как видишь, все достаточно просто. «Х» в нашем случае переменная, куда мы помещаем любое значение. Подставляя его в формулу, мы получаем определенный результат.

В языке программирования переменная – это своего рода контейнер или ящичек, куда можно положить любое значение, чтобы оно там хранилось до определенного момента, пока это значение нам не потребуется для каких-то вычислений.

Какие типы переменных бывают в Java

ТИПЫ ДАННЫХ В C# | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | Урок # 3

В этом языке программирования выделяют четыре типа переменных:

  1. Целочисленные. К этому типу относятся такие переменные, как byte, short, int, long.
  2. С плавающей точкой. Сюда относятся float и double.
  3. Символы.
  4. Логические.

Как видно, всего переменных 8, однако есть еще и девятый тип переменных – void. Но этот тип мы не будем рассматривать в данной статье. Познакомимся поближе с каждым из типов переменных.

Целочисленные

Уже из названия понятно, что в качестве значения таким переменным присваиваются целые числа. Например, это может быть 5, 10, 25, 100 и так далее. Причем они могут быть как положительными, так и отрицательными, в зависимости от потребности разработчика. А теперь рассмотрим подробнее каждый из видов переменных:

  1. Byte – принимает значение от -128 до 127. Размер этой переменной – 1 байт памяти, что вполне логично исходя из названия.
  2. Short – может принимать значения от -32768 до 32767. Размер такой переменной 2 байта.
  3. Int – эта целочисленная переменная может принимать значения от -2147483648 до 2147483647. Ее размер составляет 4 байта.
  4. Long – это самая большая с точки зрения размера переменная (8 байтов памяти). Она может принимать значения от -9223372036854775808 до 9223372036854775807.

В принципе, несложно понять, когда и в какой ситуации использовать каждую из этих переменных. Но для закрепления приведем маленький пример. Предположим, у Васи 5 апельсинов, а у Кати и Ани по 3. Нужно определить сколько всего апельсинов у ребят. Нетрудно догадаться, что здесь требуется использование целочисленных переменных, так как апельсины целые и не предполагается, что их будут делить на дольки.

Теперь нам нужно понять, какую именно переменную использовать. Здесь важно вспомнить, какое именно значение может принимать та или иная целочисленная переменная. Например, мы точно знаем, что количество апельсинов не будет выходить за пределы 127. В этом случае, можно смело объявлять byte.

Дальше, представим, что Вася, Катя и Аня выросли и стали заниматься поставками апельсинов. Теперь у каждого больше 1000 единиц этого вкусного фрукта. Объявлять byte мы больше не сможем. Если количество апельсинов не превышает 32767, мы можем работать с short, если больше с int и так далее.

Несмотря на то, что в Java представлено 4 целочисленных переменных, чаще всего будет использоваться только int. Более того этот тип в языке считается по умолчанию. А теперь посмотрим, как в Java объявляются переменные.

Приведем несколько примеров:

Источник: vc.ru

Типы данных, переменные

Переменная – это ячейка в оперативной памяти микроконтроллера, которая имеет своё уникальное название (а также адрес в памяти) и хранит значение соответственно своему размеру. К переменной мы можем обратиться по её имени или адресу и получить это значение, либо изменить его. Зачем это нужно? В переменной могут храниться п ромежуточные результаты вычислений, полученные “снаружи” данные (с датчиков, Интернета, интерфейсов связи) и так далее.

Измерение информации

Прежде чем перейти к переменным и их типам, нужно вспомнить школьный курс информатики, а именно – как хранятся данные в “цифровом” мире. Любая память состоит из элементарных ячеек, которые имеют всего два состояния: 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
Читайте также:
Программа чтобы узнать какая материнская плата

Типы данных

Переменные разных типов имеют разные особенности и позволяют хранить числа в разных диапазонах.

Целочисленные типы

Переменные целочисленных типов нужны для хранения целых чисел. В своей программе рекомендуется использовать альтернативное название типов (второй столбец в таблице выше), потому что:

  • Проще ориентироваться в максимальных значениях
  • Легче запомнить
  • Название более короткое
  • Проще изменить один тип на другой
  • Размер переменной задан жёстко и не зависит от платформы (например 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:

blank

Отдельный символьный тип данных нужен для удобства работы, чтобы программа могла понять разницу между числом и символом, например для вывода на дисплей (чтобы вывести именно букву A, а не число 65). Из символов можно составлять строки, об этом более подробно поговорим в уроках про символьные строки и String-строки.

Дробные числа

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])

Источник: alexgyver.ru

Переменные и типы данных

Аннотация: В лекции рассматривается вопрос важности объявления переменных. Представлены типы данных: элементарные типы, объектные переменные, массивы и пользовательские типы. Особое внимание уделяется вопросам инициализация переменных, области видимости и времени жизни переменных.

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

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

  • Нельзя использовать служебные слова и стандартные имена как идентификаторы.
  • Нельзя использовать пробелы и точки в качестве разделителей частей имен.
  • Символы объявления типа, например, «#» можно использовать только как последний символ имени (см. ниже таблицу суффиксов).
  • Строчные и прописные буквы в имени считаются равными.
  • Длина имени не может быть более 255 символов. Длина имен объектов не должна превышать 40 символов.
  • Не рекомендуется использовать в имени буквы русского языка, несмотря на то, что это допускается в локализованных версиях MS Office. Применение не латинских символов в идентификаторах может привести к проблемам с переносимостью приложения на другие компьютеры.

Константа — постоянное значение , используемое в программе. Константам можно присвоить имя и использовать их в качестве переменных, имеющих постоянные значения . Символьные константы заключаются в кавычки, а константы , представляющие даты, заключаются в символы решетка (#). Например, #1.12.2006#.

Прежде чем использовать константу в тексте модуля, ее обязательно следует объявить. Синтаксис объявления константы Const name=expression

Например, Const pi=3.14

В языке имеются встроенные константы , имена которых зарезервированы. Использование констант улучшает читабельность программы и уменьшает вероятность ошибок при использовании постоянных значений. Имена констант VB начинаются с vb, а константы Excel VBA начинаются с xl. Для просмотра полного перечня встроенных констант задайте поисковую строку Constants в Object Browser.

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

Важность объявления переменных

Перечислим основные аргументы в пользу объявления переменных.

  • Объявление переменных поможет избежать самого распространенного типа ошибок — ошибок, связанных с неправильным написанием имен переменных, например, вместо идентификатора wbkVar в команде может быть записано wkbVar.
  • Если переменная объявлена, Visual Basic проверяет, используется ли правильный тип данных в операциях с этой переменной.
  • Объявление переменных исключает преобразование значений переменных, которое происходит при вычислении выражений , из типа Variant в другой тип.
  • Использование переменных различных типов уменьшает память, занимаемую переменными, и сокращает время выполняемых вычислений, благодаря чему программы становятся более эффективными.
  • Объявление переменных позволяет создавать переменные, которые можно использовать в нескольких процедурах или модулях (модульные и глобальные переменные). Можно определять также переменные, сохраняющие свои значения после выхода из процедуры.
Читайте также:
Лучшая программа для диагностики оперативной памяти

Чтобы избежать использования переменных без объявления, можно поместить в область Declarations каждого модуля инструкцию Option Explicit. Тогда при обращении к переменной, не объявленной ранее, возникнет сообщение об ошибке компиляции.

Ошибка компиляции - переменная неопределенна


Рис. 4.1. Ошибка компиляции — переменная неопределенна

Чтобы принудительно следовать стратегии объявления переменных, включите опцию Require Variable Declaration (Требовать описание переменных) в окне команды Tools-Options и тогда инструкция Option Explicit будет автоматически вставляться во все модули и процедурные листы проекта.

Типы данных

В VBA, как и в любом языке, используются данные различных типов: числовые, строковые, логические и т.п. — всего 11 элементарных типов . Допустимо использование данных пользовательского типа .

Длина строки для строк фиксированной длины

В языке VBA предусмотрено предварительное объявление переменных, участвующих в программе, но оно не является обязательным.

  • Переменная может принимать значения только одного типа, который указывается при ее описании или предполагается по умолчанию.
  • Тип переменной накладывает ограничения на ее возможные значения и определяет разрешенные операции.
  • Присвоение переменной значения, не соответствующего ее типу, вызывает преобразование значения или может привести к ошибке.

Для объявления переменных используются операторы Dim, Private, Public и Static.

Синтаксис оператора Dim:

Dim VariableName [As DataType]

  • VariableName — идентификатор переменной ,
  • DataType — тип данных. Необязательный параметр. По умолчанию Variant.

Операторы Private, Public и Static имеют такой же синтаксис , что и оператор Dim. Их использование разбирается ниже.

Dim q As String

Dim r As Variant

As String, r As

VBA позволяет включать в имена переменных суффиксы, определяющие тип переменной . Например, Dim Name$ определяет переменную Name$ как стринговую.

В таблице справа представлены суффиксы и типы переменных , объявляемых с помощью добавления суффикса в конец идентификатора.

  • Операторы объявления переменных относятся к неисполняемым операторам, т.е. они содержат некоторую информацию для VB, не выполняя никаких действий.
  • Оператор объявления переменной может стоять в любом месте программы, но обязательно раньше использования определяемой переменной.
  • Объявление переменных в начале процедуры или модуля улучшает читабельность программы.

Локальные переменные (понятие вводится ниже) могут быть объявлены неявно (контекстуально). Обычно это происходит, если имя переменной присутствует слева в операторе присваивания или используется в качестве переменной цикла . Переменная , объявленная неявно, всегда имеет тип Variant.

Тип Variant

Переменная, которая используется без объявления, а также переменная, тип которой явно не задан, относится к типу Variant.

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

Использование переменной типа Variant поглощает больше ресурсов компьютера, чем использование переменной элементарного типа .

Переменная типа Variant может содержать специальные значения: Empty, Null, Nothing или Error.

Значение Empty может быть установлено специально, чтобы показать отсутствие значения.

  • Используйте функции IsEmpty, IsNull, IsError для сравнения значения переменной со специальными значениями.

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

Если в арифметическом выражении участвует переменная типа Variant, содержащая символьное значение, то ее значение преобразуется в число, если это возможно. В противном случае числовые значения преобразуются в строки и, если выполняемая операция не операция сложения, то возникает ошибка.

Объектные переменные

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

Объявление переменных объектного типа ничем не отличается от объявления переменных других типов. Синтаксис объявления объектной переменной Dim varname As type, где type — тип объекта.

Возможен тип любого объекта VBA или ключевое слово Object. Например, Dim p As Object, Dim r as Range, Dim w As Workbook.

Оператор Set

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

Set objectvar = objectexpression|Nothing

  • objectvar — объектная переменная ;
  • objectexpression — объектное выражение;
  • Nothing — ключевое слово, указывающее на отсутствие ссылки на объект.

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

  • Оператор Set только устанавливает ссылку на объект, не создавая никакой копии.
  • Типы объектного выражения и объектной переменной должны совпадать.
  • Чтобы очистить объектную переменную, используйте значение Nothing в операторе присваивания, которое аннулирует ссылку на объект и освобождает ресурсы. Например: Set rng = Nothing .

Источник: intuit.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru