Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
9-11 лек 18-19 ПРОЦЕД И ФУНКЦ.doc
Скачиваний:
6
Добавлен:
23.11.2019
Размер:
146.94 Кб
Скачать

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

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

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

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

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

Пример.

procedure Inp(Max, Min: Real; N: Word); function Mult(X, Y: Integer): Real;

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

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[l];   for i:= 2 to N do     if Ma < Mas[i] then       Ma:= Mas[i];   Max:= Ma end;

3.2. Параметры-переменные

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

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

Действие слова var распространяется до ближайшей точки с запятой, т. е. в пределах одной группы.

Пример.

procedure MaxMin(A: tArr; var Max, Min: Real; N: Word);

Здесь Max, Min - параметры-переменные, А и N - параметры значения.

Тип параметров-переменных может быть любым, включая и файловый.

3.3. Параметры-константы

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

В этом случае нежелательно передавать этот параметр как параметр-переменную. Можно его передать как параметр-значение, однако, если эта переменная имеет большой размер (массив, запись и т. д.), то копия такого параметра займет большую часть стека и даже может его переполнить.

Это же приводит и к уменьшению быстродействия программы. В этой ситуации параметр лучше передать как параметр-константу. Такой параметр, если он структурированного типа, передается своим адресом, не предусматривается защита от его изменения. Использовать параметр-константу можно только в версии 7.0.

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

Пример.

function NewString(const S: string): string;

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

3.4. Параметры без типа

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

Пример.

function Equal(var Paraml, Param2; Len: Word): Boolean;

Здесь Param1, Param2 - параметры-переменные без типа; Len - параметр-значение.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]