_________________
80 стр. Часть 2. Становимся функциональными программистами
В этой главе...
►Написание и использование функций 81
►Определение прототипов функций 89
►Хранение переменных в памяти 90
►Использование заголовочных файлов 91
Очень часто при написании программ возникает необходимость разделить большую программу на меньшие части, отлаживать которые намного легче. Программы из предыдущих глав слишком малы, чтобы можно было по-настоящему оценить пользу такого разделения. Но реальные программы из больших проектов состоят из тысяч ( и даже миллионов! ) строк. Поэтому большие программы просто невозможно написать, не разбивая их на отдельные модули.
С++ позволяет разделить код программ на части, называемые функциями. Сами функции могут быть записаны и отлажены отдельно от остального кода программы.
Возможность разбивать программу на части с последующей отладкой каждой функции в отдельности существенно снижает сложность создания больших программ. Этот подход является, по сути, простейшей формой инкапсуляции ( см. главу 15, "Защищённые члены класса: не беспокоить!", где вопросы инкапсуляции рассматриваются подробнее. )
►Написание и использование функций...81
Функции лучше всего изучать на примерах. Эта часть начинается с программы FunctionDemo, которая показывает, как упростить рассмотренную в главе 5 программу NestDemo, определив дополнительную функцию. На примере программы FunctionDemo я постараюсь объяснить, как определять и использовать функции. Эта программа будет служить образцом для их дальнейшего изучения.
NestDemo содержит два цикла. Во внутреннем цикле суммируется последовательность введённых пользователем чисел. Он включён во внешний цикл, который повторяет процесс, пока пользователь не изъявит желания его прекратить. Разделение этих двух циклов делает программу более наглядной.
В программе FunctionDemo показано, как упростить программу NestDemo с помощью создания функции sumSequence( ).
_________________
81 стр. Глава 6. Создание функций
«Согласно синтаксису С++ справа от имени функции должны присутствовать две круглые скобки. В них обычно указываются параметры функций.»
[Советы]
/* FunctionDemo — демонстрация использования функций. */
/* Внутренний цикл программы оформлен как отдельная функция */
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std ;
/* sumSequence — суммирует последовательность чисел, введённых с клавиатуры, пока пользователь не введёт отрицательное число. Возвращает сумму введённых чисел */
int sumSequence( void )
{
/* Бесконечный цикл */
int accumulator = 0 ;
for ( ; ; )
{
/* Ввод следующего числа */
int value = 0 ;
cout << "Введите следующее число: " ;
cin >> value ;
/* Если оно отрицательное... */
if ( value < 0 )
{
/* ...тогда выходим из цикла */
break ;
}
/* ...иначе добавляем число к переменной accumulator */
accumulator = accumulator + value ;