- •3. Система программитрования турбо паскаль
- •3.1 Окно среды разработчика
- •3.2. Элементы диалоговой среды
- •3.3. Команды редактора
- •3.4. Модули
- •4. Общие сведения о языке паскаль
- •4.1 Алфавит языка
- •4.2. Типы данных в TurboPascal 7.0
- •4.3. Операции и выражения в языке Паскаль
- •4.4 Стандартные функции в языке Паскаль
- •5. Линейные алгоритмы
- •5.1. Структура программы на языке Паскаль
- •5.2. Конструкция «следование»
- •6. Разветвляющиеся алгоритмы
- •And, * (умножение), / (деление), div, mod;
- •6.1. Операторы условных переходов
- •Var a, b, c : Real; lv : Boolean;
- •Var a, b, c : Real; lv : Boolean;
- •Var X, y : Real;
- •6.2. Оператор безусловного перехода
- •Var n, p, X : Real;
- •20: WriteLn('Факториал числа ' , n:4:2,' равен ' ,p:4:2);
- •7. Циклические алгоритмы
- •7.1. Цикл с предусловием While
- •X, xn, xk, dx, y, s, p: real;
- •7.2. Цикл с постусловием repeat
- •X1, x0, X, eps: real;
- •7.3. Цикл с параметром for
- •I: integer; c: char;
- •7.4. Принудительное завершение цикла
- •X, xn, xk, dx: real;
- •8. Символьный тип
- •8.1. Особенности символьного типа
- •8.2. Объявление символьной переменной
- •8.3. Операции с символами
- •Строковые переменные
- •9.1. Определение и типы строк
- •9.2. Упакованный строковый тип
- •9.3. Строковый тип
- •9.5. Примеры работы со строками
- •9.6. Индивидуальные задания по работе со строками и символами
- •10. Массивы
- •10.1. Организация данных в массиве
- •10.2. Объявление массивов
- •10.3. Ввод и вывод значений элементов массива
- •10.4. Подсчет количества элементов по заданному условию
- •10.5. Поиск минимального элемента массива
- •10.6. Вычисление произведения ненулевых элементов массива
- •10.7. Сортировка элементов массива
- •10.8. Заполнение массива случайными числами
- •10. 9. Индивидуальные задания по работе с массивам
- •11. Процедуры и функции
- •11.1. Понятие подпрограммы
- •11.2. Описание процедуры
- •11.3. Описание функции
- •11.4. Области действия имен
- •11.5. Индивидуальные задания по разработке процедур и функций
- •Var k,l; real;
11.3. Описание функции
Функция вычисляет только одно значение целого, вещественного, логического, символьного, перечислимого, ограниченного или ссылочного типа.
Описание функции имеет следующую структуру:
FUNCTION ИМЯ(СПИСОК ФОРМАЛЬНЫХ ПАРАМЕТРОВ):ТИП_РЕЗУЛЬТАТА;
РАЗДЕЛ ОПИСАНИЙ
BEGIN
РАЗДЕЛ ОПЕРАТОРОВ (тело функции)
ИМЯ:=…
END;
В функции, в отличие от процедуры, в качестве формальных параметров разрешается использовать только параметры-значения. Возможно использование функций без параметров. Тело функции обязательно должно содержать оператор присваивания значения функции, в котором переменной является имя самой функции.
Обращение к функции (вызов функции на выполнение) осуществляется с помощью указателя функции, который имеет следующую структуру:
ИМЯ_ФУНКЦИИ (СПИСОК ФАКТИЧЕСКИХ ПАРАМЕТРОВ).
Описание и обращение к функции удобно показать на примере программы вычисления значений A!, B!, (A + B)!, в которой функция используется для вычисления факториала.
PROGRAM PRIMFUNC;
VAR
A,B:INTEGER;
AF,BF,ABF:LONGINT;
FUNCTION FACT(L:INTEGER):LONGINT; {Началоописанияфункции}
VARI:INTEGER;VP:LONGINT; {Описание переменных функции}
BEGIN {Телофункции}
IF L<0 THEN FACT:=0
ELSE IF L=0 THEN FACT:=1
ELSE
BEGIN
VP:=1;
FACT:=VP; {С именем связывается значению результата вычисления функции}
END;
END; {КОНЕЦ ОПИСАНИЯ ФУНКЦИИ}
BEGIN {НАЧАЛО ОПЕРАТОРОВ ПРОГРАММЫ}
WRITELN('ВВЕДИТЕ ЗНАЧЕНИЯ A И B');
READLN(A,B);
AF:=FACT(A); {Обращение к функции для вычисления А!}
BF:=FACT(B); {Обращение к функции для вычисления В!}
ABF:=FACT(A+B); {Обращение к функции для вычисления (А+В)!}
WRITELN('РЕЗУЛЬТАТЫ AF=',AF, 'BF=',BF,'ABF=',ABF)
END. {КОНЕЦ ПРОГРАММЫ}
Для вызова функции FACT ее просто указали в операторе присваивания. Параметры А, В и выражение (А+В) в момент обращения к функции - это фактические параметры. Каждый из них в момент вызова подставляется вместо формального параметра L в заголовке функции и затем над ним осуществляются нужные действия. Полученный результат присваивается идентификатору функции - именно он и будет возвращен как значение функции при выходе из нее. В программе функция FACT вызывается трижды с разным параметром, поэтому будут получены три разных результата.
11.4. Области действия имен
Для языка программирования действует принцип локализации, суть которого состоит в том, что идентификаторы, используемые в какой-либо подпрограмме, имеют силу только в пределах этой подпрограммы, они в ней доступны. Подпрограмма любого уровня имеет обычно множество имен констант, переменных, типов и вложенных в нее подпрограмм низшего уровня. Считается, что все имена, описанные внутри подпрограммы, локализуются в ней, т.е. они как бы "невидимы" снаружи подпрограммы.
Блок, содержащий в себе другой блок, называется внешним по отношению к нему. Блок, содержащийся внутри другого блока, называют внутренним.
Объекты, описанные во внутреннем блоке, называют локальными и ссылаться на них можно только внутри этого блока (они только там доступны, хотя могут иметь одинаковые идентификаторы). Чтобы не вносить путаницу, не следует использовать одинаковые идентификаторы.
Объекты, описанные в некотором внешнем блоке, могут быть использованы в любом внутреннем и называются глобальными.
Область действия имени, описанного в программе, этo та часть программы, в которой допустимо его использование. Графически области показаны на рисунке.