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

Процедура в Паскале и ее формат.

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

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

Структура процедуры имеет вид :

Procedure имя(список формальных параметров);

(* раздел описаний *)

begin

(* раздел операторов *)

end;

Первая строка описания называется заголовком процедуры, а раздел операторов называется телом процедуры.

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

Тело процедуры заключается в операторные скобки BEGIN и END, причем после END ставится точка с запятой.

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

Процедура вызывается по ее имени :

имя(список фактических параметров);

Формальные параметры - параметры, определенные в заголовке процедуры.

Фактические параметры - выражения, задающие конкретные значения при обращении к процедуре.

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

Фактические параметры - это параметры, которые передаются процедуре при ее вызове.

Количество и тип формальных и фактических параметров должны в точности совпадать.

Формальные параметры описываются в заголовке процедуры и определяют тип и место подстановки фактических параметров. Формальные параметры делятся на два вида: параметры-переменные и параметры-значения.

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

Параметры-значения отличаются тем, что перед ними слово Var не ставится. Внутри процедуры можно производить любые действия с параметрами-значениями, но все изменения никак не отражаются на значениях соответствующих фактических параметров, то есть какими они были до вызова процедуры, такими же и останутся после завершения ее работы.

Все переменные программы делятся на глобальные и локальные. Глобальные переменные объявляются в разделе описаний основной программы. Локальные переменные объявляются в процедурах и функциях. Таким образом, локальные переменные «живут» только во время работы подпрограммы.

Пример. Составить программу для вычисления аn : целые числа а и n (n>=0) вводятся с клавиатуры. ( составить процедуру для вычисления степени целого числа).

Program ex;

var a, n : integer;

s: longint;

Procedure Degree(x,y : integer; var st : longint);

var i : integer;

begin

st:=1;

for i:=1 to y do st:=st*x;

end;

{ начало основной программы}

begin

writeln(‘введите два числа - основание и показатель степени’);

readln(a,n);

Degree(a,n,s); { обращение к процедуре }

writeln(‘Результат ’,s);

end.

Процедура названа именем Degree. В скобках записан список формальных параметров, то есть перечислены переменные с указанием их типа. Используем три параметра: первый - основание степени, то есть число, которое надо возвести в степень; второй - показатель степени, третий - результат. Первые два формальных параметра - параметры значения, третий - параметр-переменная, и перед ним указано слово var. Все они описаны как целые (x и y - переменные типа integer, st - Longint, так как степенная функция быстро возрастает).

После заголовка процедуры идут разделы описаний. В нашем примере имеется только раздел описания переменных, в котором описывается одна переменная i (счетчик цикла).

Далее идет тело процедуры. Оно начинается служебным словом Begin и заканчивается служебным словом End, после которого стоит точка с запятой (в конце программы после последнего End ставится точка). В теле процедуры вычисляется степень числа x с помощью цикла For.

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

!!!! Процедура вызывается как оператор, состоящий из имени процедуры. В круглых скобках записываются фактические параметры. В нашем примере формальные параметры x, y и st принимают значения фактических параметров a, n и s соответственно. После завершения работы процедуры переменные a и n сохранят те же значения, что и при вызове, а s получит новое значение.

Пример 2 : Используя процедуру для вычисления степени числа, найти значение выражения : y=a4x4 + a3x3 + a2x2 + a1x + a0

program ex2;

var a: array[0..4] of integer;

i, x: integer;

y,s: longint;

Procedure Degree(xx,n : integer; var st : longint);

var i : integer;

begin

st:=1;

for i:=1 to n do st:=st*xx;

end;

{ начало основной программы}

begin

write(‘введите значение переменной х ‘); readln(x);

writeln(‘введите массив коэффициентов’);

for i:=0 to 4 do begin write(‘a[‘,i,’]=’); readln(a[i]); end;

y:=a[0];

for i:=1 to 4 do

begin

Degree(x,i,s); y:=y+a[i]*s;

end;

writeln(‘y=’,y);

end.

Пример 3. Просуммировать различные части массива.

Program sumir;

var a: array [1..100] of integer; sa1, sa2,sa3 : integer;

n,l,t : integer;

procedure summa(a:array [1..100] of integer; k,m :integer; var s:integer);

var i:integer;

begin

s:=0;

for i:=k to m do s:=s+a[i];

end;

BEGIN

for t:=1 to 100 do

begin

write(‘введите очередной элемент массива ‘);

readln(a[i]);

end;

summa(a,10,20,sa1);

summa(a, n , l , sa2);

summa(a, n,n+3,sa3);

end.