ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.04.2021

Просмотров: 585

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Тело подпрограммы оформляется в виде блочного оператора. Ему может 
предшествовать объявление необходимых переменных и констант.

Каждая подпрограмма имеет имя, при помощи которого ее можно вызвать. 
Подпрограммам также можно передавать аргументы.

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

Вызов подпрограмм

Для вызова подпрограммы используйте следующую конструкцию:

имя подпрограммы(Список аргументов);

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

Альтернативный вызов подпрограмм

Вы можете воспользоваться альтернативным вариантом вызова подпрограммы, 
если ей не нужно передавать аргументы.

Формат вызова подпрограммы: имя подпрограммы;

Определение процедуры

Напишите определение процедуры, чтобы создать ее. Процедура определяется 
следующим образом:

procedure имя процедуры(параметр1;...параметрN);
Объявления переменных и констант
begin
тело процедуры
end;

Определение функции

Функция определяется следующим образом:

function имя функции(параметр1;...параметрN):тип возвращаемого значения;
Объявления переменных и констант
begin
тело функции
end;

11


background image

 Напишите следующую конструкцию в конце тела функции, чтобы возвратить 
значение: имя функции:=значение. 

Имя функции может быть заменено ключевым словом Result.

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

Вызов функции Exit может располагаться в любом месте тела вашей 
подпрограммы.

Особенности списка параметров в определениях подпрограмм

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

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

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

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

Формат объявления параметра: имя:тип

Параметры по умолчанию

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

Формат объявления параметра: параметр:тип=значение

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

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

Формат объявления параметра: var имя:тип

Выходные параметры

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

12


background image

Формат объявления параметра: out имя:тип

Постоянные параметры

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

Формат объявления параметра: const параметр:тип

Не типизированные параметры

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

Перезагрузка подпрограмм

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

Ассемблерные вставки

Ассемблером называется  язык программирования низкого уровня. Каждый 
диалект ассемблера привязан к определенному процессору или их семейству. 
Код на языке ассемблера выполняется очень быстро.
Ваша подпрограмма может содержать ассемблерные вставки.

Формат ассемблерной вставки:
Asm
Инструкции
End;

Псевдонимы подпрограммы

Вы можете определить дополнительное имя подпрограммы, которое 
допускается использовать вместо основного при вызове подпрограмм. Это имя 
называют псевдонимом. При этом меняется определение подпрограммы.

13


background image

Определение процедуры:

procedure имя процедуры(параметр1;...параметрN); alias псевдоним;
Объявления переменных и констант
begin
тело процедуры
end;

Определение функции:

function имя функции(параметр1;...параметрN):тип; alias псевдоним;
Объявления переменных и констант
begin
тело функции
end;

Предварительные объявления

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

Формат предварительного объявления для процедуры:
procedure имя процедуры(параметр1;...параметрN); forward;

Формат предварительного объявления для процедуры:
function имя функции(параметр1;...параметрN):тип; forward;

Глава 6. Стандартные математические подпрограммы

Подпрограмма

Описание

Abs(число);

Модуль числа

Arctan(число);

Арктангенс

Cos(число);

Косинус

Sin(число);

Синус

Sqr(число);

Квадрат числа

Sqrt(число);

Квадратный корень числа

Round(число);

Округление числа с плавающей точкой до ближайшего целого

Randomize;

Инициализация генератора случайных чисел

Random(число); Возвращает случайное значение в диапазоне от 0 до число-1

14


background image

Глава 7. Модификаторы подпрограмм

Общие сведения

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

Обработчики файлов

Модификатор iocheck указывает на то, что функция является обработчиком 
файловых операций и может возвращать код ошибки. Обычно модификатор 
iocheck встречается в модулях, которые идут вместе с компилятором Free Pascal.

Встраиваемые подпрограммы

Для встраиваемых подпрограмм используется модификатор inline. Для таких 
подпрограмм вызов заменяется вставкой кода из тела подпрограммы. Читатель 
знакомый с языком Си, заметит, что концепция встраиваемых подпрограмм в 
рассматриваемом здесь диалекте паскаля совпадает с концепцией языка Си.

Ограничения встраиваемых подпрограмм:

1. Недопустима рекурсия и вызов других подпрограмм

2.

В версиях Free Pascal ниже 2.0.2 встраиваемая подпрограмма не может 
экспортироваться из модуля

3.

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

Программная эмуляция математического сопроцессора на процессорах ARM

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

Внешние подпрограммы

Модификатор external указывает на то, что подпрограмма будет находиться во 
внешнем объектном файле. Модификатор export указывает на то, что 
подпрограмма может быть импортирована из подключаемой библиотеки.

15