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

9.7. Процедуры

Объявление процедуры в общем виде

Procedure <Имя>( p1, p2 : T1; ... // Параметр-значение

var p3, p4 : T2; ... // Параметр-переменная

const p5, p6 : T3; ...); //Параметр-константа

var

//объявление локальных переменных - параметров

begin

//тело процедуры

end;

--------------------------------------------------------

Имя - имя процедуры (глагол) подпрограмму-, используется для ее вызова

var - признак параметров-переменных,

const -признак параметров констант;

p1, p2, p3, p4, p5, p6 - имена параметров,

T1, T2, T3 - их типы.

Обращение. Форма вызова процедуры:

program Example5;

….

uses

SysUtils;

var // Объявление аргументов

a1: integer;

a2 : real;

{..........…..}

Procedure MyProc( var p1: integer; p2 : real);

//Разделы локальных определений

begin

//Тело подпрограммы

end;

begin // Основная программа

{...............}

MyProc(a1, a2); //Вызов процедуры по имени в строке кода

{...............}

end.

----------------------------------------------------------

Соответствия: p1 - a1, p2 - a2

Задача2. Вывести таблицу квадратных корней. Line

Для оформления таблицы использовать процедуру Line.

program Example6;

uses

SysUtils;

var

i:byte;

Procedure Line(n:integer; c:char);

var

k:byte;

begin

for k:=1 to n do write(c);

writeln;

end;

begin

writeln('Tabl kvadratnyx korney');

Line(15,'=');

writeln('Chislo | Koren');

Line(15,'=');

for i:=1 to 5 do

begin

writeln(i:5,' ',sqrt(i):6:2);

Line(15, '-');

end;

readln

end.

9.8. Процедура или функция?

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

Пример вычисления сопротивления цепи (Sopr), состоящей из трех параллельных сопротивлений (R1, R2, R3).

Procedure SoprPar(r1, r2, r3:real; var sr:real);

begin

sr := (r1+r2+r3)/(r1*r2*r3);

end;

Function SoprPar(r1, r2, r3:real; var sr:real):real;

var

sr : real;

begin

sr := (r1+r2+r3)/(r1*r2*r3);

SoprPar:=sr;

end;

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

Правило:

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