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

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

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

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

21.7. Параметры-процедуры и параметры-функции.

Параметр процедурного типа может быть передаваемым параметром. Этот параметр является параметром-значением, т.е. записывается без Var.

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

ПП должна компилироваться с ключом { $F+ }.

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

Program Primer;

Type

Func = function (x, y : integer) : integer;

{ $F+ }

Function Add (x, y : integer) : integer;

begin

Add := x + y;

end;

Function Multiply ( x, y : integer) : integer;

begin

Multiply := x * y;

end;

{ F$- }

Procedure PrintTable (a, b : integer; operation : Func);

Var

I, j : integer;

begin

for i:=1 to a do

begin

for j :=1 to b do

write(operation(i, j));

writeln;

end;

writeln;

end;

Begin

PrintTable (10, 10, Add);

PrintTable (10, 10, Multiply);

End.

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

Если ПП используется для переменных процедурного типа, то она компилируется с получением «дальнего» адреса. В этом случае компилятору нужно указать ключ { F$+ }.

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

В процедурах ТР параметры-переменные и параметры-константы можно использовать без типа. Ответственность за правильность использования параметра возлагается на программиста. Вместо параметров без типа можно использовать в качестве фактических параметров переменные любого типа, типа – массив, типа – запись и т.д.

Пример функции вычисляющей максимальный элемент в массиве.

Function Max (Var Mas; m : byte) : real;

Type

Tmas = array[1..n] of real;

Var

Xmax : real;

i : byte;

begin

Xmax := Tmas (mas)[1];

For i := 2 to m do

If Xmax < Tmas (Mas)[i] then Xmax := Tmas (Mas)[i];

Max := Xmax;

end;

  1. Модули пользователя

22.1. Структура модуля пользователя

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

Модуль состоит из следующих частей, расположенных в определенной последовательности

  • заголовок модуля;

  • интерфейс модуля;

  • исполнительная часть модуля;

  • секция инициализации.

Unit имя; {заголовок модуля}

Interface

{интерфейсная часть}

implementation

{исполнительная часть}

begin

{инициирующая часть}

end.

Первые три раздела являются обязательными.