Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все вопросы..docx
Скачиваний:
11
Добавлен:
25.09.2019
Размер:
158.31 Кб
Скачать

4.Процедура без параметров.

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

procedure имя;

{описание локальных переменных}

begin

{операторы}

end;

Процедура без параметров может реализовывать любой алгоритм. Все переменные, над которыми производят действия операторы процедуры, определяются в вызывающей программе, им присваиваются необходимые для выполнения процедуры значения. Для удобства передачи данных в процедуру и получения из неё результата используются формальные и фактические параметры. Формальные — условные обозначения в описании процедуры — описываются в её заголовке. Фактические — с которыми требуется выполнить процедуру — перечисляются при вызове процедуры. Формальные и фактические параметры должны соответствовать по количеству, типу и порядку следования. Формальные параметры описываются только в заголовке процедуры и больше нигде. Их описание похоже на описание данных в разделе переменных и может также содержать слово var.

Вызов процедур без параметров.

Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор. При выполнении этого оператора выполняется вся подпрограмма.

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

Материал из лекции:

Рассмотрим пример процедуры без параметров(из лекции): Найти во введенном массиве max и min значение, и сделать то же самое в массиве, состоящем из абсолютных значений первого.

А: 0 1 -5 2 3; max= 3; min =-5;

A2: 0 1 5 2 3 ; max=5; min=0;

Program extr1;

Const n=5;

Var

A:array[1..N] of integer; { Глобальные переменные }

I:1..n;

Max,min:integer;

Procedure max_min;

Var i:1..n;

V:integer;

Begin {Для процедуры}

Max:=a[1];

Min:=max;

For i:=2 to n do

Begin

V:=a[i];

If v>max then max:=v;

If v<min then min:=v;

End;

End;{Для процедуры max_min}

Begin {Для основной программы}

For I:=1 to n do

begin

Read(a[i]);

End;

Max_min;{Обращение к процедуре}

Writeln('max=',max,'min=',min);

For i:=1 to n do

Begin

A[i]:=abs(a[i]);

Write(A[I]:3);

End;

Max_min;

Writeln('max=',max,'min=',min);

End.{Конец основной программы}

Результат программы:

0 1 -5 2 3

max=3 min=-5

0 1 5 2 3

max=5 min=0

5.Процедура с параметрами.

Из лекции:

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

Те параметры, которые фигурируют при описании заголовка, называются формальными.

Те параметры, которые фигурируют при обращении к П/П называются фактическими.

Параметры имеют 3 характеристики:

  1. Имя

  2. Тип (имя типа)

  3. Вид

2.Если тип параметра определен пользователем в поле TYPE, то имя типа должно быть описано.(TYPE T=array) определение типа внутри скобок недопустимо.

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

Подпрограмма относится к ПЗ, как к локальной переменной (она погибает при окончании подпрограммы) служит только входной. Перед ПЗ никогда не ставят VAR.

В секции могут быть объединены только переменные одного типа и вида (var a ,b: byte; c, d:real)

Рассмотрим пример процедуры c параметром (из лекции): Найти во введенном массиве max и min значение, и сделать то же самое в массиве, состоящем из абсолютных значений первого.

А: 0 1 -5 2 3; max= 3; min =-5;

A2: 0 1 5 2 3 ; max=5; min=0;

program extr2;

const n=5;

type

t=array [1..n] of integer;

var

a,b:T;

i:1..n;

max,min:integer;

procedure min_max(x:t; var max,min:integer);

var

i:1..n;

v:integer;{локальные переменные}

begin {для процедуры}

max:=x[1];

min:=max;

for i:=2 to n do

begin

v:=x[i];

if v>max then max:=v;

if v<min then min:=v;

end;

end;{для процедуры }

begin {Для основной программы}

for i:=1 to n do

begin

read(a[i]);

end;

min_max(a,max,min);

writeln('max=',max,'min=',min);

for i:=1 to n do

begin

b[i]:=abs(a[i]);

write(b[i]:3);

end;

writeln;

min_max(b,max,min);

writeln('max=',max,'min=',min);

end. {Конец основной программы}

Из интернета:

Формат процедуры заданной с параметром значения:

Procedure имя; (список формальных параметров: тип);  раздел описаний;  Begin;  раздел операторов процедуры;  End;  Begin  имя процедуры (список фактических параметров);  ...  End.

Формальные параметры используются в определении процедуры. Фактические параметры используются при вызове процедуры. С помощью фактических и формальных параметров данные передаются из программы в процедуру и обратно. Между формальными и фактическими параметрами должно быть полное соответствие, т.е.: 1.формальных и фактических параметров должно быть одинаковое количество;

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

3.тип каждого фактического параметра должен совпадать с типов соответствующего ему формального параметра.

Если в процедуре перед формальным параметром не стоит слово Var, то такие параметры называются параметрами значения (ПЗ). Если слово Var стоит – переменные (ПП).