Какой тип имеет переменная f если
Перейти к содержимому

Какой тип имеет переменная f если

  • автор:

Какой тип имеет переменная f если

УПС, страница пропала с радаров.

*размещая тексты в комментариях ниже, вы автоматически соглашаетесь с пользовательским соглашением

Вам может понравиться Все решебники

Михеева, Афанасьева

Виленкин, Жохов, Чесноков

Дидакт. материалы

Мерзляк, Полонский, Якир

Габриелян, Остроумов, Сладков

Мордкович 10-11 класс

Мордкович, Семенов

Рабочая тетрадь

©Reshak.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

Типы данных

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

Название Альт. название Вес Диапазон Особенность
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:

blank

Отдельный символьный тип данных нужен для удобства работы, чтобы программа могла понять разницу между числом и символом, например для вывода на дисплей (чтобы вывести именно букву 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])

Вопрос 12 — ГДЗ по Информатике 8 класс Учебник Босова. Параграф 3.4

ГДЗ РЕД

На этой странице рассмотрим все ответы на Вопрос 12 из учебника по информатике 8 класс Босова
12. Дан условный оператор:

Какое значение имеет переменная а, если в результате выполнения условного оператора переменной с присваивается значение 3?

Параграф 1.1

Параграф 1.2

Параграф 1.3

Какой тип имеет переменная f если

Переменные. Оператор присваивания.

Понятие переменной величины вам известно из математики.

Пусть несколько лет назад ваш рост равнялся 1 50 см. Обозначим этот факт так: r = 1 50 . Теперь он равен 160 см, то есть r = 160.

Получает­ ся, что величина г изменилась. Поэтому она называется переменной величиной.

Числа 1 50 и 160 называются значениями переменной ве личины r .

Любой язык программирования умеет обращаться с переменными величинами.

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

Это мы можем сделать при помощи оператора, который называется оператором присваива ния.

Так, если мы хотим сказать, что а имеет значение 6, то должны просто записать а = 6.

Эта запись и называется оператором присваива ния. Говорят, что величине а присваивается значение 6.

С момента выполнения оператора а = 6 компьютер будет помнить, что а равно шести.

После выполнения следующего фрагмента программы:

компьютер будет знать, что а равно 16, b равно 16, у равно 33. Итак, при помощи оператора присваивания вы можете и вычислять.

Мы ви дим, что справа от знака равенства в операторе присваивания можно писать не только числа, но и переменные величины, и выражения.

Выражения в Visual Basic могут быть разных типов .

Здесь это были 4* 3 + 4, а, а + b + 1. Любое ариф метическое выражение имеет численное значение.

Теперь чуть-чуть о свойствах объектов. Выражение может вклю чать в себя не только переменные величины,

но и свойства объектов, имеющие подходящее значение. Например, Y = a + b + Form 1. Width

В левой части оператора присваивания также может стоять не только переменная, но и свойство объекта.

Например, Form 1. Width = а + b + у. В последнем случае действие этого оператора вы сразу увидите на экране.

Необходимо помнить, что если слева от знака равенства стоит переменная величина, то Visual Basic выполняет оператор присваивания «в

уме». Имеется в виду, что результат его выполнения не отображает­ся на экране, а только запоминается. Как же увидеть значение

пере менной величины?

Создайте в проекте текстовое поле и дополните программу последнего примера:

t = 0 : n = 2* t +40 : z = — n : Text 1. Text = z Теперь значение величины z , равное -40, вы будете видеть в тексто­ вом поле.

Нужно иметь в виду, что оператор присваивания слева от знака равенства не может стоять число или выражение. Можно писать f=45 , но не наоборот. Можно писать d=f+t+9*g , но не наоборот.

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

Переменные необходимо объявлять, то есть задать тип переменной (см. таблицу 1). Для того, чтобы Visual Basic понял, число перед ним, строка или другой тип переменной. Иначе программа может работать неправильно. Как объявлять переменные?

Dim f As Integer

Dim stro_ka As String

Dim m1 As Boolean

Dim имя_переменной As Byte

то есть переменная f имеет тип integer, переменная stro_ka имеет тип string , переменная m1 имеет тип boolean.

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

Символы, которые НЕЛЬЗЯ использовать в именах переменных:

пробел, специальные слова (команды), начинать переменную с цифры.

Задача: Сложить числа и слова в двух текстовых полях.

Решение: Создать шесть текстовых полей, надпись( Label ) и кнопку так, как показано на рисунке:

Dim slovo1 As String
Dim slovo2 As String
Dim a As Integer
Dim b As Integer
Private Sub Command1_Click()
a = Text1.Text ‘
переменной а присваиваем значение, введенное вами в первое текстовое поле
b = Text2.Text
переменной b присваиваем значение, введенное вами во второе текстовое поле
slovо1 = Text3.Text
переменной slovo1 присваиваем значение, введенное вами в третье текстовое поле
slovo2 = Text4.Text
переменной slovo2 присваиваем значение, введенное вами в четвертое текстовое поле
Text5.Text = a + b
‘ в текстовое поле 5 печатаем результат сложения числовых переменных
Text6.Text = slovo1 + slovo2
в текстовое поле 5 печатаем результат сложения числовых переменных

А теперь попробуйте ввести числа в текстовые поля 3 и 4. Например 21 и 11, в текстовом поле 6 получится не 32, а 2111. Так произошло потому что в этих текстовых полях строковые переменные, а не числовые, а строки складываются только таким способом.

Действия арифметики обозначаются в Visual Basic следующим об­ разом:

Действие

Результат

Смысл

2 +3

5

Плюс

4 — 1

3

Минус

2 * 3

6

Умножить

10 / 2

5

Разделить

17 \ 5

3.

Целочисленное деление (17 делится на 5, получается 3, в остатке 2)

17 Mod 5

2

Остаток от целочисленного деления

2 ^ 3

8

2 3 (два в кубе) — возведение в степень

Действие

Результат

Смысл

Sqr(25)

5

Корень квадратный

Round (5.82716)

6

Округление до целых

Round (5.82716,3)

5.827

Округление до трех знаков после точки

Abs(-20)

20

Абсолютная величина (модуль) числа

Fix (3.98)

3

Целая часть числа (дробная часть отбрасывается)

Fix (-3.98)

-3

Int (3.98)

3

Наибольшее целое число, не превышающее вы ражения в скобках

Int (-3.98)

-4

Rnd

0.73088

Случайное число из диапазона (0-1)

Кроме того, имеются функции Sin , Cos , Tan (тангенс), Atn (арктан­ генс), Exp , Log и др.

На уроках математики мы привыкли писать ab + cd , подразумевая: а умножить на b плюс с умножить на d . В Visual Basic это выражение мы обязаны писать так: а * b + с * d . Иначе компьютер подумает, что нужно к переменной, имеющей имя ab , прибавить переменную, имеющую имя cd . Во избежание двусмысленности знак умножения положено писать всегда, в том числе и перед скобками. Например, а*( b + с).

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

a + 1

b + 1

очень затруднен. Поэтому для обозначения деления и выбрана косая черта. Это выражение на Visual Basic положено записывать так: (а+1)/( b +1). Если бы мы не поставили скобки, то выражение получилось бы таким: а + 1/ b + 1, а это неправильно, так как компьютер, как и мы, всегда перед сложением и вычитанием выполняет умножение и деле ние; поэтому в последнем случае он бы сначала разделил 1 на b , а затем к результату прибавил а и 1.

Вопрос: когда в выражениях можно ставить скобки? Ответ: всегда, когда у вас возникают сомнения в правильной очередности действий. Лишняя пара скобок не помешает.

Все типы переменных:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *