Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
05.06.2018
Размер:
30.72 Кб
Скачать

Билет №8. Процедура: описание и вызов процедуры.

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

Синтаксическая форма описания процедуры имеет вид:

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

< описание локальных имен процедуры >

begin

< тело процедуры - последовательность операторов процедуры >

end;

Раздел описаний процедуры содержит описание всех локальных имён, используемых в разделе операторов процедуры. Локальными называются имена, которые объявлены в данной процедуре (эти имена теряют свои значения при выходе из процедуры). Часто локальными именами являются вспомогательные переменные, необходимые для выполнения вычислений в процедуре, ими могут быть и другие процедуры или функции.

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

собой еще один механизм передачи параметров между процедурой и внешней средой.

Выполнение процедуры заканчивается либо при достижении слова end, завершающего раздел операторов, либо при выполнении оператора exit.

Вызов процедуры имеет следующую синтаксическую форму:

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

где фактические параметры перечисляются в списке через запятую.

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

program triangle1;{Программа, вычисляющая длины сторон треугольника АВС}

uses CRT;

type point = array [1..2] of real; {тип- точка на плоскости}

var A,B,C:point; {вводимые точки}

AB,BC,AC:real; {стороны треугольника}

ch:char;

procedure d(X,Y:point; var r:real);{ расстояние между точками X и Y }

begin r:= sqrt(sqr(X[1]-Y[1])+sqr(X[2]-Y[2])) end { d};

BEGIN TextBackground(cyan);TextColor(white);ClrScr;

window(10,5,60,10);TextBackground(green); ClrScr;

repeat

writeln(' Введите координаты вершин A,B,C:');

writeln('A[1] A[2] B[1] B[2] C[1] C[2] '); readln(A[1],A[2],B[1],B[2],C[1],C[2]);

writeln(' Длины сторон треугольника АВС:');d(A,B,AB);d(B,C,BC);d(A,C,AC);

writeln(' AB=', AB:2:2,' AC=', AC:2:2,' BC =', BC:2:2); readln(ch)

until ch=' ';

END {triangle1}.

Задача 4.2.6(8)

program alex8;

type mas=array[1..4,1..5]of integer;

var a:mas;

i,j,x,y:integer;

procedure raz(b:mas;n,m:Integer;var d:integer);

var i,j:integer;

begin

d:=0;

for i:=n to m do

for j:=1 to 5 do

if b[i,j]=0 then d:=d+1;

end;

begin

for i:=1 to 4 do

for j:=1 to 5 do

read(a[i,j]);

raz(a,1,2,x);

raz(a,3,4,y);

if x>y then Writeln('v verhnei bolshe')

else if x<y then Writeln('v niznei bolshe');

if x=y then Writeln('odinakovo');

readln;

end.

Соседние файлы в папке 1 семестр сессия