
- •5.5.2. Стандартные функции для данных типа char
- •5.5.3. Определение переменных строкового типа. Особенности типа string
- •5.5.4. Строковые выражения
- •5.5.5. Строковые процедуры и функции
- •5.6. Пример программы
- •5.7. Варианты заданий
- •5.8. Содержание отчета (см. П. 1.10)
- •5.9. Контрольные вопросы
- •6.4. Порядок выполнения работы
- •5. Устно ответить на контрольные вопросы (п.6.9).
- •6. Оформить отчет (см. П. 1.10).
- •6.5. Справки по структуре и операторам Pascal-программы, использующей пользовательские процедуры и функции
- •6.5.1. Описание процедуры. Оператор процедуры
- •Структура описания процедуры
- •6.5.2. Описание функции. Указатель функции
- •6.5.3. Локализация имен в Turbo Pascal
- •6.6. Варианты заданий
- •6.7. Содержание отчета (см. П. 1.10)
- •6.8. Контрольные вопросы
- •5. Устно ответить на контрольные вопросы (п. 7.9).
- •6. Оформить отчет (см. П. 1.10).
- •7.5. Справки по файловым процедурам и функциям
- •7.5.1. Описание файловых переменных
- •7.5.2. Установочные и завершающие операции с файлами
- •7.5.3. Операции ввода-вывода
- •7.5.4. Операции перемещения по файлу, определение параметров файла
- •7.5.5. Обработка ошибок ввода-вывода
- •7.5.6. Текстовые файлы
- •7.6. Пример структуры программы
- •7.7. Варианты заданий
- •7.8. Содержание отчета (см. П. 1.10)
- •7.9. Контрольные вопросы
- •Основная литература
- •Дополнительная литература
- •Приложение. Титульный лист
- •Отчет о лабораторных работах по дисциплине «Информатика и программирование»
6.5.2. Описание функции. Указатель функции
Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функции, необязательный список формальных параметров, заключенный в круглые скобки, и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе:
Function <имя>[(<список формальных параметров>)]:<тип результата>;
Const ...;
Type ...;
Var ...;
Begin
<операторы>
End;
<имя> - любой допустимый идентификатор, напр., Fun1;
<список формальных параметров> - последовательность идентификаторов (имен) формальных параметров и их типов, напр., Step:real, Mas: Type_mas, ..., разделенных запятой;
<тип результата > - тип возвращаемого функцией результата, напр. Integer, Real, и др.
Среди входящих в функцию операторов должен обязательно присутствовать оператор присваивания, в левой части которого стоит имя данной функции. В точку вызова возвращается результат последнего присваивания.
Обращение к функции осуществляется по имени с указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип.
Рассмотрим пример вычисления выражения Z=(A5+AM)/2, в котором возведение в степень выполняется функцией Step.
{Программа вычисления выражения Z=(A**5+A**M)/2}
Рrogram DemoFunc;
Var A,Z: Real;
{Функция вычисления степени. N, X - формальные параметры,
результат, возвращаемый функцией в точку вызова,
имеет вещественный тип}
Function Step(N: integer; X:real): Real;
{Описание локальных переменных функции}
Var
I: Byte; {локальная переменная для организации цикла}
Y: Real; {локальная переменная для хранения произведения
одинаковых сомножителей}
Begin
Y:=1;
{Цикл вычисления N-й степени числа X}
For I:=1 to N do Y:=Y*X;
{Присваивание функции результата вычисления степени}
Step:=Y
End;
{Начало основной программы}
Begin
Write('Введите значение числа А и показатель степени M');
Readln(A,M);
{Вызов функции Step с передачей ей фактических параметров}
Z:=(Step(5,A)+Step(M,A))/2;
Writeln('Для А =', A, ' M=', M, 'значение выражения равно', Z)
End.
Если функция изменяет значения формальных параметров-переменных или значения глобальных по отношению к данной функции переменных, то говорят, что функция имеет побочный эффект. Применение функций с побочным эффектом нарушает структурированность программы, поэтому их использование нежелательно.
6.5.3. Локализация имен в Turbo Pascal
В Turbo Pascal допускается любой уровень вложенности процедур и функций. Для сложных программ имеются правила локализации имен, определяющие область действия для любого имени.
Любое имя (константы, типа, переменной, процедуры или функции) определено только в пределах той процедуры или функции, в которой оно описано. Область действия распространяется на все внутренние процедуры или функции.
Одно и то же имя может быть определено в каждой отдельной процедуре, функции или программе. При этом областью действия этого имени является процедура, функция или вся программа, в которой описан объект с данным именем, за исключением внутренних процедур, содержащих описание объекта с тем же именем.