Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / lect7.doc
Скачиваний:
9
Добавлен:
20.05.2014
Размер:
71.17 Кб
Скачать

7.4 Виды подпрограмм

Если программа большая и сделана в виде одной функции main, то ее трудно

составлять, отлаживать, тестировать и понимать. В ней могут присутствовать

повторяющиеся части. Поэтому для упрощения решения задачу делят на части и

для каждой части составляют алгоритм. Каждый алгоритм - это этап решения, и

ему соответствует независимая часть программы - подпрограмма.

Он должен легко пониматься, читаться и модифицироваться.

Текст главной функции mainобъединяет подпрограммы.

Подпрограммы упрощают программирование. Чем короче и яснее подпрограммы,

тем выше качество программы. Использование подпрограмм - правило хорошего

тона. Считается, что размер их не должен превышать 1-2 экранов.

В программной документации обычно приводится структурная схема

программы, в который каждой подпрограмме соответствует прямоугольник

стандартного размера с именем подпрограммы или цифрой. Вся схема имеет

вид иерархической структуры со связями по горизонтали и вертикали

(см. рис. 7.1). Для подпрограмм, описанных в других документах, например,

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

чертами.

main

Рис. 7.1. Структурная схема программы из 6 подпрограмм

В предшествующих лекция по С++ указывалось, что все подпрограммы

делятся на 3 вида:

main (. . .) - это главная функция, т.е. основная подпрограмма,

имя (. . . ) - это функция.

void имя (. . . ) - это функция, не возвращающая значения,

и поэтому называемая иногда процедурой.

ОСНОВНЫЕ ПРАВИЛА

  1. Любая программа содержит одну главную функцию main

и ноль или более других функций.

  1. В тексте все функции записываются подряд и в любом порядке.

Каждая функция начинается после завершающей фигурной скобки }

предыдущей функции. Обычно между функциями вставляют

пустую строку или строку комментариев с каким-либо символом.

3. Вложение подпрограмм друг в друга в С++, в отличие от языка

Pascal, запрещено. (Каждая программа - это как бы "кирпичная стена",

где подпрограммы - это "кирпичи", а поставить кирпич в кирпич нельзя).

Пример текста с подпрограммами:

#include . . . . . .

. . . . . . . //(7.6)

#include . . . . . .

. . . . . . .

имя1 (. . . ) { . . . . . }

/ / - - - - - - - - - -

Void main ( ) { . . . . . }

/ / - - - - - - - - - -

имя3 (. . . ) { . . . . . }

/ / - - - - - - - - - -

имя4 (. . . ) { . . . . . }

Здесь показаны 4 функции, разделенные строками комментариев.

Количество операторов в теле каждой функции, т.е. в фигурных скобках,

может быть любым, но оно обычно невелико, что характерно для стиля

С++ . Это означает, что исходная сложная задача должна быть представлена в

виде множества компактных алгоритмов, т.е. для каждой функции свой алгоритм.

В курсовой работе должны использоваться функции с алгоритмами для каждой.

Каждая функция имеет вход и выход: вход - это её аргументы в скобках, а выход -

это значение имени функции по аналогии с обычной записью в математике f ( x,y).

Функции взаимодействуют парами. Рассмотрим одну из пар.

На рис. 7.2 F1 является вызывающей функцией , а F2 - вызываемой.

Вызывающая функция Вызываемая функция

Заголовок  int F1 ( ) double F2( int x, int y)  Заголовок

{ { . . . . . double z;

. . . z = x + y + exp(x);

Вызов F2 F2 ( a, b); z = sin(z);

. . . return z ; }  Возвращение

Вызов F2  p = F2 (c,d); значения F2

. . . . }

Рис. 7.2 Взаимодействие двух функций

В заголовке функции нет точки с запятой.

Тип функции должен быть описан. Если описание типа функции в заголовке

отсутствует, то полагается тип int.

Типы аргументов в заголовке описываются. Если передаваемых параметров нет,

то в заголовке и при вызове используются пустые скобки. Вместо пустых скобок ( ) можно написать ( void) .

Оператор return присваивает указанное (или полученное) в нем значение

имени функции, которое возвращается в вызывающую подпрограмму.

Например, при втором вызове F2 получим в функции F1

численное значение p = sin(c + d + exp(c)).

Если нет возвращаемого значения, то либо return отсутствует, либо используется

оператор return; без значения. Функции без указания значения после слова

return имеют тип void, см. также раздел 8.1.

________ Контрольная работа K3

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