Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль_2.doc
Скачиваний:
6
Добавлен:
08.11.2018
Размер:
324.61 Кб
Скачать

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

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

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

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

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

  • параметры-константы (только в Borland Pascal 7.0);

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

Для каждого формального параметра следует указать имя и, как правило, тип.

Для параметра-переменной или параметра-константы – его категории. Имена параметров могут быть любыми, они могут совпадать с именами объектов программы.

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

Пример

Неправильно:

function max (a: array [1..00] of real):real;

Правильно:

type

tArr = array [1..100] of real;

function max(a:tArr):real;

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

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

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

Пример

procedure inp(max, min :real; n :word);

function mult(x,y :integer)real;

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

Пример

inp(abs(7),-abs(t), 2*k);

m:=mult(x+y, x-y);

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

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

type

tArr = array[1..100] of integer;

var

massiv : tArr;

maxim :integer;

function max(mas:tArr; n: byte): integer; {Описание функции}

var ma:integer;

i:byte;

begin

ma:=mas[1];

for i:=2 to N do

if ma<mas[i] then ma:=mas[i];

max:=ma

end;

Тогда возможно

maxim:=max(massiv, 5);

Будет определено максимальное число из пяти первых чисел массива massiv и записано в переменную maxim.

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