Азбука Ардуино

Модератор: Gnat

Аватара пользователя
BazilVV
Сообщения: 639
Зарегистрирован: Пт сен 15, 2017 11:34 am

Азбука Ардуино

Сообщение BazilVV » Вт янв 21, 2020 11:32 pm

SmartAvit писал(а):
Вт янв 21, 2020 1:37 pm
int X = 256;
int Y = 122;
int Z = 189;
Int radioland = X+Y/Z*2;
Значение radioland = 189, у меня получилось :oops:
но однозначно, это будет целое число, без дроби, может даже 1, переменная int мне еще слабо дается.
Последний раз редактировалось BazilVV Ср янв 22, 2020 12:16 am, всего редактировалось 2 раза.
Василий Васильевич. Моя галерея.
ЗЫ: Я сторонник жесткой модерации в тематических ветках.

Аватара пользователя
Andrey.I
Сообщения: 1734
Зарегистрирован: Вт июл 02, 2013 1:21 pm
Откуда: Москва
Контактная информация:

Азбука Ардуино

Сообщение Andrey.I » Ср янв 22, 2020 12:04 am

BazilVV,
У меня другой.
BazilVV писал(а):
Вт янв 21, 2020 11:32 pm
но однозначно, это будет целое число,
верно
С уважением, Андрей

Аватара пользователя
MOT
Сообщения: 2278
Зарегистрирован: Сб дек 16, 2017 7:58 pm
Откуда: Россия, Северный Кавказ, Краснодарский край, г.Армавир

Азбука Ардуино

Сообщение MOT » Ср янв 22, 2020 12:36 am

Если присваивать числа с плавающей точкой (тип данных "float") целочисленному типу данных "integer"
- дробная часть отсекается. Поэтому результат 256. Для округление в большую или меньшую сторону есть специальные функции. Владимир, наверно про них расскажет позже. :wink:
С уважением, Виктор Евгеньевич
Accept Corp.

Аватара пользователя
Andrey.I
Сообщения: 1734
Зарегистрирован: Вт июл 02, 2013 1:21 pm
Откуда: Москва
Контактная информация:

Азбука Ардуино

Сообщение Andrey.I » Ср янв 22, 2020 12:55 am

MOT, Виктор Евгеньевич,... ай-я-яй,... зачем лишаете людей такой радости, как самим докопаться до истины, все подсказки были и ещё ни кто не сдался. :)
С уважением, Андрей

Аватара пользователя
MOT
Сообщения: 2278
Зарегистрирован: Сб дек 16, 2017 7:58 pm
Откуда: Россия, Северный Кавказ, Краснодарский край, г.Армавир

Азбука Ардуино

Сообщение MOT » Ср янв 22, 2020 1:04 am

Andrey.I,
Андрей, искренне каюсь! :)
С уважением, Виктор Евгеньевич
Accept Corp.

Аватара пользователя
Andrey.I
Сообщения: 1734
Зарегистрирован: Вт июл 02, 2013 1:21 pm
Откуда: Москва
Контактная информация:

Азбука Ардуино

Сообщение Andrey.I » Ср янв 22, 2020 1:17 am

Ну если вдруг, кто сдался.
Y/Z*2; - 122/189=0,6455026455026455 , если переменная int, это 0, 0*2= 0, тогда Int radioland = X+Y/Z*2;=256+0=256.
MOT писал(а):
Ср янв 22, 2020 1:04 am
Andrey.I,
искренне каюсь! :)
:lol: :beer:
С уважением, Андрей

araya
Сообщения: 412
Зарегистрирован: Ср фев 03, 2016 6:55 pm
Откуда: Усть-Лабинск

Азбука Ардуино

Сообщение araya » Ср янв 22, 2020 7:08 am

У меня 4 получилось. :(
Александр

Аватара пользователя
Andrey.I
Сообщения: 1734
Зарегистрирован: Вт июл 02, 2013 1:21 pm
Откуда: Москва
Контактная информация:

Азбука Ардуино

Сообщение Andrey.I » Ср янв 22, 2020 8:06 am

araya,
Александр, посмотрите внимательно таблицу приоритетов, сначала деление, умножение (п.3), затем сложение, вычитание (п.4)
С уважением, Андрей

Аватара пользователя
Алексей Сергеевич
Сообщения: 8828
Зарегистрирован: Чт мар 19, 2015 7:44 am
Откуда: Алматы
Контактная информация:

Азбука Ардуино

Сообщение Алексей Сергеевич » Ср янв 22, 2020 8:19 am

Теперь я понял, в чем важность таблички. :)
Приоритет заложен свой.

Аватара пользователя
BazilVV
Сообщения: 639
Зарегистрирован: Пт сен 15, 2017 11:34 am

Азбука Ардуино

Сообщение BazilVV » Ср янв 22, 2020 1:00 pm

Andrey.I писал(а):
Ср янв 22, 2020 1:17 am
Ну если вдруг, кто сдался.
Меня засмущали дроби и я отбросил эту версию, но это на интуиции, а не на понимании, еще не догоняю :( .
Василий Васильевич. Моя галерея.
ЗЫ: Я сторонник жесткой модерации в тематических ветках.

Аватара пользователя
SmartAvit
Сообщения: 707
Зарегистрирован: Пн мар 25, 2019 12:10 am
Откуда: Москва

Азбука Ардуино

Сообщение SmartAvit » Ср янв 22, 2020 3:59 pm

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

А теперь давайте рассмотрим подробнее что такое переменная и какие они бывают.

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

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

Условно все типы можно поделить на целочисленные и с плавающей точкой.
Последними (с плавающей точкой ) надо пользоваться осторожно: стоит один раз использовать переменную float или double, как подключится соответствующая библиотека и размер скетча заметно увеличится.

Тип указывается при объявлении переменной, перед именем:

int a; // от -32 768 до 32 767 Целочисленная переменная а
byte b; // от 0 до 255 Объявление целочисленной переменной b
float с; // от -3.4028235 x 10^38 до 3.4028235 x 10^38 Переменная с плавающей точкой с

Объявление можно совмещать с присвоением значения например:

double radio = sqrl(15); // Объявляем переменную с плавающей точкой типа double с именем radio и присваиваем ей значение квадратный корень из 15

Если вы используете переменную с плавающей точкой например float то при присвоении ей значения нужно записывать так float radio = 5.0 обязательно с десятичной точкой даже если Вы записываете целое число иначе решение будет неверным
Для примера результат одного и того же вычисления в первом случае будет 2 а во втором 2,5

float radio1 = 5/2; // результат - 2.0
float radio2 = 5.0/2.0; // результат - 2.5

В первом случае "5" и "2" будут распознаны как целочисленные типы, деление произойдет с отбрасыванием дробной части, несмотря на то, что результат будет присвоен переменной вещественного типа ( с плавающей точкой)

Во втором случае "5.0" и "2.0" будут распознаны как вещественные типы, деление произойдет с дробной частью и результат будет присвоен переменной вещественного типа ( с плавающей точкой )

Тема переменные не простая и мы будем возвращаться к ней для усвоения материала еще не раз.
С уважением Владимир.

Аватара пользователя
BazilVV
Сообщения: 639
Зарегистрирован: Пт сен 15, 2017 11:34 am

Азбука Ардуино

Сообщение BazilVV » Ср янв 22, 2020 11:10 pm

SmartAvit писал(а):
Ср янв 22, 2020 3:59 pm
int a; // от -32 768 до 32 767 Целочисленная переменная а
Для меня, это частота кварца электронных часов, дальше темень :shock: , а может я лишнего хватанул :%) , попробую все таки разобраться.
Если по честному, я только мигаю туда-сюда диодами :( .
Василий Васильевич. Моя галерея.
ЗЫ: Я сторонник жесткой модерации в тематических ветках.

Аватара пользователя
Andrey.I
Сообщения: 1734
Зарегистрирован: Вт июл 02, 2013 1:21 pm
Откуда: Москва
Контактная информация:

Азбука Ардуино

Сообщение Andrey.I » Ср янв 22, 2020 11:41 pm

BazilVV писал(а):
Ср янв 22, 2020 11:10 pm
от -32 768 до 32 767 Целочисленная переменная
А правда почему именно это число? Что нужно знать, что бы понять?
С уважением, Андрей

Аватара пользователя
=Микола=
Сообщения: 2768
Зарегистрирован: Вс мар 17, 2013 1:05 am
Откуда: Украина г. Северодонецк

Азбука Ардуино

Сообщение =Микола= » Ср янв 22, 2020 11:52 pm

..... 32 768 это 2 в 15й степени ,делители на 2 очень хорошо его делят до 1 Герца ( одной секунды...) в электронных часах .....

Аватара пользователя
MOT
Сообщения: 2278
Зарегистрирован: Сб дек 16, 2017 7:58 pm
Откуда: Россия, Северный Кавказ, Краснодарский край, г.Армавир

Азбука Ардуино

Сообщение MOT » Ср янв 22, 2020 11:58 pm

Всё верно. Число определяется степенью двойки. Вся оперативная память определяется степенью двойки. Не вдаваясь в подробности низкоуровнего программирования, завязка идёт и на процессор у которого есть регистры (внутренняя память).
С уважением, Виктор Евгеньевич
Accept Corp.

Ответить

Вернуться в «Усилители»