Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TP_6W.DOC
Скачиваний:
15
Добавлен:
07.06.2015
Размер:
319 Кб
Скачать
☆

11. Структура процедуры и функции.

Процедуры и функции, известные под общим именем как подпрограммы могут быть описаны в любом месте программы, но до тела главной программы. Формат процедур:

Procedure имя процедуры (параметры);

Label

Метки;

Const

Объявление констант;

Type

Объявление типов данных;

Var

Объявление переменных;

Procedure, function;

Begin

Тело главной процедуры;

End.

Функции имеют такой же формат, как и процедуры, только они начинаются с заголовка function и заканчиваются типом данных возвращаемого значения:

Function имя функции (параметры): тип данных;

Имеются только два различия между программами, процедурами и функциями:

  • процедуры и функции имеют заголовок procedure или function, соответственно, а не program;

  • процедуры и функции заканчиваются точкой с запятой (;), а не точкой (.).

Процедуры и функции могут иметь описание своих констант, типов данных, переменных и свои процедуры и функции. Но все эти элементы могут быть использованы только в тех процедурах и функциях, где они объявлены.

12. Пример программы.

Рассмотрим версию программы DORATIO, в которой используются процедура получения двух значений и функция, определяющая их отношение:

Program DoRatio;

Var

A, B: Integer;

Ratio: Real;

Procedure GetData (var X, Y: Integer);

Begin

Writeln (‘Введите два числа:’);

Readln (X, Y);

End;

Function GetRatio (I, J: Real);

Begin

GetRatio := I / J;

End;

Begin

GetData (A, B);

Ratio:= GetRatio (A, B);

Writeln (‘Отношение равно’, Ratio);

End.

Это, конечно, не улучшение первоначальной программы, так как она имеет большой размер и медленнее выполняется. Но она показывает как используются и работают процедуры и функции.

После компиляции и запуска программы первым выполняется оператор GetData (A, B). Этот тип оператора известен как вызов процедуры. При обработке вызова выполняются операторы в GetData, при этом X и Y (формальные параметры) заменяются на А и В (фактические параметры). Ключевое слово var перед X и Y в операторе вызова GetData говорит о том, что фактические переменные должны быть переменными и что значения переменных могут быть известны и возвращены вызывающей программе. При завершении работы GetData управление возвращается в главную программу на опрератор, следующий за вызовом GetData.

Следующий оператор – вызов функции GetRatio. Отметим некоторые отличия. Во-первых, GetRatio возвращает значение, которое должно быть использовано; в этом случае оно присваивается Ratio. Во-вторых, значение присваивается GetRatio в главной программе, этим функция определяет, какое значение возвращается. В-третьих, нет ключевого слова var перед формальными параметрами I и J. Это означает, что они могут быть любыми целочисленными выражениями, такими как Ratio:= GetRatio (A+B, 300); и что если даже их значения будут изменены в функции, то новые значения не возвратятся обратно в вызывающую программу. Кстати, это не является отличием процедуры от функции. Можно использовать оба типа параметров для обоих типов программ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]