Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie.doc
Скачиваний:
27
Добавлен:
31.03.2015
Размер:
1.43 Mб
Скачать

6.2. Кодирование процедур на языке Паскаль

Синтаксис описания процедур

•• Процедура. Может иметь несколько выходных параметров.

Описание

{заголовок}

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

{раздел описаний локальных объектов}

<описания меток, констант, типов, переменных, процедур и функций>

{раздел операторов}

begin

<операторы>

end;

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

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

•• Функция. Вычисляет единственное значение.

Описание

{заголовок}

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

{раздел описаний локальных объектов }

<описания меток, констант, типов, переменных, процедур и функций>

{раздел операторов}

begin

<операторы>

<имя функции>:=<значение>

end;

Здесь <тип результата>::=<имя простого типа> <имя указателя>

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

<указатель функции>::=<имя функции>(<список фактических параметров>)

Список формальных параметров

<список формальных параметров> ::= <секция формальных параметров>; <секция формальных параметров>; … <секция формальных параметров>

<секция формальных параметров>::= <спецификация параметров-значений>

<спецификация параметров-переменных>

<спецификация параметров-процедур>

<спецификация параметров-функций>

Секции формальных параметров разделены знаками "точка с запятой"!

<спецификация параметров-значений>::=

<список идентификаторов>:<имя типа>

<спецификация параметров-переменных>::=

var<список идентификаторов>:<имя типа>

Спецификации параметров-процедур и параметров-функций здесь не рассматриваются.

Список параметров может отсутствовать; тогда процедура является процедурой без параметров.

Список фактических параметров

Формальные и фактические параметры обязательно должны принадлежать к одному типу.

Правила подстановки (соответсвия фактических параметров формальным) следующие.

Формальный параметр

Фактический параметр

параметр-переменная (var)

переменная

параметр-значение

выражение

Фактические параметры разделяются запятыми!

Передача параметров – значений и параметров – переменных

Механизмы передачи в процедуру параметров-переменных и параметров-значений принципиально отличаются.

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

Поэтому выходные параметры процедуры необходимо специфицировать как параметры – переменные.

Следствие. Какvarможно описывать входные массивы – параметры с целью экономии памяти.

При передаче параметров – значенийдля их обработки используетсялокальная переменная процедуры. Перед выполнением процедуры значение фактического параметра – значения пересылается в эту переменную; она и обрабатывается. Можно сказать, что параметр – значение локализуется в теле процедуры. По завершении выполнения процедуры значение этой переменной недоступно. Соответствующий фактический параметр не меняется.

Построение интерфейсов для параметров нестандартных типов. Глобальные типы и константы

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

. . . <список идентификаторов> : <имятипа> . . .

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

По определению, этот тип по отношению к процедуре будет глобальным.

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

Например, всегда необходимо определять глобальный тип для параметров – массивов (в разделе type). Если в качестве границ массива используются идентификаторы, эти идентификаторы необходимо описать в разделеconstвне процедуры. По определению, это будут глобальные именованные константы.

При описании внутренних процедур описания глобальных объектов размещаются в соответствующих разделах главной программы (program), описания процедур - в разделе процедур, а вызов процедур - в разделе операторов.

Оформлению процедур в отдельных модулях посвящена гл. 7 пособия.

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