На этом уроке ты узнаешь, какие профессии связаны с разработкой видеоигр, и чем занимаются специалисты игровых студий.
В разработке видеоигр и геймификации неигровых проектов участвует множество профессионалов разных специальностей. Попробуй найти для себя самое интересное направление, пройдя все тренажеры. Получи призы: сертификат и промокод на эксклюзивный стикерпак ВКонтакте. И не забудь поделиться результатами с друзьями. Поехали!
Значение в JavaScript всегда относится к данным определённого типа. Например, это может быть строка или число.
Есть восемь основных типов данных в JavaScript. В этой главе мы рассмотрим их в общем, а в следующих главах поговорим подробнее о каждом.
Переменная в JavaScript может содержать любые данные. В один момент там может быть строка, а в другой – число:
// Не будет ошибкой
let message = "hello";
message = 123456;
Языки программирования, в которых такое возможно, называются «динамически типизированными». Это значит, что типы данных есть, но переменные не привязаны ни к одному из них.
Установите соответствие между характеристиками и частями бактериальной клетки, обозначенными цифрами на схеме: к каждой позиции, данной в первом столбце, подберите соответствующую позицию из второго столбца.
ХАРАКТЕРИСТИКИ
А) Содержит муреин
Б) Участие в перемещении
В) Кольцевая структура
Г) Осуществление прикрепления к поверхности
Д) Обладает способностью вращаться
Е) Два типа: грамположительные и грамотрицательные
Запишите в ответ цифры 1-4 из столбца ОРГАНОИДЫ, соответствующие номерам на схеме. Расположив их в порядке, соответствующем буквам:
А | Б | В | Г | Д | Е |
Переменная – это ячейка в оперативной памяти микроконтроллера, которая имеет своё уникальное название (а также адрес в памяти) и хранит значение соответственно своему размеру. К переменной мы можем обратиться по её имени или адресу и получить это значение, либо изменить его. Зачем это нужно? В переменной могут храниться промежуточные результаты вычислений, полученные “снаружи” данные (с датчиков, Интернета, интерфейсов связи) и так далее.
«Урок цифры» предлагает погрузиться в увлекательную визуальную новеллу-комикс, сюжет которой строится вокруг исследования кибератаки, совершенной на банк. Сюжет истории основан на реальных событиях, которые происходили в разных странах мира!
Главный герой — кибердетектив Мидори Кума помогает исследовать случившийся инцидент. Попутно он рассказывает про работу специалистов по информационной безопасности, учит отличать фишинговые письма от обычных, объясняет, почему важно обновлять программное обеспечение.
Урок можно пройти самостоятельно. Сначала посмотри видеолекцию, потом перейди к выполнению тренажера.
После выполнения тренажера можно получить сертификат о прохождении урока!
Урок Цифры апрель 2021
Страница Урока здесь
Материалы для учителя здесь
Страница Урока здесь
Материалы для учителя здесь
Страница Урока здесь
Материалы для учителя здесь
Мы предлагаем вам методический комплект, с помощью которого можно спланировать и провести занятия с учениками любой ступени обучения и уровня подготовки:
видеолекция по теме урока;
онлайн-тренажер для учеников 1–11 классов;
рекомендации по проведению урока.
При отсутствии технической возможности работы с тренажером в классе, вы можете предложить ученикам поработать с ним самостоятельно в качестве домашнего задания, а на уроке, после просмотра и обсуждения видеолекции, использовать следующий материал:
презентация для проведения урока без Интернета;
методические рекомендации для проведения урока без Интернета.
Данные материалы также пригодятся вам, если ученики быстро справятся с выполнением заданий тренажера и у вас останется время на уроке, или вы хотите поддержать интерес учеников, углубиться в тему. Объем предложенных материалов для проведения урока позволяет организовать серию из 2–3 занятий.
Страница Урока, Материалы для учителя здесь
Значение «null»
Специальное значение null не относится ни к одному из типов, описанных выше.
Оно формирует отдельный тип, который содержит только значение null:
В JavaScript null не является «ссылкой на несуществующий объект» или «нулевым указателем», как в некоторых других языках.
Это просто специальное значение, которое представляет собой «ничего», «пусто» или «значение неизвестно».
В приведённом выше коде указано, что значение переменной age неизвестно.
Попробуй свои силы в тренажере
Уровень для начинающих испытателей
Пройти
Уровень для опытных испытателей
Пройти
Уровень для опытных специалистов
Пройти
Урок о разработке игр подготовлен компанией VK при поддержке проектов ее экосистемы – международного бренда MY.GAMES в лице пензенской студии разработки мобильных игр BIT.GAMES, образовательной платформы Учи.ру и облачной платформы VK Cloud Solutions.
VK реализует образовательные проекты и инициативы для школьников, студентов, учителей и профессионалов индустрии. Благодаря проектам VK Образования школьники могут выбрать свой путь в ИТ, а студенты освоить востребованную специальность в этой сфере еще во время учебы.
Рекомендуем цифровые сервисы
Развиваем речь и легко учим стихи из школьной программы! Аудиопрочтение стихотворений, подсказки к непонятным словам, иллюстрации
Комплексное решение для планирования и организации системы воспитательной работы в школе
Сопровождение проектной деятельности школьников 5-11 классов
Аудиоучебники для занятий в школе и дома. 70 учебников. 7 предметов. С 5 по 9 класс
Помощь для родителей первоклассников в правильном объяснении тем из школьной программы
Сервис для подготовки детей 5-7 лет к школе с интерактивными развивающими заданиями
Банк трудных заданий для подготовки к ЕГЭ по 7 предметам с помощью индивидуальной траектории
Банк интерактивных комплексных заданий по пяти компонентам функциональной грамотности для учеников 3-9 классов
Интерактивные задания, тесты и контрольные работы с автоматической проверкой
Электронная форма учебников
ЭФУ соответствуют по содержанию и оформлению печатной форме учебника, содержат мультимедийные элементы, расширяющие содержание учебника
Системные решения в сфере профнавигации и построения индивидуальных образовательных траекторий для школьников
Предложение участникам конференции
Скидка 10% на цифровые сервисы
Для участников конференции с 21 апреля по 21 мая 2022
Ввод символов
Следующая программа просит пользователя ввести символ. Затем она выводит этот символ и его ASCII-код:
#include <iostream> int main() { std::cout << “Input a keyboard character: “; char ch; std::cin >> ch; std::cout << ch << ” has ASCII code “ << static_cast<int>(ch) << std::endl; return 0; } |
Результат выполнения программы:
Input a keyboard character: q
q has ASCII code 113
Обратите внимание, даже если cin позволит вам ввести несколько символов, переменная ch будет хранить только первый символ (именно он и помещается в переменную). Остальная часть пользовательского ввода останется во входном буфере, который использует cin, и будет доступна для использования последующим вызовам cin.
Рассмотрим это всё на практике:
#include <iostream> int main() { std::cout << “Input a keyboard character: “; // предположим, что пользователь ввел abcd char ch; std::cin >> ch; // ch = ‘a’, “bcd” останется во входном буфере std::cout << ch << ” has ASCII code “ << static_cast<int>(ch) << std::endl; // Обратите внимание, следующий cin не просит пользователя что-либо ввести, данные берутся из входного буфера! std::cin >> ch; // ch = ‘b’, “cd” останется в буфере std::cout << ch << ” has ASCII code “ << static_cast<int>(ch) << std::endl; return 0; } |
Результат выполнения программы:
Input a keyboard character: abcd
a has ASCII code 97
b has ASCII code 98
Управляющие символы
В языке C++ есть управляющие символы (или «escape-последовательности»). Они начинаются с бэкслеша (\), а затем следует определенная буква или цифра.
Наиболее распространенным управляющим символов в языке С++ является \n, который обозначает символ новой строки:
#include <iostream> int main() { std::cout << “First line\nSecond line” << std::endl; return 0; } |
Результат:
First line
Second line
Еще одним часто используемым управляющим символом является \t, который заменяет клавишу TAB, вставляя большой отступ:
#include <iostream> int main() { std::cout << “First part\tSecond part”; return 0; } |
Результат:
First part Second part
Таблица всех управляющих символов в языке C++:
Название | Символ | Значение |
Предупреждение (alert) | \a | Предупреждение (звуковой сигнал) |
Backspace | \b | Перемещение курсора на одну позицию назад |
formfeed | \f | Перемещение курсора к следующей логической странице |
Символ новой строки (newline) | \n | Перемещение курсора на следующую строку |
Возврат каретки (carriage return) | \r | Перемещение курсора в начало строки |
Горизонтальный таб (horizontal tab) | \t | Вставка горизонтального TAB |
Вертикальный таб (vertical tab) | \v | Вставка вертикального TAB |
Одинарная кавычка | \’ | Вставка одинарной кавычки (или апострофа) |
Двойная кавычка | \” | Вставка двойной кавычки |
Бэкслеш | \\ | Вставка обратной косой черты (бэкслеша) |
Вопросительный знак | \? | Вставка знака вопроса |
Восьмеричное число | \(number) | Перевод числа из восьмеричной системы счисления в тип char |
Шестнадцатеричное число | \x(number) | Перевод числа из шестнадцатеричной системы счисления в тип char |
Рассмотрим пример в коде:
#include <iostream> int main() { std::cout << “\”This is quoted text\”\n”; std::cout << “This string contains a single backslash \\” << std::endl; std::cout << “6F in hex is char \’\x6F\'” << std::endl; return 0; } |
Результат выполнения программы:
“This is quoted text”
This string contains a single backslash \
6F in hex is char ‘o’
Константы
Что такое константа понятно из её названия – что-то, значение чего мы можем только прочитать и не можем изменить: при попытке изменить получим ошибку компиляции. Задать константу можно двумя способами:
Как переменную, указав перед типом данных слово const: const тип_данных имя = значение;. Пример: const byte myConst = 10;. Фактически это будет обычная переменная, но её значение нельзя поменять. Особенности:
- Занимает место в оперативной памяти МК.
- Имеет адрес в памяти, по которому к ней можно обратиться.
- Вычисления с ней не оптимизируются и чаще всего выполняются точно так же, как с обычными переменными.
- Компилятор выдаст ошибку, если имя константы совпадает с именем другой переменной в программе.
При помощи директивы #define, без знака равенства и точки с запятой в конце: #define имя значение. Пример: #define BTN_PIN 10. Работает так: указанное имя буквально заменяется в тексте программы на указанное значение. Такая дефайн-константа:
- Не занимает места в оперативной памяти, а хранится во Flash памяти как часть кода программы.
- Не имеет адреса в оперативной памяти.
- Вычисления с такими константами оптимизируются и выполняются быстрее, так как это просто цифры.
- Если имя дефайн-константы совпадёт с именем другого “объекта” в программе или даже в библиотеке – работа может быть непредсказуемой: можно получить невнятную ошибку компиляции, либо программа может просто работать некорректно! Дефайн буквально заменяет текст в коде программы, это довольно опасная штука.
Во избежание проблем нужно называть дефайн-константы максимально уникальными именами. Можно добавлять к ним префиксы, например вместо PERIOD сделать MY_PERIOD и так далее.
Посмотри видеолекцию
`
Видеоигры – это развлечение или работа?
Эксперт из MY.GAMES (входит в экосистему VK) Антон Городецкий расскажет, какие видеоигры сегодня популярны, и почему игровой рынок — один из самых быстроразвивающихся в мире.
Игра — практически всегда имитация реальной деятельности. Строительство, управление персонажами, машинами, самолётами — всё это существует и в жизни. Однако в играх сложные процессы можно сделать доступными и интересными для игроков, чтобы они могли узнавать новое или даже создавать собственные миры.
Скачать видео
Wchar_t, char16_t и char32_t
Тип wchar_t следует избегать практически во всех случаях (кроме тех, когда происходит взаимодействие с Windows API).
Так же, как и стандарт ASCII использует целые числа для представления символов английского языка, так и другие кодировки используют целые числа для представления символов других языков. Наиболее известный стандарт (после ASCII) — Unicode, который имеет в запасе более 110 000 целых чисел для представления символов из разных языков.
Существуют следующие кодировки Unicode:
UTF-32 — требует 32 бита для представления символа.
UTF-16 — требует 16 бит для представления символа.
UTF-8 — требует 8 бит для представления символа.
Типы char16_t и char32_t были добавлены в C++11 для поддержки 16-битных и 32-битных символов Unicode (8-битные символы и так поддерживаются типом char).
Посмотри видеолекцию
`
Как исследовать кибератаки?
Эксперт «Лаборатории Касперского» по кибербезопасности Дмитрий Галов расскажет, как специалистам по информационной безопасности удается обнаруживать кибератаки, исследовать их и понять, кто за ними стоит. Будет интересно? Конечно, скорее включай видеолекцию!
В чём разница между одинарными и двойными кавычками при использовании с символами?
Как вы уже знаете, символы всегда помещаются в одинарные кавычки (например, ‘а’, ‘+’, ‘5’). Переменная типа char представляет только один символ (например, буква а, символ +, число 5). Следующий стейтмент не является корректным:
char ch(’56’); // переменная типа char может хранить только один символ |
Текст, который находится в двойных кавычках, называется строкой (например, “Hello, world!”). Строка (тип string) — это набор последовательных символов.
Вы можете использовать литералы типа string в коде:
std::cout << “Hello, world!”; // “Hello, world!” – это литерал типа string |
Более подробно о типе string мы поговорим на соответствующем уроке.
Оценить статью:
Загрузка…
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)
Программа онлайн-конференции
Программа для директора
21 апреля 10:30-12:30 (мск)
10:30
Информационно-образовательная среда школы: время выбирать цифровых помощников
Спикер
Серебрякова Татьяна Геннадьевна
Серебрякова Татьяна Геннадьевна
первый заместитель главного редактора АО «Издательство «Просвещение»
2020 год стал годом-экзаменом для школ. Каждый педагог был вынужден подбирать цифровые инструменты для организации учебной деятельности и коммуникации с учениками онлайн, однако многие из них не оправдали возложенных надежд. Что изменилось за прошедшие два года и как выбрать цифрового помощника со знаком качества сегодня?
11:00
Эффективное сопровождение проектной деятельности в образовательной организации
Спикеры
Леонтович Александр Владимирович
Леонтович Александр Владимирович
канд. психол. наук, директор Университетской гимназии МГУ, председатель Межрегионального общественного движения творческих педагогов «Исследователь»
Гладенкова Светлана Наумовна
Гладенкова Светлана Наумовна
канд. физ.-мат. наук, доцент кафедры теоретической физики им. Э.В. Шпольского, Директор Центра учебного книгоиздания Института физики, технологии и информационных систем МПГУ, руководитель цифровых проектов Издательства «Просвещение»
В рамках выступления:
- раскрывается содержание исследовательской и проектной деятельности учащихся;
- определяются компетентности, необходимые учителю для руководства исследовательскими и проектными работами;
- даются рекомендации по разработки образовательных программ различного вида с элементами исследовательской и проектной деятельности;
- рекомендуются критерии для оценки результатов исследовательской и проектной деятельности. Дается обзор ученических научно-практических конференций и конкурсов.
11:30
Цифровые ресурсы для измерения предметных и метапредметных образовательных результатов и динамики их изменения
Спикер
Карданова Елена Юрьевна
Карданова Елена Юрьевна
канд. физ.-мат. наук, директор центра психометрики и измерений в образовании, Институт образования НИУ ВШЭ
Для принятия правильных управленческих решений по результатам измерения образовательных результатов необходим валидный и надежный инструментарий. И если в части предметных результатов накоплен определенный опыт их измерения, то с метапредметными результатами ситуация сложнее. Чтобы их оценить, необходимо провести наблюдение за тем, как учащиеся принимают решения и действуют в различных ситуациях в реальной жизни, что можно сделать с помощью цифровых инструментов на основе заданий сценарного типа, игр, симуляций. Для оценивания образовательных результатов в динамике необходимы специальные способы конструирования тестов, а также использование моделей современной теории тестирования. В докладе будет представлен международный и российский опыт измерения образовательных результатов и индивидуального прогресса в обучении.
12:00
Как быстро и качественно проанализировать воспитательную работу в школе?
Спикеры
Самсонова Ольга Юрьевна
Самсонова Ольга Юрьевна
методист-эксперт отдела методической поддержки педагогов ГК «Просвещение»
Кисляков Алексей Вячеславович
Кисляков Алексей Вячеславович
канд. пед. наук, заведующий кафедрой воспитания и дополнительного образования ГБУ ДПО «Челябинский институт переподготовки и повышения квалификации работников образования» , доцент, почетный работник общего образования РФ
В рамках эфира обсудим:
- Какие трудности в проведении самоанализа воспитательной работы?
- Как качественный самоанализ поможет определить зоны профессионального развития замдиректора по воспитательной работе?
- Как использововать результаты самоанализа в практике воспитательной работы?
Программа для педагога
21 апреля
ВПР, ЕГЭ и точки контроля: цифровые помощники
13:00-14:00 (мск)
13:00
Как правильно подготовиться к ВПР по математике: «вредные советы»
Спикер
Глаголева Юлия Игоревна
Глаголева Юлия Игоревна
канд. пед. наук, проректор по методической работе АППО, г. Санкт-Петербург
На выступлении обсудим:
- ВПР — оценка деятельности учителя, ученика или системы образования?
- Когда начинается подготовка к ВПР?
- Как учителю, ученику и родителю подготовиться к ВПР по математике?
- Какие инструменты и ресурсы могут быть использованы при подготовке к ВПР?
13:20
Персональная стратегия подготовки к контрольным и экзаменам: как выстроить?
Спикер
Плечова Ольга Гарриевна
Плечова Ольга Гарриевна
канд. хим. наук, ведущий методист ГК «Просвещение»
Экзамены — серьезное испытание для учеников. Как помочь им эффективно повторить материал и почувствовать себя увереннее?
13:40
Месяц до экзаменов: что посоветовать ученикам 21 века?
Спикер
Шалыгин Николай Леонидович
Шалыгин Николай Леонидович
образовательный эксперт, директор учебного центра «Маяк», опыт в сфере более 6 лет
В рамках эфира обсудим:
- Как грамотно структурировать весь изученный материал?
- Какие современные платформы ученики могут использовать для повторения материала?
- Как побороть стресс до и во время экзамена?
Цифровые решения для реализации ФГОС в современных условиях
14:30-16:00 (мск)
14:30
Школьные проекты: где найти идеи и как реализовать?
Спикер
Зубкова Екатерина Дмитриевна
Зубкова Екатерина Дмитриевна
ведущий методист ГК «Просвещение»
Есть школьники, которые прекрасно ориентируются в проектно-исследовательской деятельности. Но их не так много. А как быть остальным? Ведь проекты неотъемлемая часть образовательного процесса и требование ФГОС. Расскажем о том, как интересно и эффективно реализовать проектную деятельность в школе.
14:50
Домашние задания: как мотивировать учеников и избежать списывания?
Спикеры
Черненко Дмитрий Витальевич
Черненко Дмитрий Витальевич
ведущий методист ГК «Просвещение»
Ускова Ирина Владимировна
Ускова Ирина Владимировна
канд. пед. наук, ученый секретарь, старший научный сотрудник лаборатории теоретической педагогики и философии образования ФГБНУ «Институт стратегии развития образования РАО», автор научных изданий и учебных пособий для учителей русского языка и литературы
В рамках эфира обсудим:
- Стоит ли заставлять учиться и выполнять домашнее задание?
- Как научить ребенка самостоятельности?
- Как избавиться от демотивации и апатии к учебе и предмету?
15:10
Цифровые инструменты урока — способ активизации школьников
Спикер
Уткина Олеся Александровна
Уткина Олеся Александровна
учитель истории и обществознания, руководитель методического центра гимназии Сколково
Мир технологий предлагает множество инструментов для работы педагога.
Мы рассмотрим четыре неочевидных, но простых и бесплатных в использовании программ для организации онлайн, смешанных, офлайн уроков.
На примерах разберём возможности функционала и потенциала использования инструментов Miro, Padlet, Canva, Mentimetr.
Тема актуальна для учителей-предметников, стремящихся мотивировать и зажигать огонь в глазах школьников.
15:30
Организация воспитательной работы: цифровые решения в помощь педагогу
Спикер
Сидоренкова Мария Евгеньевна
Сидоренкова Мария Евгеньевна
руководитель цифровых проектов АО «Издательство «Просвещение»
Как в условиях ограниченных материальных и временных ресурсов достичь главной цели воспитательной работы — личностного развития обучающихся? Цифровые инструменты, разработанные специально для педагога, позволят эффективно планировать воспитательную работу и осуществлять быстрый поиск ресурсов для подготовки к занятиям и мероприятиям.
Мышление 21 века: ключевые аспекты
16:00-18:30 (мск)
16:00
Современный дошкольник: особенности развития и роль цифры
Спикеры
Ефременкова Ирена Игоревна
Ефременкова Ирена Игоревна
канд. психол. наук, методист ГБОУ г. Москвы «Школа № 444»
Карацуба Ольга Владимировна
Карацуба Ольга Владимировна
педагогический дизайнер Центра начального образования ГК «Просвещение»
На встрече расскажем:
- об особенностях развития психических процессов современного дошкольника;
- мониторинге готовности ребенка к школьному обучению;
- роли цифры в обучении и развитии дошкольника.
16:30
Информационные и IT навыки детей: характеристика и инструменты для формирования
Спикеры
Челяденкова Мария Игоревна
Челяденкова Мария Игоревна
продуктолог образовательных проектов; со-основатель бизнес-школы; партнер агентства Thesis
Игушева Ирина Александровна
Игушева Ирина Александровна
руководитель цифровых проектов ГК «Просвещение»
В рамках эфира обсудим:
- Необходимые к развитию базовые навыки современных детей.
- Информационные и IT навыки как компоненты образовательной системы.
- Цифровые инструменты для формирования информационных и IT навыков.
17:00
Развитие эмоционального интеллекта: почему это важно сейчас?
Спикер
Киселёва Татьяна Сергеевна
Киселёва Татьяна Сергеевна
канд. психол. наук, практический психолог, руководитель отдела разработок международной сети детских центров развития эмоционального интеллекта «ЭИ дети»
Спикер расскажет о важности и методиках диагностики и развития эмоционального интеллекта педагогов, приведет исследования и кейсы, как педагоги с высоким ЭИ лучше справляются со стрессом и меньше подвержены эмоциональному выгоранию. Также поделится инструментами и техниками развития своего эмоционального интеллекта: с чего можно начать и как можно формировать эмоционально-интеллектуальную среду в классе, на каждом уроке.
17:30
BANI-мир и школьное образование: экосистемность и цифровые платформы
Спикер
Гамидова Джума Магомедрасуловна
Гамидова Джума Магомедрасуловна
заведующая кафедрой дисциплин социально-гуманитарного цикла в онлайн-школе «Дом Знаний»
BANI-мир в системе образования показывает как трансформируются профиль педагога и набор его компетенций, как должна меняться матрица компетенций того, кто учится. С точки зрения нового мира изменяющуюся систему образования можно описать как место встречи провайдеров образовательных услуг и потребителей, стремящихся к качественной экосистеме.
18:00
Карьерная грамотность как компетенция школьника 21 века
Спикер
Татаренко Павел Сергеевич
Татаренко Павел Сергеевич
экс министр образования Новгородской области, директор по взаимодействию с органами государственной власти в компании Профилум
Со спикером поговорим о том, как связаны карьерная грамотность и образование школьника, как можно влиять на мотивацию подростка и осознанный выбор собственной образовательной траектории, а так же как организовать системную работу по профнавигации на примере образовательной программы в форме внеурочной деятельности от компании «Профилум»
Измерение информации
Прежде чем перейти к переменным и их типам, нужно вспомнить школьный курс информатики, а именно – как хранятся данные в “цифровом” мире. Любая память состоит из элементарных ячеек, которые имеют всего два состояния: 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) может принимать только два значения: true (истина) и false (ложь).
Такой тип, как правило, используется для хранения значений да/нет: true значит «да, правильно», а false значит «нет, не правильно».
Например:
let nameFieldChecked = true; // да, поле отмечено
let ageFieldChecked = false; // нет, поле не отмечено
Булевые значения также могут быть результатом сравнений:
let isGreater = 4 > 1;
alert( isGreater ); // true (результатом сравнения будет "да")
Мы рассмотрим булевые значения более подробно в главе Логические операторы.
Типы данных
Переменные разных типов имеют разные особенности и позволяют хранить числа в разных диапазонах.
Название | Альт. название | Вес | Диапазон | Особенность |
boolean | bool | 1 байт * | 0 или 1, true или false | Логический тип |
char | – | 1 байт | -128… 127 | Символ (точнее его код) из таблицы 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 байта | 1.175E-38.. 3.402E+38 | Числа с плавающей точкой, точность: 6-7 знаков |
double | – | 4/8 байт | 2.225E-308.. 1.797E+308 | Для AVR то же самое, что float .На ESP и прочих 32-бит МК – 8 байт, точность – 15-16 знаков |
– | int64_t | 8 байт *** | -(2^64)/2… (2^64)/2-1 | Целые числа |
– | uint64_t | 8 байт *** | 2^64-1 | Целые числа |
- (*) – да,
bool
занимает 1 байт (8 бит), так как это минимальная адресуемая ячейка памяти. Есть способы запаковать логические переменные в 1 бит, о них поговорим в другом уроке. - (**) – на ESP8266/ESP32
int
иunsigned int
занимает 4 байта, то есть является аналогами типовlong
иunsigned long
! - (***) – Компилятор также поддерживает 64 битные числа. Стандартные Arduino-библиотеки с переменными этого типа не работают, поэтому можно использовать только в своём коде.
Целочисленные типы
Переменные целочисленных типов нужны для хранения целых чисел. В своей программе рекомендуется использовать альтернативное название типов (второй столбец в таблице выше), потому что:
- Проще ориентироваться в максимальных значениях
- Легче запомнить
- Название более короткое
- Проще изменить один тип на другой
- Размер переменной задан жёстко и не зависит от платформы (например
int
на AVR это 2 байта, а на esp8266 – 4 байта)
Максимальные значения хранятся в константах, которые можно использовать в коде. Иногда это помогает избавиться от лишних вычислений:
UINT8_MAX
– 255INT8_MAX
– 127UINT16_MAX
– 65 535INT16_MAX
– 32 767UINT32_MAX
– 4 294 967 295INT32_MAX
– 2 147 483 647UINT64_MAX
– 18 446 744 073 709 551 615INT64_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-строки.
Дробные числа
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 чисел и работу с ними мы рассмотрим в уроках про математические операции и условия.
Оператор static_cast
Если вы хотите вывести символы в виде цифр, а не в виде букв, то вам нужно сообщить cout выводить переменные типа char в виде целочисленных значений. Не очень хороший способ это сделать — присвоить переменной типа int переменную типа char и вывести её:
#include <iostream> int main() { char ch(97); int i(ch); // присваиваем значение переменной ch переменной типа int std::cout << i << std::endl; // выводим значение переменной типа int return 0; } |
Результат:
97
Лучшим способом является конвертация переменной из одного типа данных в другой с помощью оператора static_cast.
Синтаксис static_cast выглядит следующим образом:
static_cast<новый_тип_данных>(выражение)
Оператор static_cast принимает значение из (выражения) в качестве входных данных и конвертирует его в указанный вами <новый_тип_данных>.
Пример использования оператора static_cast для конвертации типа char в тип int:
#include <iostream> int main() { char ch(97); std::cout << ch << std::endl; std::cout << static_cast<int>(ch) << std::endl; std::cout << ch << std::endl; return 0; } |
Результат выполнения программы:
a
97
a
Запомните, static_cast принимает (выражение) в качестве входных данных. Если мы используем переменную в (выражении), то эта переменная изменяет свой тип только в стейтменте с оператором static_cast. Процесс конвертации никак не влияет на исходную переменную с её значением! В вышеприведенном примере, переменная ch остается переменной типа char с прежним значением, чему является подтверждением последний стейтмент с cout.
Также в static_cast нет никакой проверки по диапазону, так что если вы попытаетесь использовать числа, которые будут слишком большие или слишком маленькие для конвертируемого типа, то произойдет переполнение.
Более подробно о static_cast мы еще поговорим на соответствующем уроке.
Оператор typeof
Оператор typeof возвращает тип аргумента. Это полезно, когда мы хотим обрабатывать значения различных типов по-разному или просто хотим сделать проверку.
У него есть две синтаксические формы:
- Синтаксис оператора:
typeof x
. - Синтаксис функции:
typeof(x)
.
Другими словами, он работает со скобками или без скобок. Результат одинаковый.
Вызов typeof x возвращает строку с именем типа:
typeof undefined // "undefined"
typeof 0 // "number"
typeof 10n // "bigint"
typeof true // "boolean"
typeof "foo" // "string"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
Последние три строки нуждаются в пояснении:
Math
— это встроенный объект, который предоставляет математические операции и константы. Мы рассмотрим его подробнее в главе Числа. Здесь он служит лишь примером объекта.- Результатом вызова
typeof null
является"object"
. Это официально признанная ошибка вtypeof
, ведущая начало с времён создания JavaScript и сохранённая для совместимости. Конечно,null
не является объектом. Это специальное значение с отдельным типом. - Вызов
typeof alert
возвращает"function"
, потому чтоalert
является функцией. Мы изучим функции в следующих главах, где заодно увидим, что в JavaScript нет специального типа «функция». Функции относятся к объектному типу. Ноtypeof
обрабатывает их особым образом, возвращая"function"
. Так тоже повелось от создания JavaScript. Формально это неверно, но может быть удобным на практике.
Объекты и символы
Тип object (объект) – особенный.
Все остальные типы называются «примитивными», потому что их значениями могут быть только простые значения (будь то строка, или число, или что-то ещё). В объектах же хранят коллекции данных или более сложные структуры.
Объекты занимают важное место в языке и требуют особого внимания. Мы разберёмся с ними в главе Объекты после того, как узнаем больше о примитивах.
Тип symbol (символ) используется для создания уникальных идентификаторов в объектах. Мы упоминаем здесь о нём для полноты картины, изучим этот тип после объектов.
Рекомендуем продукты
-
Веб-дизайн 8-9 классы
Купить
-
Основы компьютерной анимации
Купить
-
Мультимедийный учебник. Физика
Купить
-
Программирование. Python. С++
Купить
-
Робототехника. Конструктор SPIKE и управление квадрокоптером
Купить
-
Технология. Робототехника. Копосов Д.Г. (5-9)
Купить
-
Компьютерная графика (8-9)
Купить
-
Технология. 3D-моделирование и прототипирование (7-8)
Купить
-
Робототехника. 2-4 классы
Купить
-
Аудиоприложения к учебникам
Купить
-
Информационная безопасность или на расстоянии одного вируса. 7-9 классы
Купить
-
Информационная безопасность. Правила безопасного Интернета. 2–4 класс
Купить
-
Информационная безопасность.Безопасное поведение в сети Интернет. 5–6 класс
Купить
-
Информационная безопасность. Кибербезопасность. 7–9 класс. Учебник
Купить
Значение «undefined»
Специальное значение undefined также стоит особняком. Оно формирует тип из самого себя так же, как и null.
Оно означает, что «значение не было присвоено».
Если переменная объявлена, но ей не присвоено никакого значения, то её значением будет undefined:
let age;
alert(age); // выведет "undefined"
Технически мы можем присвоить значение undefined любой переменной:
let age = 123;
// изменяем значение на undefined
age = undefined;
alert(age); // "undefined"
…Но так делать не рекомендуется. Обычно null
используется для присвоения переменной «пустого» или «неизвестного» значения, а undefined
– для проверок, была ли переменная назначена.
Объявление и инициализация
- Объявление переменной – резервирование ячейки памяти указанного типа на имя:
тип_данных имя;
- Присваивание – задание переменной значения при помощи оператора = (равно):
имя = значение;
- Инициализация переменной – объявление и присваивание начального значения:
тип_данных имя = значение;
Можно объявить и инициализировать несколько переменных через запятую:
byte myVal; int sensorRead = 10; byte val1, val2, val3 = 10;
- Переменная должна быть объявлена до использования, буквально выше по коду. Иначе вы получите ошибку Not declared in this scope – переменная не объявлена.
- Нельзя объявить две и более переменных с одинаковым именем в одной области определения.
Область видимости
Переменные, константы const и другие создаваемые пользователем данные имеют такое важное понятие, как область видимости. Она бывает глобальной и локальной.
Глобальная
Глобальная переменная:
- Объявляется вне функций, например просто в начале программы.
- Доступна для чтения и записи в любом месте программы.
- Находится в оперативной памяти на всём протяжении работы программы, то есть не теряет своё значение.
- При объявлении имеет нулевое значение.
byte var; // глобальная переменная void setup() { var = 50; } void loop() { var = 70; }
Локальная
Локальная переменная:
- Объявляется внутри любого блока кода, заключённого в
{ фигурные скобки }
. - Доступна для чтения и записи только внутри своего блока кода (и во всех вложенных в него).
- Находится в оперативной памяти с момента объявления и до закрывающей фигурной скобки, то есть удаляется из памяти и её значение стирается.
- При объявлении имеет случайное значение.
Важный момент: если имя локальной переменной совпадает с одной из глобальных, то приоритет обращения отдаётся локальной переменной (в её области определения).
byte var; // глобальная переменная void setup() { byte var; // локальная переменная var = 50; // меняем локальную var } void loop() { var = 70; // меняем глобальную var }
Строка
Строка (string) в JavaScript должна быть заключена в кавычки.
let str = "Привет";
let str2 = 'Одинарные кавычки тоже подойдут';
let phrase = `Обратные кавычки позволяют встраивать переменные ${str}`;
В JavaScript существует три типа кавычек.
- Двойные кавычки:
"Привет"
. - Одинарные кавычки:
'Привет'
. - Обратные кавычки:
`Привет`
.
Двойные или одинарные кавычки являются «простыми», между ними нет разницы в JavaScript.
Обратные же кавычки имеют расширенную функциональность. Они позволяют нам встраивать выражения в строку, заключая их в ${…}
. Например:
let name = "Иван";
// Вставим переменную
alert( `Привет, ${name}!` ); // Привет, Иван!
// Вставим выражение
alert( `результат: ${1 + 2}` ); // результат: 3
Выражение внутри ${…}
вычисляется, и его результат становится частью строки. Мы можем положить туда всё, что угодно: переменную name
, или выражение 1 + 2
, или что-то более сложное.
Обратите внимание, что это можно делать только в обратных кавычках. Другие кавычки не имеют такой функциональности встраивания!
alert( "результат: ${1 + 2}" ); // результат: ${1 + 2} (двойные кавычки ничего не делают)
Мы рассмотрим строки более подробно в главе Строки.
Нет отдельного типа данных для одного символа.
В некоторых языках, например C и Java, для хранения одного символа, например “a” или “%”, существует отдельный тип. В языках C и Java это char.
В JavaScript подобного типа нет, есть только тип string. Строка может содержать ноль символов (быть пустой), один символ или множество.
Статические переменные
Вспомним, как работает обычная локальная переменная: при входе в свой блок кода локальная переменная создаётся заново, а при выходе – удаляется из памяти и теряет своё значение. Если локальная переменная объявлена как 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.
Попробуй свои силы в тренажере
Уровень для начинающих исследователей
Пройти
Уровень для опытных специалистов
Пройти
Уровень для закаленных профессионалов
Пройти
Хочешь узнать больше о кибербезопасности, научиться распознавать фишинговые сайты, создавать по-настоящему надежные пароли, защитить все свои аккаунты и данные от кражи и многое другое? Погружайся в мир безопасности с «Лабораторией Касперского».
«Урок цифры» — это не просто всероссийский образовательный проект!
«Урок цифры» — это возможность получить знания от ведущих технологических компаний: Фирмы «1С», Яндекса, Лаборатории Касперского, Кодвардса и Mail.Ru Group, а также Академии искусственного интеллекта благотворительного фонда Сбербанка «Вклад в будущее».
О проекте «Урок цифры»
«Урок цифры» — это всероссийский образовательный проект, позволяющий учащимся получить знания от ведущих технологических компаний и развить навыки и компетенции цифровой экономики. «Уроки цифры» адаптированы к дистанционной работе и дают возможность школьникам узнать о важности развития цифровых навыков, проявить себя и познакомиться с основами программирования в доступной и увлекательной форме, а учителям и родителям повысить интерес школьников к информационным технологиям с помощью современных игровых и интерактивных подходов в обучении.
Занятия на тематических тренажёрах проекта «Урок цифры» реализованы в виде увлекательных онлайн-игр для трёх возрастных групп — учащихся младшей, средней и старшей школы. В любое время на сайтеурокцифры.рф доступны для прохождения Уроки по персональным помощникам и чат-ботам, сетям и облачным технологиям, большим данным и безопасности в интернете. Урок по теме: «Искусственный интеллект и машинное обучение», запланированный на конец этого учебного года, перенесен на 2020/21 учебный год в связи с пандемией.
Проект «Урок цифры» расширил свою географию в 2019/2020 учебном году – учащиеся из 95 стран прошли тренажеры от ведущих российских компаний цифровой экономики.
Интересные факты:
– «Урок цифры» прошел на всех континентах (кроме, пока что, Антарктиды)
– Ученики из всех стран-участниц ЕАЭС приняли участие в «Уроке цифры» помимо России, это Армения, Белоруссия, Казахстан и Киргизия.
– В топ-20 стран вошли Франция, Швеция, Таиланд, Япония, Великобритания, Молдавия, США, Германия, Вьетнам и Турция.
– География «Урока цифры» растянулась от Мексики до Японии.
– За два года в России дети, родители и учителя обратились к урокам, доступным на сайте проекта, более 25 млн раз.
Справка
Инициаторы «Урока цифры» — Министерство просвещения РФ, Министерство цифрового развития, связи и массовых коммуникаций РФ и АНО «Цифровая экономика». Задачами проекта являются развитие у школьников цифровых компетенций и ранняя профориентация: уроки помогают детям сориентироваться в мире профессий, связанных с компьютерными технологиями и программированием. Партнёрами проекта в 2019/20 учебном году выступают компании «Яндекс», «1С» и Mail.ru Group, «Лаборатория Касперского» и благотворительный фонд Сбербанка «Вклад в будущее». Технологические партнеры — образовательная платформа «Кодвардс» и международная школа математики и программирования «Алгоритмика».
Ч
На протяжении своей истории человечество искало способы облегчить выполнение рутинных задач. Раньше для перемещения (как товаров, так и людей) использовали животных, потом появились поезда, машины, самолёты. Во всех этих случаях для управления транспортом требуется участие человека. Развитие информационных технологий и приборостроения сделало возможным передачу функций человека, который осуществляет управление транспортным средством, компьютеру. Именно этой инновационной теме посвящён «Урок Цифры» от компании Яндекс, которая уже сейчас разрабатывает, тестирует и использует собственные технологии беспилотного управления транспортом.
На уроке ученики узнают, как беспилотные автомобили определяют своё местонахождение, как распознают окружающие объекты, предсказывают их поведение и планируют свой маршрут.
Ученики познакомятся с техническими деталями реализации этой технологии. Узнают про сенсоры (лидары, радары, видеокамеры),которые помогают беспилотным автомобилям «видеть» окружающий мир. Узнают, как новейшие технологии помогают управлять беспилотным автомобилем безопасно, следуя правилам дорожного движения и учитывая обстановку на дороге.
При помощи онлайн-тренажёров ученики могут закрепить полученные знания на практике. Например, в одном из заданий тренажёра школьник сможет почувствовать себя «беспилотным автомобилем», задача которого — добраться из точки «А» в точку «Б», преодолевая разные дорожные ситуации. После прохождения тренажёра ученики (5–11 кл.) могут узнать про профессии, представители которых трудятся над созданием беспилотного транспорта.
BigInt
В JavaScript тип number не может безопасно работать с числами, большими, чем (253-1) (т. е. 9007199254740991) или меньшими, чем -(253-1) для отрицательных чисел. Технически, тип number может хранить и гораздо большие значения (вплоть до 1.7976931348623157 * 10308), однако за пределами безопасного диапазона ±(253-1) многие из чисел не могут быть представлены с помощью этого типа данных из-за ограничений, вызванных внутренним представлением чисел в двоичной форме. Например, нечётные числа, большие, чем (253-1), невозможно хранить при помощи типа number, они с разной точностью будут автоматически округляться до чётных значений. В то же время некоторые чётные числа, большие, чем (253-1), при помощи типа number хранить технически возможно (однако не стоит этого делать во избежание дальнейших ошибок).
Для большинства случаев достаточно безопасного диапазона чисел от -(253-1) до (253-1). Но иногда нам нужен диапазон действительно гигантских целых чисел без каких-либо ограничений или пропущенных значений внутри него. Например, в криптографии или при использовании метки времени («timestamp») с микросекундами.
Тип BigInt был добавлен в JavaScript, чтобы дать возможность работать с целыми числами произвольной длины.
Чтобы создать значение типа BigInt, необходимо добавить n в конец числового литерала:
// символ "n" в конце означает, что это BigInt
const bigInt = 1234567890123456789012345678901234567890n;
Так как BigInt-числа нужны достаточно редко, мы рассмотрим их в отдельной главе BigInt. Ознакомьтесь с ней, когда вам понадобятся настолько большие числа.
Поддержка
В данный момент BigInt поддерживается только в браузерах Firefox, Chrome, Edge и Safari, но не поддерживается в IE.
Размер, диапазон и знак типа сhar
В языке С++ для переменных типа char всегда выделяется 1 байт. По умолчанию, char может быть как signed, так и unsigned (хотя обычно signed). Если вы используете char для хранения ASCII-символов, то вам не нужно указывать знак переменной (поскольку signed и unsigned могут содержать значения от 0 до 127).
Но если вы используете тип char для хранения небольших целых чисел, то тогда следует уточнить знак. Переменная типа char signed может хранить числа от -128 до 127. Переменная типа char unsigned имеет диапазон от 0 до 255.
Спикеры
Серебрякова Татьяна Геннадьевна
первый заместитель главного редактора АО «Издательство «Просвещение»
Леонтович Александр Владимирович
канд. психол. наук, директор Университетской гимназии МГУ им. М. В. Ломоносова, председатель Межрегионального движения творческих педагогов «Исследователь», председатель Всероссийского конкурса юношеских исследовательских работ им. В. И. Вернадского, Федеральный эксперт сервиса «Лаборатория проектов»
Карданова Елена Юрьевна
канд. физ.-мат. наук, директор центра психометрики и измерений в образовании, Институт образования НИУ ВШЭ
Самсонова Ольга Юрьевна
методист-эксперт ГК «Просвещение»
Кисляков Алексей Вячеславович
канд. пед. наук, заведующий кафедрой воспитания и дополнительного образования ГБУ ДПО «Челябинский институт переподготовки и повышения квалификации работников образования» , доцент, почетный работник общего образования РФ
Глаголева Юлия Игоревна
канд. пед. наук, проректор по методической работе АППО, г. Санкт-Петербург
Плечова Ольга Гарриевна
канд. хим. наук, ведущий методист ГК «Просвещение»
Шалыгин Николай Леонидович
образовательный эксперт, директор учебного центра «МАЯК», опыт работы в сфере более 6 лет
Зубкова Екатерина Дмитриевна
ведущий методист ГК «Просвещение»
Черненко Дмитрий Витальевич
ведущий методист ГК «Просвещение»
Ускова Ирина Владимировна
канд. пед. наук, ученый секретарь ФГБНУ «Институт стратегии развития образования РАО», автор научных изданий и учебных пособий для учителей русского языка и литературы
Уткина Олеся Александровна
учитель обществознания и истории, руководитель Методического центра гимназии Сколково
Ефременкова Ирена Игоревна
канд. психол. наук, методист ГБОУ г. Москвы «Школа №444»
Карацуба Ольга Владимировна
педагогический дизайнер ГК «Просвещение»
Челяденкова Мария Игоревна
продуктолог образовательных проектов, со-основатель бизнес-школы Fashion Factory School, партнер агентства Thesis
Игушева Ирина Александровна
руководитель проектов Центра начального образования ГК «Просвещение»
Киселёва Татьяна Сергеевна
практический психолог, канд. психол. наук, руководитель отдела разработок международной сети детских центров развития эмоционального интеллекта «ЭИ дети», профессиональный опыт более 15 лет в области разработки и методического сопровождения программ развития эмоционального интеллекта детей и взрослых
Сидоренкова Мария Евгеньевна
руководитель цифровых проектов ГК «Просвещение»
Гамидова Джума Магомедрасуловна
заведующая кафедрой дисциплин социально-гуманитарного цикла в онлайн-школе «Дом Знаний»
Татаренко Павел Сергеевич
экс-министр образования Новгородской области, директор по взаимодействию с органами государственной власти в компании Профилум
Гладенкова Светлана Наумовна
канд. физ.-мат. наук, руководитель цифровых проектов центра физики и астрономии издательства «Просвещение», доцент кафедры теоретической физики им. Э.В.Шпольского МПГУ
Число
Числовой тип данных (number) представляет как целочисленные значения, так и числа с плавающей точкой.
Существует множество операций для чисел, например, умножение *, деление /, сложение +, вычитание – и так далее.
Кроме обычных чисел, существуют так называемые «специальные числовые значения», которые относятся к этому типу данных: Infinity, -Infinity и NaN.
Infinity представляет собой математическую бесконечность ∞. Это особое значение, которое больше любого числа.
Мы можем получить его в результате деления на ноль:
alert( 1 / 0 ); // Infinity
Или задать его явно:
alert( Infinity ); // Infinity
NaN означает вычислительную ошибку. Это результат неправильной или неопределённой математической операции, например:
alert( "не число" / 2 ); // NaN, такое деление является ошибкой
Значение NaN «прилипчиво». Любая математическая операция с NaN возвращает NaN:
alert( NaN + 1 ); // NaN alert( 3 * NaN ); // NaN alert( "не число" / 2 - 1 ); // NaN
Если где-то в математическом выражении есть NaN, то оно распространяется на весь результат (есть только одно исключение: NaN ** 0 равно 1).
Математические операции – безопасны
Математические операции в JavaScript «безопасны». Мы можем делать что угодно: делить на ноль, обращаться с нечисловыми строками как с числами и т.д.
Скрипт никогда не остановится с фатальной ошибкой (не «умрёт»). В худшем случае мы получим NaN как результат выполнения.
Специальные числовые значения относятся к типу «число». Конечно, это не числа в привычном значении этого слова.
Подробнее о работе с числами мы поговорим в главе Числа.
Итого
В JavaScript есть 8 основных типов данных.
- Семь из них называют «примитивными» типами данных:
number
для любых чисел: целочисленных или чисел с плавающей точкой; целочисленные значения ограничены диапазоном±(253-1)
.bigint
для целых чисел произвольной длины.string
для строк. Строка может содержать ноль или больше символов, нет отдельного символьного типа.boolean
дляtrue
/false
.null
для неизвестных значений – отдельный тип, имеющий одно значениеnull
.undefined
для неприсвоенных значений – отдельный тип, имеющий одно значениеundefined
.symbol
для уникальных идентификаторов.
- И один не является «примитивным» и стоит особняком:
object
для более сложных структур данных.
Оператор typeof позволяет нам увидеть, какой тип данных сохранён в переменной.
- Имеет две формы:
typeof x
илиtypeof(x)
. - Возвращает строку с именем типа. Например,
"string"
. - Для
null
возвращается"object"
– это ошибка в языке, на самом деле это не объект.
В следующих главах мы сконцентрируемся на примитивных значениях, а когда познакомимся с ними, перейдём к объектам.
Что использовать
Вы могли заметить, что в последнем примере мы использовали \n для перемещения курсора на следующую строку. Но мы могли бы использовать и std::endl. Какая между ними разница? Сейчас разберемся.
При использовании std::cout, данные для вывода могут помещаться в буфер, т.е. std::cout может не отправлять данные сразу же на вывод. Вместо этого он может оставить их при себе на некоторое время (в целях улучшения производительности).
И \n, и std::endl оба переводят курсор на следующую строку. Только std::endl еще гарантирует, что все данные из буфера будут выведены, перед тем, как продолжить.
Так когда же использовать \n, а когда std::endl?
Используйте std::endl, когда нужно, чтобы ваши данные выводились сразу же (например, при записи в файл или при обновлении индикатора состояния какого-либо процесса). Обратите внимание, это может повлечь за собой незначительное снижение производительности, особенно если запись на устройство происходит медленно (например, запись файла на диск).
Используйте \n во всех остальных случаях.
Ответ или решение1
program zz1;var s, n, k:integer; // задаем переменные целого типаbeginwrite(‘ введите число ‘);read(n); // вводим с клавиатуры числоs:=0; // задаем начальное значение для количестваwhile n > 0 do // организуем цикл, пока в заданном числе есть цифрыbegink:=n mod 10; // получаем последнюю цифру заданного числаs:=s + 1; // считаем ееn:=n div 10; // отбрасываем ее из числаend;// выводим ответwriteln(‘ количество цифр числа = ‘, s);end.
Знаешь ответ?
Как написать хороший ответ?Как написать хороший ответ?
Будьте внимательны!
- Копировать с других сайтов запрещено. Стикеры и подарки за такие ответы не начисляются. Используй свои знания. 🙂
- Публикуются только развернутые объяснения. Ответ не может быть меньше 50 символов!
Вывод символов
При выводе переменных типа char, объект cout выводит символы вместо цифр:
#include <iostream> int main() { char ch(97); // несмотря на то, что мы инициализируем переменную ch целым числом std::cout << ch << std::endl; // cout выводит символ return 0; } |
Результат:
a
Также вы можете выводить литералы типа char напрямую:
std::cout << ‘b’ << std::endl; |
Результат:
b