Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
17.02.2016
Размер:
222.21 Кб
Скачать

Разбиение программы на модули

Программу можно разбить на несколько исходных файлов, которые называют модулями. Каждый из этих модулей можно компилировать отдельно, а затем объединить их все в процессе построения конечной программы. Процесс объединения отдельно скомпилированных модулей называется связыванием или компоновкой (linking).

Разделение программ на несколько небольших, удобных для редактирования

и управления частей имеет определенные преимущества. Во-первых, это уменьшает время компиляции. Большие программы требуют больше времени на компоновку.

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

Во-вторых, гораздо проще понимать, писать и отлаживать программу, состоящую из нескольких хорошо продуманных модулей, каждый из которых логически объединяет несколько связанных между собой функций. Крайне трудно разобраться в содержимом одного объемистого модуля, охватывающего все относящиеся к программе функции. Кроме того, по мере разрастания модуль становится все более запутанным и в результате его приходится неоднократно переписывать.

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

Программа FunctionDemo. cpp содержит следующий код:

// FunctionDemo — демонстрирует использование функций

// путем выделения внутреннего

// цикла программы NestedDemo

// в отдельную функцию

#include <stdio.h>

#include <iostream.h>

// sumSequence — суммирует последовательность введенных

// с клавиатуры чисел, пока

// не будет введено отрицательное число.

// Возвращает сумму введенных чисел

int sumSequence(void)

{

// Вечный цикл

int nAccumulator = 0 ;

for (;;)

{

// Ожидание следующего числа

int nValue = 0;

cout << "Введите следующее число: ";

cin ≫ nValue;

// Если число отрицательное...

if (nValue < 0)

{

// ...тогда выполнить выход из цикла

break;

// ...в противном случае добавить число

// к аккумулятору

nAccumulator = nAccumulator + nValue;

// вернуть сумму

return nAccumulator;

int main(int nArg, char* pszArgs[])

{

cout << "Эта программа суммирует последовательности \n"

<< "чисел. Ввод последовательности можно прекратить,\n"

<< "введя отрицательное число.\n"

<< "Остановить программу можно,\n"

<< "введя два отрицательных числа подряд\n";

// накопление последовательности чисел...

int nAccumulatedValue;

do

// сложить числа, введенные

// с клавиатуры

cout << "\nВведите следующую последовательность:";

nAccumulatedValue = sumSequence();

// вывести полученный результат

cout << "\nСумма равна "

<< nAccumulatedValue

≪ "\n";

// . . . п о к а сумма не равна 0

} while (nAccumulatedValue != 0 ) ;

cout << "Программа завершена\n";

r e t u r n 0;

Как и во многих других программах этой книги, в FunctionDemo суммируется последовательность введенных с клавиатуры чисел. Однако, в отличие от остальных программ, для сложения введенных чисел main () вызывает функцию sumSequence ().

Соседние файлы в папке С++