Перейти к содержимому
Topos Uranos

Краткое содержание

Этот урок открывает второй раздел курса, посвящённый данным и их типам. Он объясняет, для чего нужен раздел: показать, что любые данные программы живут в памяти вместе с типом, который определяет, какие значения они могут принимать, сколько места занимают и какие операции допускают, и что у этих ограничений есть наблюдаемые последствия; представляет четыре урока раздела и нить, которая их связывает, от переменной как ячейки с именем и значением до преобразований между типами и констант; напоминает, что раздел считает известным из первого, а именно умение написать, скомпилировать и запустить программу, которая считывает и выводит данные; формулирует задачу, которую решает раздел, то есть задачу программы, с виду правильной, чьи вычисления не совпадают с вычислениями математики, начиная с суммы 0.1+0.20.1 + 0.2, которая в компьютере не равна в точности 0.30.3; и показывает, куда раздел ведёт: к следующим разделам и к курсу «Программирование на C++ II».

Цели обучения

  1. Описывать последовательность содержания раздела и объяснять, что каждый урок даёт уроку, который идёт за ним.
  2. Вспоминать необходимое из раздела 1 (цикл компиляции и запуска, форматированный вывод, чтение с помощью std::cin и чтение сообщений компилятора) и при необходимости повторять это.
  3. Объяснять на примере, почему число в программе не является числом математики, и предвидеть, почему 0.1+0.20.1 + 0.2 в компьютере не равно в точности 0.30.3.
  4. Понимать, что ожидается уметь к концу раздела, и отличать это от того, что будет изучено в следующих разделах.

Входная проверка

Прежде чем проходить раздел, полезно определить исходный уровень. Эта проверка является самопроверкой: она не оценивается, и её единственная цель состоит в том, чтобы направить занятия. Первые четыре вопроса касаются того, что раздел считает известным из первого: выполнения процедуры шаг за шагом, записи числа с двумя знаками после запятой, округления и чтения сообщения об ошибке. Следующие шесть в порядке уроков касаются центральных идей раздела. Никто не обязан пока отвечать на них верно, а в одном из них «пока не знаю» является честным ответом: каждый ответ, верный или нет, объясняет суть дела и называет урок, где она разбирается. Те же умения измеряются снова в конце, в уроке итогов.

Входная проверка

Перед началом раздела оцени свою отправную точку. Это короткая самопроверка: она не оценивается, а результат хранится только в твоём браузере.

  1. Вопрос 1Из предыдущих разделовПроцедура гласит: «1. rr принимает значение 17. 2. rr принимает значение r−5r - 5. 3. rr принимает значение r−5r - 5». Чему равно rr в конце?

  2. Вопрос 2Из предыдущих разделовЧто выводит инструкция std::println("{:.2f}", 2.0 / 3);?

  3. Вопрос 3Из предыдущих разделовНужно записать 12.34612.346 с двумя знаками после запятой, с округлением. Что получится?

  4. Вопрос 4Из предыдущих разделовВ строке 5 программы стоит const int pages{12}, а в строке 6 std::println("{}", pages);. Компилятор пишет 6:5: error: expected ',' or ';' before 'std'. Где дефект?

  5. Вопрос 5Программа объявляет int a{2}; и int b{7};, а затем выполняет a = b; и b = 10;. Чему равно a в конце?

  6. Вопрос 6Как записывается число 13 по основанию 2?

  7. Вопрос 7int размером 4 байта хранит 2 147 483 6472\,147\,483\,647, своё максимальное значение, и программа прибавляет к нему 1. Что можно утверждать?

  8. Вопрос 8Имеет ли 1/31/3 конечную десятичную запись?

  9. Вопрос 9Что выводит std::println("{}", 0.1 + 0.2);?

  10. Вопрос 10Программа объявляет const double ratio{7 / 2}; и выводит ratio. Что появится?