- •Федеральное агентство по образованию
- •Структурированные типы данных. Классификация
- •Массивы Определение массива
- •Обращение к элементу массива. Хранение элементов массива. Доступ к элементам массива
- •Действия над массивами
- •Поиск элемента (одномерного ) массива Поиск среди неупорядоченных элементов массива
- •Поиск среди упорядоченных элементов массива
- •Сортировка элементов (одномерного) массива
- •Линейная сортировка (сортировка отбором)
- •Сортировка методом пузырька
- •5 4 3 1 2
- •5 4 3 2 1 Метод быстрой сортировки с разделением
- •Множества
- •Объявление множеств
- •Представление в памяти переменной типа множество
- •Операторы для работы с множествами Проверка принадлежности элемента множеству
- •Операции над множествами
- •Сравнение множеств
- •Применение множеств
- •Процедуры и структурное программирование
- •Преимущества структурного программирования
- •Планирование структурированной программы
- •Метод программирования сверху вниз
- •Определение процедуры
- •Передача управления при вызовах процедур и функций
- •Функции: подпрограммы,возвращающие единственный результат
- •Понятие блока
- •Область действия и время жизни переменных
- •Особенности локальных переменных
- •Особенности глобальных переменных
- •Особенности использования процедур и функций в турбо паскале
- •Опережающее определение процедур и функций
- •Рекурсия и итерация
- •Процедуры и функции как параметры
- •Директивы подпрограмм
- •Отладка и тестирование программ, содержащих подпрограммы
- •Нисходящее тестирование и подпрограммы-заглушки
- •Восходящее тестирование и программы-тестеры
- •Рекомендации по отладке программ, содержащих подпрограммы
- •Использование отладчикадля трассировки процедур
- •Запуск внешних программ
- •Стандартные модули
- •Модуль Crt
- •Модуль Graph
- •Функции
- •Текстовые файлы
- •Нетипизированные файлы
- •Типизированные файлы
- •Прямой доступ
- •Дополнительные функции работы с файлами
- •Обработка ошибок ввода-вывода
- •Указатели и динамические переменные Статические и динамические переменные
- •Адресация памяти в Турбо Паскале
- •Карта памяти Турбо Паскаля
- •Указатели
- •Операция для получения адреса
- •Функции для работы с адресами
- •Процедуры для работы с указателями
- •Присваивание значений указателям
- •Организация ссылок
- •Динамические структурированные переменные Динамические записи
- •Динамические массивы
- •Массивы размером более 64 кбайт
- •Строки с завершающим нулем (asciiz)
- •Процедуры и функции модуля strings
- •Указатели на процедуры и функции
- •Динамические структуры данных
- •Линейные списки
- •60 Лекции по курсу «Языки программирования» Часть II
Передача управления при вызовах процедур и функций

Функции: подпрограммы,возвращающие единственный результат
Мы уже знаем, что процедуры могут возвращать любое количество результатов. Функции, в отличие от процедур, возвращают единственный результат.
Создание пользовательской функции
Для того чтобы создать собственную функцию, достаточно описание этой функции поместить в раздел описаний программы, которая нуждается в использовании данной функции. Поскольку функция возвращает результат не через список параметров, между описанием функции и описанием процедуры имеются следующие отличия:
Заголовок функции начинается с зарезервированного слова function (а не procedure).
function Summa (a, b: Real) : Real;
---------- ----------- ------
| | |
Имя функции | Тип результата
Список
формальных параметров
Все параметры функции должны представлять собой параметры-значения.
Тип данных, которому принадлежит результат функции, указывается в конце заголовка функции, после списка формальных параметров.
В теле функции ее результат определяется путем присваивания имени функции соответствующего значения. Последнее значение, которое было присвоено имени функции, и возвращается в качестве ее результата.
Синтаксическая диаграмма:

ОПИСАНИЕ СИНТАКСИСА: Объявление функции
function fname (формальные параметры): ftype:
<раздел локальных описаний>
begin
<тело функции>
end;
Пример:
function Summa(a, b: Real) : Real;
begin
Summa:=a+b;
end;
Интерпретация: После имени fname объявленной функции следует список формальных параметров, заключенный в скобки. Идентификаторы, объявленные в разделе локальных описаний, являются для функции локальными и определены только на время работы функции. При этом формальный параметр не может быть объявлен как локальный идентификатор.
Тело функции описывает манипуляции над данными (которые будут выполнены функцией) с использованием формальных параметров в качестве фиктивных (или "бутафорских") имен, вместо фактических параметров. Когда при выполнении функции имеет место обращение к формальному параметру, манипуляции производятся с соответствующим ему фактическим параметром.
Функция возвращает единственный результат, принадлежащий типу ftype. Результат, возвращаемый функцией, — это значение, которое присваивается fname непосредственно перед возвращением управления основной программе.
Примечание 1: Идентификатор ftype должен представлять собой имя стандартного типа данных (Integer, Real, Boolean или Char), типа-диапазона или перечислимого типа данных, либо типа-указателя. Turbo Pascal (но не стандартный Pascal) позволяет также использовать в качестве типа результата, возвращаемого функцией, строки и дополнительные числовые типы.
Примечание 2: Если функция не имеет параметров, в данном описании синтаксиса следует опустить элемент формальные параметры вместе со скобками.
ОПИСАНИЕ СИНТАКСИСА: Вызов функции
fname (фактические параметры);
Пример: Summa(3.0, Z)
Интерпретация: Фактические параметры заключены в скобки. Когда имеет место вызов функции fname, ее первый фактический параметр ассоциируется с первым формальными параметром, второй фактический параметр ассоциируется со вторым формальными параметром и так далее. Идентификатор функции (вызов функции) может присутствовать только внутри выражения или в правой части оператора присваивания; после завершения работы функции, возвращенный ею результат заменяет ее идентификатор в этом выражении.
Пример: S := Summa(3.0 + Z);
Примечание: Если функция не имеет параметров, в данном описании синтаксиса следует опустить элемент фактические параметры вместе со скобками.
