- •Разбиение программы на модули
- •Разделение функции FunctionDemo
- •Отделение модуля sumSequence ()
- •Создание модуля MainModule. Срр
- •Использование #include
- •Обратите внимание, что имена стандартных .H-файлов заключены в угловые
- •Программа Бюджет
- •Формат класса
- •Обращение к членам класса
- •Пример программы
- •Работа с классами
- •Добавление функции-члена
- •Вызов функций - членов
- •Доступ к членам из функции-члена
- •Именование текущего объекта
- •Разрешение области видимости
- •Перегрузка функций – членов
- •Защищенные члены класса
- •Защита внутреннего устройства класса
- •Зачем нужны конструкторы
- •Работа с конструкторами
Разбиение программы на модули
Программу можно разбить на несколько исходных файлов, которые называют модулями. Каждый из этих модулей можно компилировать отдельно, а затем объединить их все в процессе построения конечной программы. Процесс объединения отдельно скомпилированных модулей называется связыванием или компоновкой (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 ().