7. Сводка результатов
В данной лекции описано, как в Си++ можно создавать новые функции. Есть два способа передачи параметров внутрь функции: по значению и по ссылке. Функции облегчают применение процедурной абстракции при разработке программ методом "сверху вниз". При модульном подходе описание и реализация функций размещаются в отдельных файлах, в таком случае для вызова функции необходимо включать в текст программы заголовочный файл.
8. Упражнения
Упражнение 1
В программе из упражнения 2 лекции 2 (файл ex2_2.cpp) выделите 6 функций, имена и назначение которых перечислены ниже:
fahrenheit_of
Возвращает значение температуры по шкале Фаренгейта для переданного значения по шкале Цельсия.
absolute_value_of
Возвращает значение температуры в абсолютной шкале для переданного значения по шкале Цельсия.
print_preliminary_message
Печать сообщения, поясняющего назначение программы.
input_table_specifications
Запрос параметров таблицы с клавиатуры.
print_message_echoing_input
Повторное отображение параметров, введенных пользователем.
print_table
Печать таблицы температур.
Проверьте свою программу для различных исходных данных. В качестве контрольного примера можете использовать следующие выходные данные:
Эта программа печатает значения температур в разных шкалах.
Введите минимальное (целое) значение температуры
по Цельсию, которое будет в первой строке таблицы: 0
Введите максимальное значение температуры: 100
Введите разницу температур между соседними строками таблицы: 20
Преобразование значений температуры от 0 градусов Цельсия
до 100 градусов Цельсия, с шагом 20 градусов:
Цельсий Фаренгейт Абсолютная температура
0 32.00 273.15
20 68.00 293.15
40 104.00 313.15
... ... ...
... ... ...
100 212.00 485.15
Упражнение 2
Разделите программу из упражнения 1 на три файла:
1) главный файл программы;
2) заголовочный файл "conversions.h" с прототипами функций "fahrenheit_of(...)" и "absolute_value_of(...)";
3) файл реализации с определением этих двух функций.
Снова проверьте свою программу для различных исходных данных.
Упражнение 3
(а) Создайте заголовочный файл "statistics.h" и соответствующий файл реализации "statistics.cpp" с функциями "average(...)" и "standard_deviation(...)". Эти функции должны вычислять среднее значение и среднеквадратическое отклонение для последовательности из 1, 2, 3 или 4 вещественных чисел. Среднеквадратическое отклонение чисел r1, ..., rN определяется как корень из среднего значения квадратов отклонений чисел от своего среднего:
, где
Подсказки: (1) Примените средства перегрузки функций Си++. (2) Функции можно вызывать изнутри друг друга. (3) Максимально используйте возможности текстового редактора по копированию фрагментов исходного текста.
(б) Напишите тестовую программу для проверки функций из файла "statistics.h", которая в цикле запрашивает исходные данные до тех пор, пока пользователь не сообщит о завершении работы (некоторым специально оговоренным числом). Ваша тестовая программа должна выдавать на экран сообщения, подобные приведенным ниже:
Эта программа предназначена для тестирования функций из
заголовочного файла "statistics.h".
Сколько чисел будет в тестовой последовательности – 1, 2, 3
или 4? (для завершения работы введите 0): 3
Введите первое число: 5
Введите второе число: 7
Введите третье число: 9
Среднее значение: 7. Среднеквадратическое отклонение: 1.63299.
Сколько чисел будет в тестовой последовательности – 1, 2, 3
или 4? (для завершения работы введите 0): 1
Введите первое число: 5.8
Среднее значение: 5.8. Среднеквадратическое отклонение: 0.
Сколько чисел будет в тестовой последовательности – 1, 2, 3
или 4? (для завершения работы введите 0): 8
Извините, но эта программа может работать только с 1, 2, 3
или 4-мя числами.
Сколько чисел будет в тестовой последовательности – 1, 2, 3
или 4? (для завершения работы введите 0): 0
Программа тестирования функций из заголовочного файла
"statistics.h" завершила работу.
Подсказки: (1) Разрабатывайте свою программу методом "сверху вниз ". Начните с написания короткой главной функции, в которой вызываются функции-заглушки, например, "test_three_values()". Детали этих функций вы уточните позже, после отладки функции "main()". (2) В качестве высокоуровневой структуры программы вы можете использовать цикл for с пустым разделом инициализации и пустым оператором изменения значений (эквивалент цикла while, который будет рассматриваться в следующих лекциях).
|