Лекция
доцента кафедры ИВТ Гродненского госуниверситета
канд. техн. наук Ливак Елены Николаевны
ПРОЦЕДУРЫ в языке
PASCAL
.
Стандартные и пользовательские процедуры.
Со стандартными процедурами мы уже встречались не один раз.
Примеры стандартных процедур
Clrscr;
Delline;
Nosound;
Hightvideo.
Это процедуры БЕЗ параметров.
Gotoxy(x, y: byte);
Sound(I : word);
Read (CON, v1, v2, …)
Это процедуры С параметрами.
До использования в программе процедура должна быть описана, лучше в разделе описаний (сразу после описания переменных).
Процедура состоит из заголовка и тела процедуры;
По структуре процедура аналогична программе.
Тело процедуры – это локальный блок.
Формат описания процедуры
procedure <имя> (<список формальных параметров с описанием типов>);
const
.....
type
……
var
........
begin
<операторы процедуры>
end;
Строка procedure <имя> (<список формальных параметров с описанием типов>); называется заголовком процедуры.
Все остальные строки – тело процедуры.
В процедуре описываются локальные константы, локальные типы данных и локальные переменные.
Локальные объекты – это те объекты, которые неизвестны и недоступны основной программе.
Для обращения к процедуре используется оператор вызова процедуры, он состоит из имени процедуры и списка фактических параметров.
Формат вызова процедуры (обращения к процедуре)
<«имя»>(<список фактических параметров>);
Пример 1.
Если вычисление суммы двух чисел реализовать с помощью процедуры, то процедура выглядела бы так:
procedure sum(a, b:real; var c:real);
begin
c:=a+b;
writelnI;
end;
А обращение к ней, например, для вычисления суммы чисел 2 и 3 и записи результата в переменную rez, выглядело бы так:
sum(2, 3, rez);
Чтобы вычислить сумму чисел 356 и 752, а затем записать результат в переменную А , следовало бы вызвать процедуру таким образом:
sum(356, 752, А);
Здесь при описании процедуры
Sum – имя процедуры;
переменные a, b, c – формальные параметры.
При вызове процедуры 2, 3, rez, 356, 752, А – фактические параметры.
Пример2.
Процедура вывода матрицы на экран
! |
Замечание. Если в качестве параметра подпрограмме необходимо передать массив, то необходимо заранее описать такой тип данных. Нельзя в заголовке процедуры описывать тип Массив.
Type
matr: array [1..10,1..10] of real;
.......
procedure Vivod_matr(A:matr);
var I,j:byte;
begin
for i:=1 to 10 do
begin
for j:=1 to 10 do
write(A[I,j]:5:2,’ ‘ );
writeln;
end;
end;
{конец процедуры }
Если, например, необходимо было бы реализовать программу вычисления сумы двух матриц, то в основной программе можно было бы воспользоваться этой процедурой для вывода двух исходных матриц и результирующей, равной сумме первых двух, следующим образом.
Vivod_matr (A);
Vivod_matr (B);
Вычислить ∑ матриц
Vivod_matr (С);
! |
Необходимо соблюдать соответствие фактических и формальных параметров. Количество и тип формальных параметров должно быть равно количеству и типу фактических параметров.
Пример 3.
Разработаем процедуру, которая задает фон и цвет выводимых символов.
procedure FonColor (Fon, Color : byte);
begin
textbackground (Fon);
clrscr;
textcolor(Color);
end;
При разработке пользовательской процедуры здесь используются стандартные процедуры.
Для задания в основной программе синего фона и белых символов следует обратиться к процедуре следующим образом
FonColor (blue, white);