Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
При написании процедур иногда возникает необходимость передачи некоторой информации в процедуру. Например, в предыдущей задаче хотелось бы указать процедуре, какого цвета хотим нарисовать самолет, или длину крыла. Передача данных в процедуру осуществляется с помощью параметров-значений.
Параметром называется переменная, которой присваивается некоторое значение. Различают формальные параметры - параметры, определенные в заголовке процедуры, и фактические параметры - выражения, задающие конкретные значения при обращении к процедуре. При вызове процедуры ее формальные значения замещаются фактическими, переданными из программы, в которой осуществляется вызов.
Описание процедуры с параметрами-значениями выглядит так:
PROCEDURE <имя_процедуры>(список формальных параметров-значений);
Var
Описание локальных переменных, констант и т.д.
BEGIN
..........;
..........;
END;
Например, заголовок процедуры с параметрами-значениями может выглядеть так:
Procedure NNN(x,y:integer);
Procedure Klin(x,y:integer;j:real);
Procedure Hj(lin:real;k:real;b:boolean);
Список формальных параметров-значений выглядит как обычное описание
переменных (правда, отсутствует слово Var).
Вызов процедуры:
<имя_процедуры>(список фактических параметров-значений);
Примеры вызова процедур, заголовки которых записаны выше:
NNN(5,3);
NNN(l,m);{значения l,m должны быть integer и определены заранее}
Klin(7,12,5.3);
Klin(а+3,12,j);
При вызове процедур с параметрами-значениями:
- число фактических параметров-значений должно совпадать с числом формальных параметров-значений;
- следует соблюдать порядок передачи данных;
- следует соблюдать соответствие типов данных формальных и фактических параметров-значений.
Задача 1. Написать процедуру рисования креста по известным координатам его центра и цвету.
Procedure Krest(x,y,col:integer);
{Здесь:
х-столбик,в котором находится центр креста
у-строка, в которой находится центр креста
сol-цвет креста}
Var
i:integer;
Begin
textcolor(col);
gotoxy(x-2,y); write('*****');
for i:=y-2 to y+2 do begin
gotoxy(x,y);write('*');
end;
End;
Задача 2 Нарисовать крест красного цвета с координатами центра в 5 столбике, 7 строке.
Для этого в основной программе должен быть такой вызов процедуры с параметрами значениями
Krest(5,7,4);
5 – столбик, в котором находится центр креста
7 - строка, в которой находится центр креста
4-цвет креста
Задача 3. Нарисовать крест, для которого должны запрашиваться координаты и центра и цвет с клавиатуры.
Для этого в основной программе должно быть, например, так:
Write('Введите координаты центра ');
Readln(stolb,stroca);
Write('Введите цвет креста ');Readln(col);
Krest(stolb,stroca,col);
А теперь посмотрите, как будет выглядеть программа для решения задач 2 и 3 полностью:
Uses CRT;
VAR
stolb, stroca, col:integer; {описание переменных,использованных в основной программе}
{Описание процедуры}
Procedure Krest(x,y,col:integer);
Var
i:integer;
Begin
textcolor(col);
gotoxy(x-2,y); write('*****');
for i:=y-2 to y+2 do begin
gotoxy(x,y);write('*');
end;
End;
{Основная программа}
BEGIN
Krest(5,7,4);
Write('Введите координаты центра ');
Readln(stolb,stroca);
Write('Введите цвет креста ');Readln(col);
Krest(stolb,stroca,col);
END.
Еще раз обратим внимание на то, что
• порядок следования фактических параметров и параметров-значений в заголовке процедуры очень важен, поскольку определяет, какому формальному параметру будет присвоено то или иное фактическое значение
• должно быть соответствие типов формальных и фактических параметров.
• переменные могут описываться, как в разделе описания основной программы, тогда они называются глобальными, или в процедуре, тогда они называются локальными.
Дата публикования: 2014-11-03; Прочитано: 346 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!