Программа 6.1 демонстрирует основное достоинство модульного подхода: при
изменении деталей реализации в файле "averages.cpp" не обязательно вносить из-
менения в файл "averages.h" или в главный файл программы.
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 вещественных чисел. Среднеквадра-
тическое отклонение чисел r 1,..., r N определяется как корень из среднего значения
|
|
квадратов отклонений чисел от своего среднего:
Подсказки: (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, который будет рассматриваться в следующих лекциях).