Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч1.doc
Скачиваний:
7
Добавлен:
02.11.2018
Размер:
2.38 Mб
Скачать
      1. Правила написания подпрограмм

Структура подпрограммы представлена на рисунке 3.1.

Рисунок 3.21 – Структура подпрограммы

        1. Описание процедуры

Заголовок процедуры выглядит следующим образом:

Procedure <имя процедуры> (<список формальных параметров>);

Имя процедуры должно удовлетворять общим требованиям языка к написанию имен.

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

Пример заголовка процедуры:

Procedure myProc (a, b : Real; var s : String);

В приведенном выше примере процедуре передаются значения двух вещественных переменных «а» и «b», и адрес строки символов «s». Об этом свидетельствует префикс var перед именем строки. Передача адреса переменной в процедуру вместо ее значения приводит к тому, что если значение параметра s изменится в результате работы процедуры, то это изменение будет сохранено после завершения работы процедуры.

Описательная часть процедуры может содержать описания типов, классов, переменных, констант и т.п. Обратите внимание, параметры, описанные в заголовке процедуры, в разделе описаний повторно не описывают. В разделе описаний процедуры могут быть описаны не только переменные, но и другие подпрограммы. Такие подпрограммы называются внутренними по отношению к процедуре, в которой они описаны. Сама процедура, по отношению к внутренним подпрограммам называется внешней.

Раздел операторов процедуры содержит инструкции, которые будут выполняться при обращении к процедуре.

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

Procedure myProc (a, b : Real; var s : String);

var z:real;

begin

z:=a+b;

s:=floatToStr(z);

end;

В качестве параметров в эту процедуру передается два вещественных числа и адрес некоторой строки.

В разделе описаний процедуры описана внутренняя переменная z, которая за пределами процедуры недоступна.

Инструкции, записанные в теле процедуры, обеспечивают сложение чисел, переданных в качестве параметров. Полученный результат запоминается в переменной z. Затем сумма преобразуется в строку символов.

После завершения процедуры значение строки, переданной в процедуру в качестве параметра, изменится.

Вызов процедуры

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

Примеры вызова процедур, которые уже встречались ранее, представлены ниже.

Пример вызова процедуры ShowMessage, в которую передается один параметр в виде строки символов.

ShowMessage(‘Не могу преобразовать исходные данные’);

Пример вызова процедуры Append для строк компонента TMemo.

Memo1.Lines.Append(‘Результаты расчетов’);

Пример вызова процедуры Exit, без параметров.

Exit;

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

Var x,y : Real; str :String;

Begin

x:=1; y:=2;…

myProc ( 2.345, x+y, str);

showMessage(str);

end;

В этом примере обращение к нашей процедуре выделено жирным курсивом.

В этом обращении формальному параметру «а» соответствует фактический параметр в виде числа 2.345, формальному параметру «b» соответствует число 3, полученное как результат вычисления выражения «x+y». Формальному параметру «s» соответствует адрес переменной «str». Следует заметить, что в качестве последнего фактического параметра мы можем передать только имя переменной (нельзя задавать константу или выражение), так как в заголовке процедуры, перед параметром «s» написано var.

В результате вызова процедуры значение переменной «str» станет равным строке символов ‘5.345’.