Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
выш.мат. методичка.DOC
Скачиваний:
32
Добавлен:
13.02.2015
Размер:
1.71 Mб
Скачать

10.3. Формальные и фактические параметры

Формальные параметры подпрограммы указывают, с какими параметрами сле­дует обращаться к этой подпрограмме (их количество, последова­тельность, типы). Они задаются в заголовке подпрограммы в виде списка фор­мальных параметров, разбитого на группы, разделенные точками с запятыми, В группу формальных параметров включаются однотипные параметры одной кате­гории.

  • Все формальные параметры можно разбить на четыре категории:

  • параметры-значения (эти параметры в основной программе подпрограм­мой не меняются);

  • параметры-переменные (эти параметры подпрограмма может изменить в основной программе);

  • параметры-константы (используются только в версии 7.0);

  • параметры-процедуры и параметры-функции (т. е. процедурного типа).

Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практи­чески любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать

function Мах(А: аrrау [1..100] оf Rеаl): Rеаl;

Чтобы правильно записать этот заголовок, следует в основной программе вве­сти тип-массив, а затем использовать его в заголовке:

tуре tАrr = аrrау[1..100] оf Rеа1;

function Мах(А: tАrr): Rеа1;

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

10.3.1 Параметры-значения

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

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

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

Пример.

рrосеdure Inp(Мах, Мin: Rеа1; N: Word);

function(Х, У: Integer): Rеаl;

В качестве фактического параметра на месте параметра-значения при вызове подпрограммы может выступать любое выражение совместимого для присваива­ния типа (см. п. 9.3), не содержащее файловую компоненту, например:

Inp(Abs(Z), -Аbs(Т), 2*К);

М:=Мult(X + У, Х - У);

МА:=Мах(В, 5);

Пример. Функция вычисления максимального элемента в массиве.

Пусть в основной программе определен тип-массив, массив этого типа и переменная целого типа

type

tArr= аrrау[1..100] of Integer;

var

Massiv: tArr;

Махim: Integer;

Функция в этом случае может иметь вид:

function Max(Mas: tArr; N: Вуtе): Integer;

var Ма: Integer;

I: Byte;

begin

Ма := Маs[1];

for i:= 2 to N do if Ma<Mas[i] then Ма := Маs[i];

Мах := Ма

end;

Теперь, например, для определения максимального числа из первых пяти чисел массива Massiv и записи его в переменную Махim можно записать оператор:

Maxim:= Мах(Маssiv,5);

Следует иметь в виду, что подпрограмма может работать только с массивами типа tArr. Для массивов другого типа придется создавать другую аналогичную программу.