Стандартные (предопределенные) функции и процедуры

Процедуры и функции

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

Процедура имеет описание (текст) и вызов.

Описание процедуры содержит заголовок процедуры и блок. Причем блок (тело процедуры) имеет такое же строение, как и блок программы.

Заголовокпроцедуры:

PROCEDURE имя процедуры [ ( список формальных параметров ) ] ;

Имя процедуры – идентификатор, по которому данная процедура вызывается.

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

Форма оператора вызова процедуры:

Имя процедуры [(список фактических параметров)];

Если в описании процедуры нет списка формальных параметров, то оператор вызова процедуры состоит из одного имени процедуры.

Пример вызова процедуры без параметров: PRINT ;.

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

Функция– это подпрограмма, определяющая одно скалярное, вещественное или строковое значение, которое всегда выдается в вызывающую программу.

Описание функции также содержит заголовок функции и блок такого строения, как и блок программы.

Заголовок функции:

FUNCTION имя функции (список формальных параметров) : тип результата ;

Имя функции – идентификатор, по которому функция вызывается. Тип результата может быть любым простым типом, причем значение результата должно быть совместимо с типом результата функции, определенным в операторе FUNCTION. Для формирования результата выполнения в теле функции должен быть оператор присваивания имени функции значения результата в виде:

Имя функции : = выражение ;

Описание формальных параметров может иметь вид:

< список имен > : < тип > или var < список имен > : < тип >

В первом случае формальные параметры называют параметры-значения, а во втором – параметры-переменные.

 

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

Список предопределенных функций и процедур Паскаля содержит больше полусотни наименований. Вот некоторые из них (* помечены уже рассмотренные ранее).

a) математические функции (были рассмотрены ранее):

Например, *abs (x) – абсолютное значение числа x;

b) функции преобразования:

chr (x) – аргумент x – номер символа типа BYTE – определяет значение символа по его номеру;

ord (x) – аргумент x порядкового типа (логический, строковый, перечисляемый) – определяет порядковый номер аргумента (0 или 1 для логического x; целое 0 – 255 для строкового x; целое 0 – 65535 для перечисляемого x);

*round (x) – аргумент x вещественного типа – округляет число x до целого;

*trunc (x) – аргумент x вещественного типа – отсекает целую часть числа (тип результата Longint);

*frac (x) – аргумент x вещественного типа – определяет дробную часть числа (тип результата Longint или Real, если отсутствует сопроцессор);

c) функции и процедуры порядкового типа:

odd (x) – аргумент x целого типа – выдает true, если x четно, и false, если x нечетно;

pred (x) – аргумент x порядкового типа – находит предшествующий элемент x – 1;

succ (x) – аргумент x порядкового типа – определяет последующий элемент x + 1;

*процедура dec (x [, Δ ] ) – аргумент x порядкового типа, Δ – тип longint – уменьшает значение переменной x на величину Δ, а если Δ не задано, то на 1(тогда x := pred (x));

*процедура ins (x [, Δ ] ) – аргумент x порядкового типа, Δ – тип longint – увеличивает значение переменной x на величину Δ, а если Δ не задано, то на 1(тогда x := succ (x));

d) функции разного назначения:

sizeof (x) – x порядкового типа – определяет максимальное значение порядкового типа;аргумент x произвольного типа – определяет число байтов, занимаемых аргументом x – тип результата Word;

high (x) – x порядкового типа – определяет максимальное значение порядкового типа;

low (x) – x порядкового типа – определяет минимальное значение порядкового типа;

*length (x) – аргумент x типа String – определяет в виде целого числа логическую длину строки;

random (x) – аргумент типа Word – определяет псевдослучайное число (если параметр x опущен, результат – вещественное число из промежутка [0;1]; если параметр x задан, результат целое число из промежутка [0; x-1]. Для генерации различающихся последовательностей псевдослучайных чисел предназначен оператор RANDOMIZE. Он, используя текущее время, сообщаемое компьютером, задает начальное случайное число.