Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.doc
Скачиваний:
4
Добавлен:
10.11.2019
Размер:
238 Кб
Скачать
☆

2.3. Структура процедуры

Procedure NameProc(список параметров);

Раздел описания типов, констант, переменных,

Процедур, функций

Begin

Радел операторов

End;

Листинг 4. Пример процедуры

procedure PSurface(x1,y1,x2,y2,x3,y3: real;

var S: real);

var

a,b,c,p: real;

begin

a:=Distance(x1,y1,x2,y2); b:=Distance(x2,y2,x3,y3);

c:=Distance(x3,y3,x1,y1); p:=(a+b+c)/2;

S:=Sqrt(p*(p-a)*(p-b)*(p-c));

end;

2.4. Структура модуля

unit NameUnit;

Interface

Uses …; // подключение других модулей

Секция описания типов, констант, переменных,

заголовки процедур, функций, доступных из секции

реализации

Implementation

Uses …; // подключение других модулей

Секция описания локальных типов, констант, переменных.

Тексты процедур, функций

Initialization

Секция операторов, выполняемых при инициализации

Finalization

Секция операторов, выполняемых при завершении работы

end.

Имя модуля и имя файла, в котором записан модуль должны совпадать.

Листинг 5. Пример модуля

unit Lib;

interface

var

x1,y1, x2,y2, x3,y3, S: real;

function Distance(x1,y1,x2,y2: real): real;

function FSurface(x1,y1,x2,y2,x3,y3: real): real;

implementation

function Distance(x1,y1,x2,y2: real): real;

begin

Result:=Sqrt(Sqr(x2-x1)+Sqr(y2-y1));

end;

function FSurface(x1,y1,x2,y2,x3,y3: real): real;

var

a,b,c,p: real;

begin

a:=Distance(x1,y1,x2,y2); b:=Distance(x2,y2,x3,y3);

c:=Distance(x3,y3,x1,y1); p:=(a+b+c)/2;

Result:=Sqrt(p*(p-a)*(p-b)*(p-c));

end;

end.

Листинг 6. Программа с подключением модуля

program Pr4;

uses

Lib;

{$APPTYPE CONSOLE}

begin

Write(‘x1=’); Readln(x1); Write(‘y1=’); Readln(y1);

Write(‘x2=’); Readln(x2); Write(‘y2=’); Readln(y2);

Write(‘x3=’); Readln(x3); Write(‘y3=’); Readln(y3);

S:=FSurface(x1,y1,x2,y2,x3,y3); Write(‘S=’,S:12:4);

Readln;

end.

2.5. Список параметров

2.5.1. Область видимости

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

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

Если модуль подключает к себе другой модуль, то константы, переменные, типы, функции, процедуры, описанные в разделе interface подключенного модуля доступны подпрограммам подключающего модуля. Переменные, типы, функции, процедуры, описанные в разделе implementation доступны только подпрограммам этого модуля.

Для организации перекрестного подключения модулей необходимо хотя бы одно подключение реализовать в разделе implementation.

Необходимо избегать использования глобальных переменных, т.к.:

  • подпрограмма становится менее универсальной;

  • возрастает вероятность недопустимого изменения глобальной переменной в подпрограмме.