Стандартные (предопределенные) функции и процедуры
Процедуры и функции
Процедура – это подпрограмма вычисления нескольких значений.
Процедура имеет описание (текст) и вызов.
Описание процедуры содержит заголовок процедуры и блок. Причем блок (тело процедуры) имеет такое же строение, как и блок программы.
Заголовокпроцедуры:
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. Он, используя текущее время, сообщаемое компьютером, задает начальное случайное число.