ПРОЦЕДУРЫ, ФУНКЦИИ И МОДУЛИ В ПАСКАЛЕ
При программировании «сверху вниз» алгоритм записывается в виде последовательности шагов. В каждый момент времени человек может рассматривать небольшое число деталей, поэтому на верхнем уровне алгоритма число шагов обычно небольшое. При написании программы не следует скрывать такую структуру. В большинстве случаев полезно иметь в виду следующую рекомендацию: из чтения текста программы должно быть ясно, что делает программа, а не как она это делает. Лица, которых интересует ответ на второй вопрос, должны найти его в другом месте, просматривая другие объекты, но не основной блок программы. Другими словами, чтобы программы было проще понимать и записывать, следует делать их более компактными. Для этого в языке программирования должны быть средства, позволяющие разбивать программу на логически связанные блоки, каждый из которых решает некоторую подзадачу. Кроме того, нередко бывает, что такого рода подзадачи должны выполняться в программе неоднократно. В Турбо-Паскале такими средствами являются процедуры, функции и модули. Процедуры и функции — это законченные программные единицы, которые решают некоторую подзадачу и, возможно, выполняются многократно. Модули являются основой модульного программирования в Турбо-Паскале. Они используются для создания библиотек, которые могут включаться в различные программы (при этом совсем необязательно иметь в наличии исходный текст), а большие программы могут разделяться на логически связанные модули. Достоинства модульного программирования: 1) упрощение процесса написания и отладки; 2) сокращение объема программ. Недостаток — некоторое увеличение затрат времени и памяти на оформление модулей и обращение к ним.
Процедуры
Процедура — это независимый программный блок (программная единица), выполняющий решение некоторой самостоятельной подзадачи. Процедуры (и функции) размещаются в программе сразу же после описания переменных (в разделе Var) и перед словом Begin, указывающим начало ее основной части, т.е. следующим образом: Program Const Var ..... Процедура_1 ..... Процедура_n Begin { Начало основной программы } ...... End. Сама процедура оформляется следующим образом:
Procedure Имя(Формальные_параметры); {заголовок процедуры} Описание локальных переменных Begin Операторы < = Тело процедуры End; Из этого текста видно, что процедура описывается так же, как программа. Отличие заключается в том, что текст программы заканчивается служебным словом End с точкой, а процедура заканчивается служебным словом End с точкой с запятой после него. Поэтому саму Паскаль-программу можно считать главной процедурой.
Формальные параметры – это список, который содержит имена переменных, массивов и типов, являющихся исходными данными и результатами процедуры. Он может отсутствовать. Элементы списка параметров описываются полностью, с указанием типов. Локальные переменные — это переменные, которые используются только внутри данной процедуры. На вход процедуры (в качестве исходных данных) поступает совокупность параметров – аргументов, а на выходе формируются параметры – результаты. Причем процедура позволяет получить один или несколько результатов, а функция — только один.
Пример. Процедура, выводящая горизонтальную линию из n одинаковых символов, может быть такой.
Procedure GorLine(n: Integer; Sim: char); {Изображение горизонтальной линии символом Sim} Var I: Integer; Begin For i: = 1 To n Do Write(Sim); End;
Здесь n и Sim – формальные параметры, являющиеся входными величинами; i – локальная переменная. Процедуры в программе выполняются не в том порядке, в каком они записаны. К ним обращаются (их вызывают) из главной программы по имени с указанием фактических параметров. Например: Имя; { если процедура не имеет параметров } или Имя (Фактические_параметры); {если процедура с параметрами} Обращения к процедуре GorLine возможны в следующих формах:
|