Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratornye_raboty_po_Informatike_2011.doc
Скачиваний:
7
Добавлен:
11.12.2018
Размер:
502.27 Кб
Скачать
      1. Пользовательские процедуры и функции. Правила их создания и использования.

Пользовательская процедура или функция может быть описана в одном из трех вариантов:

  • В составе уже имеющейся (родительской) процедуры или функции. В этом случае все данные родительской процедуры (функции) становятся видимы (доступны) дочерней процедуре (функции), а возможность использования дочерней процедурой (функцией) ограничивается только рамками родительской процедуры (функции).

  • В составе текущего (из которого происходит вызов) модуля только в секции Реализации (Implementation). В этом случае создаваемая процедура (функция) доступна из любой процедуры (функции), но только в рамках данного текущего модуля. В других модулях эта процедура (функция) не видна.

  • В секции Interface текущего модуля. Такая процедура (функция) доступна как в любом месте текущего модуля, так и в любом другом модуле, который вызывает директивой uses наш текущий модуль.

Для обмена данными с процедурой (функцией) из места их вызова существует так называемое «окно параметров» - перечень данных, которыми должны обмениваться место вызова и вызываемая процедура (функция). Это окно параметров выглядит в виде перечисления имен данных, ограниченных скобками и следует сразу после имени описываемой процедуры (функции). Имена данных параметров видимы только в рамках данной процедуры (функции) и не видны в других программных единицах (локальные данные). Кроме того, в случае использования функции ее имя тоже представляет из себя параметр – переменную, тип которой задается при описании функции, как и тип каждого из параметров.

Рассмотрим несколько примеров:

Procedure primer1(a,b:real; c:integer; var d,e : real; var s:string);

Const …

Var …

Begin

Текст процедуры

End;

В этом примере описана процедура с именем Primer1. Окно параметров расшифровывается следующим образом: Из вызывающей структуры в процедуру передаются два вещественных числа (они равносильны типу констант!) (a и b) и одно целочисленное (c). Из процедуры в место вызова передаются (возвращаются) два вещественных числа (рассчитанные в процедуре) (переменные d и e), а также строковая переменная s, значение которой тоже скорее всего определено в теле процедуры.

ВНИМАНИЕ! Если в окне параметров данные описаны как константы (без ключевого слова var), то значения таких констант НЕЛЬЗЯ изменять в теле процедуры (функции)! В противном случае возможны непредсказуемые искажения в области данных (как этих, так и совершенно других).

Пример описания функции следует ниже:

Function fun1(a,b:real; c:integer) : real;

Var d,e : real;

Begin

d:=a+b;

e:=c*(d+a);

fun1:=frac(e);

End;

При использовании функции главным возвращаемым параметром является само имя функции (в примере – fun1 типа real), хотя в окне параметров для функции могут быть указаны и другие возвращаемые параметры-переменные.

Для вызова процедуры следует в необходимом месте программы просто указать имя процедуры и значения передаваемых параметров. Например, фрагмент программы с вызовом процедуры Primer1 может выглядить так:

Var

ff, p1,p2 : real;

n : integer;

st : string;

begin

.

n:=13;

ff:=5647.554466;

Primer1(10.55, ff, n, p1, p2, st);

.

End;

Обратите внимание, что типы передаваемых в процедуру данных должны обязательно совпадать с типом данных, описанных в окне параметров процедуры. В нашем примере это соответствие пар данных: (10.55 и вещественной a), (вещественных ff и b), (целых n и c)

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

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