Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процедура с параметрами-значениями



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

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

Описание процедуры с параметрами-значениями выглядит так:

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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...