Глава 2. Итоговый тест

   ⁄ 

 Обновлено 18 Фев 2017

  ⁄   

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

Теория

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

Типы данных с плавающей точкой (floating point) используются для хранения вещественных чисел. Не забывайте о проблемах точности, ошибках округления и неточном сравнении чисел.

Логический тип данных (boolean) может хранить только true или false. В нем нет каких-либо серьезных проблем.

Символьный тип данных (char) содержит целые числа, которые могут интерпретироваться в символы, соответствующие стандарту ASCII. Будьте осторожны при использовании фактических чисел и цифр, которые используются для представления символов. Также помните о проблемах переполнения и деления.

Используйте ключевое слово const для объявления символических констант вместо директив #define. Это безопаснее.

Задание №1

Почему символьные константы лучше литеральных (магических чисел)? Почему использование const лучше директив #define?

Ответ 1

Использование литеральных констант (магических чисел) не только усложняет программу, но и затрудняет внесение изменений. Символьные константы лучше тем, что они предоставляют контекст того, зачем они и для чего, также если понадобится внести изменения — достаточно будет внести правки только в объявлении константы, а не рыскать по всему коду. Константы #define не отображаются в отладчике, вероятность конфликта имен у них выше.

Задание №2

Выберите подходящий тип данных для переменных в каждой из следующих ситуаций. Будьте как можно более конкретным. Если ответом является целочисленный тип, выбирайте соответствующий диапазону тип с фиксированным размером (например, int16_t). Если переменная должна быть константной, так и пишите.

а) Возраст пользователя (в годах)
б) Нравится ли этот цвет пользователю?
в) Число Пи (3.14159265)
г) Количество страниц в учебнике
д) Цена акции в долларах (дробь присутствует)
е) Сколько раз вы моргнули за всю свою жизнь? (Примечание: ответ в миллионах)
ж) Пользователь выбирает опцию в меню с помощью ввода определенной буквы

Ответ 2

а) int8_t не сможет хранить возраст человека, старше 127. Несмотря на то, что, таких случаев в мире единицы (если есть вообще), в будущем это может быть вполне возможно. Так что int16_t  здесь подойдет лучше 🙂

б) bool

в) const double

г) Так как в большинстве книг больше чем 255 страниц, но меньше чем 32767, то int16_t — наилучший вариант.

д) float

е) int32_t

ж) char

Задание №3

Напишите следующую программу: Сначала пользователю предлагается ввести 2 числа типа с плавающей точкой (используйте тип double). Затем предлагается ввести один из следующих математических символов: +, -, * или /. Программа проводит определенную математическую операцию между двумя числами, а затем выводит результат в консольное окно. Если пользователь ввел неверный символ — программа ничего не должна выводить.

Например:

Enter a double value: 7
Enter a second double value: 5
Enter one of the following: +, -, *, or /: *
7 * 5 is 35

Подсказка 1: Вы можете использовать ветвление if для того, чтобы определить, ввел ли пользователь определенный математический символ (например, +) или нет. Детальнее об этом в уроке 34.

Ответ 3

Задание №4

Это уже немного сложнее. Напишите короткую программу-симулятор падения мячика с высоты башни. Сначала пользователю предлагается ввести высоту башни в метрах. Помните о гравитации (9,8м/с2) и о том, что у мячика нет начальной скорости (он держится в руках). Программа должна выводить расстояние от земли, на котором находится мячик после 0, 1, 2, 3, 4 и 5 секунд падения. Минимальная высота – 0 метров, ниже мячику падать нельзя 🙂

В вашей программе должен быть заголовочный файл constants.h, в котором будет находиться пространство имен myConstants. В myConstants определите символьную константу для хранения значения силы тяжести на Земле (9.8). В качестве напоминания смотрите урок 37.

Напишите функцию для вычисления высоты мячика через х секунд падения. Используйте следующую формулу: высота мячика  = константа_гравитации * x_секунд2/2.

Пример выполнения программы:

Enter the initial height of the tower in meters: 100
At 0 seconds, the ball is at height: 100 meters
At 1 seconds, the ball is at height: 95.1 meters
At 2 seconds, the ball is at height: 80.4 meters
At 3 seconds, the ball is at height: 55.9 meters
At 4 seconds, the ball is at height: 21.6 meters
At 5 seconds, the ball is on the ground.

Примечание 1: В зависимости от начальной высоты, мячик может и не достичь земли в течение 5 секунд — это нормально. Мы усовершенствуем эту программу, когда будем рассматривать циклы.

Примечание 2: Символ ^ не является экспонентом в C++. В формуле, вместо него используйте знак умножения *.

Ответ 4

Файл constants.h:

Файл main.cpp:

Обратите внимание, функция calculateHeight() не выводит высоту в консольное окно (правило: функция должна выполнять одно и только одно задание). Мы используем другую функцию для вывода.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (11 оценок, среднее: 4,82 из 5)
Загрузка...
Поделиться в:
Подписаться на обновления:

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

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