- •4. Структурированные типы данных
- •4.1. Массивы
- •4.1.1. Задание массивов
- •4.1.2. Обработка массивов.
- •4.1.3. Операторы блока данных и чтения из блока данных в языке Бейсик
- •4.1.4. Типизированные константы в языке Паскаль
- •4.2. Символьный и строковый типы данных.
- •4.2.1. Описание символьного и строкового типа данных.
- •4.2.2. Операции над строками.
- •3. Принцип модульности.
- •3.1. Процедуры.
- •3.2. Функции.
- •3.3. Параметры-процедуры и параметры-функции. Процедурный тип.
- •3.4. Длинная арифметика.
- •4. Рекурсия.
- •4.1. Понятие рекурсии.
- •4.2. Формы рекурсий.
- •5. Модули в языке turbo pascal. Модуль пользователя.
- •5.1. Стандартные модули.
- •5.2. Модуль пользователя.
- •6. Обзор графических возможностей языков высшего уровня.
3.2. Функции.
Функция – это подпрограмма, реализующая правило вычисления значения некоторой функции. Результат выполнения подпрограммы-функции есть одно (скалярное) значение – значение функции при определенном наборе значений ее аргументов. В основную программу этот результат возвращается не через параметры, а особым образом, он не сохраняется в качестве значения какой-либо реальной переменной и должен быть сразу использован в вычислениях (как операнд в выражении). Тип возвращаемого значения указывается в заголовке описываемой функции. Для определения самого возвращаемого значения в разделе операторов имени функции должно быть присвоено это значение. В связи с этим описание функции на языке Паскаль отличается от описания процедуры:
<функция TPascal> ≡ FUNCTION <идентификатор> [(<список формал. параметров>)]:
<тип результата>;
<блок>;
<Идентификатор> – имя функции; <список формальных параметров> – перечень имен для обозначения аргументов функции с указанием их типа; <тип результата> – определение типа (скалярного) возвращаемого значения.
Описание функции в языке QBasic:
<функция QBasic> ≡ FUNCTION <идентификатор> [(<список формал. параметров>)]
<оператор>
{<оператор>}
<идентификатор> = <выражение>
END FUNCTION
Такое описание допускается размещать как до, так и после основной программы.
Если описание функции в программе на языке Бейсик помещается после окончания основной программы, то заголовок функции может быть объявлен в начале программы с помощью оператора объявления процедуры или функции, имеющего вид:
DECLARE FUNCTION <идентификатор> [(<список формальных параметров>)]
где <список формальных параметров> содержит имена аргументов функции с указанием их типов.
Обращение к функции в Паскале – идентификатор функции, за которым в скобках перечисляются фактические параметры (т.е. аргументы):
<идентификатор> [(<список фактических параметров>)]
Обращение включается в качестве операнда в выражение, стоящее в правой части оператора присваивания (аналогично обращению к стандартным функциям). Если вызывается функция без параметров, то указывается только ее идентификатор.
Замена формальных параметров фактическими осуществляется в порядке их следования слева направо. Число и типы формальных и фактических параметров должны совпадать!
Обращение к функции в Бейсике осуществляется аналогично обращению к функции на языке Паскаль.
Пример 3.2.1.
Решим задачу из примера 3.1.1., используя вместо процедур функции.
Программа на QBasic:
FUNCTION St (X AS SINGLE, K AS INTEGER)
DEFINT I
DEFSNG P
P = 1
FOR I = 1 TO K
P = P*X
NEXT I
St = P
END FUNCTION
DIM A AS SINGLE, N AS INTEGER, Y AS SINGLE
INPUT “Введите основание и показатель: ”; A, N
IF N>0 THEN
Y = St (A, N)
ELSE
IF N<0 THEN Y = St (1/A, -N) ELSE Y = 1
END IF
PRINT A; “ в степени ”; N; “ = “; Y
END
Программа на TPascal:
VAR
A,Y: REAL;
N: INTEGER;
FUNCTION St (X: REAL; K: INTEGER): REAL;
VAR
I: INTEGER;
BEGIN
P:= 1;
FOR I:= 1 TO K DO
P:= P*X;
St:= P
END;
BEGIN
WRITE (‘Введите основание и показатель: ‘);
READLN (A, N);
IF N>0 THEN
Y:= St (A, N)
ELSE
IF N<0 THEN Y:= St (1/A, -N) ELSE Y:= 1;
WRITELN (A, ‘ в степени ‘, N, ‘ = ‘, Y)
END.