1 семестр сессия / Bilet8
.docБилет №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.