Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод_указ_программирование_вариант_2014.doc
Скачиваний:
27
Добавлен:
12.05.2015
Размер:
982.53 Кб
Скачать

5.5.5 Предварительное описание подпрограммы

Подпрограмму (допустим, A) можно вызвать не только из основной программы, но и из любой другой подпрограммы (допустим,B) при условии, что объявление подпрограммыAрасположено выше, чем объявление подпрограммыB. В действительности данное условие не всегда является выполнимым. Обычно ограничения связаны с обеспечением более наглядной логической структуры программы, например, требуется, чтобы вначале располагались все подпрограммы, ответственные за ввод данных, за ними следовали подпрограммы, обеспечивающие все необходимые вычисления, а подпрограммы вывода результатов на экран располагались после всех предыдущих. Как в таком случае из подпрограммы ввода данных вызвать подпрограмму для проведения вычислений (ведь она расположена ниже)? Для разрешения подобных ситуаций применяется предварительное описание подпрограммы. В языкеPascalдля предварительного описания подпрограммы вместо тела подпрограммы указывается ключевое слово «forward». Пример:

procedure ProcA(S: string); forward; {Предварительное описание }

procedure ProcB(S: string);

begin

ProcA(S);{Процедура ProcA объявлена выше, поэтому ошибки не будет}

end;

procedureProcA;{Параметры не обязательно указывать еще раз }

begin

Writeln(S);{Будет напечатана строка «Hello!»}

end;

begin{Начало основной программы}

ProcB('Hello!');{Вызываем процедуру ProcB с аргументом 'Hello!' }

end.

5.5.6 Рекурсивный вызов подпрограммы

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

5.6. Варианты заданий

варианта

Функция

Начальное значение

Шаг

Конечное значение

1

1

0,1

3

2

2

0,2

4

3

3

0,5

5

4

4

0,1

6

5

5

0,2

7

6

6

0,5

8

7

7

0,1

9

8

8

0,2

10

9

9

0,5

11

10

10

0,1

12

11

11

0,2

13

12

12

0,5

14

13

13

0,1

15

14

14

0,2

16

15

15

0,5

17

16

16

0,1

18

17

17

0,2

19

18

18

0,5

20

19

19

0,1

21

20

20

0,5

22

5.7. Содержание отчета (см. П. 1.11)

5.8. Контрольные вопросы

1) Что называется подпрограммой?

2) Какова структура программы с подпрограммами?

3) Какова структура подпрограммы-процедуры?

4) Какова структура подпрограммы-функции?

5) В чем состоит различие и сходство процедур и функций?

6) Как осуществляется вызов процедур и функций?

7) Что называется параметром и каково его назначение?

8) Каково назначение формальных и фактических параметров и какова их взаимосвязь?

9) Опишите последовательность событий при вызове процедур или функций.

10) Для чего при отладке используется пошаговый режим с заходом в подпрограммы и как его осуществить?

11) В чем разница между способами передачи аргументов в подпрограмму «по значению» и «по ссылке»?

12) Чем отличаются локальные и глобальные переменные? Какова их область действия?