- •Содержание
- •Часть 1. Основные понятия программирования §1.1. Этапы разработки программного обеспечения
- •§1.2. Основные сведения об алгоритмах Понятие алгоритма
- •Свойства алгоритма
- •Формы записи алгоритмов
- •Блок-схемы алгоритмов
- •§1.3. Языки программирования
- •§1.4. Паскаль и Object Pascal, Турбо-Паскаль и Delphi
- •Контрольные вопросы
- •Язык, оболочка и интегрированная среда разработки
- •Часть 2. Общие сведения о языке Паскаль §2.1. Алфавит и служебные слова
- •Описание общих конструкций языка
- •§2.2. Структура программы
- •§2.3. Разделы описаний Описание меток
- •Определение констант
- •Определение типов
- •Описание переменных
- •Контрольные вопросы
- •Часть 3. Простые типы данных Иерархия типов
- •§3.1. Целые типы
- •§3.2. Вещественные типы
- •§3.3. Логический тип
- •§3.4. Литерный тип
- •§3.5. Перечисляемый тип
- •§3.6. Диапазоны (интервальный тип)
- •Дополнительные типы в Delphi
- •Контрольные вопросы
- •Глава 4. Операторы языка Паскаль Выражения
- •§4.1. Оператор присваивания
- •§4.2. Ввод-вывод данных
- •§4.3. Составной оператор
- •§4.4. Пустой оператор
- •§4.5. Безусловный оператор перехода
- •§4.6. Условный оператор
- •§4.7. Оператор цикла с параметром for
- •§4.8. Оператор цикла с предусловием while
- •§4.9. Оператор цикла с постусловием repeat
- •§4.10. Оператор выбора case
- •Контрольные вопросы
- •Глава 5. Процедурное программирование §5.1. Функции
- •Параметры – значения
- •Параметры – переменные
- •Бестиповые параметры
- •§5.2. Процедуры
- •Правила использования подпрограмм
- •Рекурсия
- •Директивы
- •Процедурные типы
- •Пример использования подпрограмм
- •Контрольные вопросы
- •Глава 6. Структурированные типы данных
- •§6.1. Массивы
- •§6.2. Строки
- •§6.3. Записи
- •§6.4. Множества
- •Пример использования множеств
- •§6.5. Файлы
- •Установочные и завершающие операции
- •Операции ввода-вывода
- •Перемещения по файлу
- •Пример работы с файлом
- •Обработка ошибок ввода-вывода
- •Специальные операции
- •Пример объединения двух файлов
- •Текстовые файлы
- •Стандартные текстовые файлы
- •Файлы без типа
- •Контрольные вопросы
- •Глава 7. Динамические структуры данных §7.1. Динамические переменные
- •§7.2. Указатели
- •Работа с динамическими переменными
- •Пример двухсвязанного циклического списка
- •Указатели без типа
- •Контрольные вопросы
- •Глава 8. Низкоуровневые возможности Паскаля §8.1. Язык Ассемблер
- •§8.2. Доступ к аппаратуре Доступ к памяти
- •Доступ к портам ввода-вывода
- •Работа по прерываниям
- •Контрольные вопросы
- •Глава 9. Модули §9.1. Основные понятия
- •§9.2. Использование модулей
- •§9.3. Стандартные модули
- •§9.4. Модуль Crt
- •Работа с экраном в текстовом режиме
- •Работа с клавиатурой
- •Работа со звуком
- •§9.5. Модуль dos
- •§9.6. Графический режим монитора
- •Контрольные вопросы
- •Глава 10. Введение в объектно-ориентированное программирование §10.1. История развития программирования
- •Понятие объекта
- •§10.2. Свойства объектов
- •Раннее и позднее связывание
- •§10.3. Виртуальные методы
- •Конструкторы и деструкторы
- •§10.4. Динамические объекты
- •Скрытые поля и методы
- •Контрольные вопросы
- •Литература
Глава 5. Процедурное программирование §5.1. Функции
Язык Паскаль включает понятие подпрограмм-функций и подпрограмм-процедур.
Представление программы как совокупности или иерархии относительно обособленных фрагментов со строго определенными интерфейсами способствует большей читаемости и простоте составления и отладки программы. Понятие подпрограммы как обособленной именованной части программы со своим собственным локальным контекстом имен является в большинстве языков программирования основным средством структурирования программ.
Таким образом, подпрограмма – это часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная именем.
Стандартные подпрограммы-функции уже приводились при описании выражений, но пользователь может составлять подпрограммы и самостоятельно, помещая их в раздел описаний.
Структура программы практически повторяет структуру всей Паскаль - программы, что подчеркивает регулярный характер языка. Структура подпрограммы-функции следующая.
Function <имя>[(<список формальных параметров>)]:<тип>;
[<описания>;]
<операторы>
End;
Здесь <имя> – имя функции, по которому происходит обращение к ней при вычислении выражения, с ним связан результат вычислений. Имя функции должно встречаться хотя бы один раз в разделе операторов функции слева в операторе присваивания, то есть результат функции должен быть определен.
<тип> – тип результата, соответствующего имени функции. Специфика функции заключается в том, что после обращения к ней должен быть определен результат, который участвует в выражении и связан с именем функции.
<список формальных параметров> может отсутствовать. Формальным параметрам, в отличие от фактических, не соответствуют никакие значения, – они лишь ставят в соответствие фактические значения и порядок вычислений по подпрограмме, то есть в этом списке должны быть только имена. Каждый параметр, заданный в заголовке, считается локальным в данной подпрограмме так же, как и переменные, описанные в блоке этой подпрограммы.
Допускается три способа задания формальных параметров подпрограммы (в заголовке в круглых скобках). Они могут быть определены следующим образом.
Параметры – значения
Это наиболее распространенный и самый простой способ передачи параметров, который имеет следующий вид:
<имя1>, <имя2>, …, <имяn>:<имя типа>
Здесь параметр считается локальной переменной в пределах подпрограммы, по нему передается значение данных, то есть он является входным. Изменение этого значения не приводит к изменениям в вызывающем модуле, поэтому здесь фактическим параметром является выражение и как частный случай – константа или переменная. Имя типа должно быть простым или описанным в разделе TYPE во внешнем модуле, поэтому следующая запись неверна:
Function Z(A:array[1..20] of real):real;
Пример: функция вычисления суммы квадратов.
Function SumSqr(x,y:real):real;
Begin
SumSqr:=x*x+y*y
End;
Параметры – переменные
Параметры, иначе называемые передаваемыми по ссылке, имеют следующий вид.
Var <имя1>, <имя2>, …, <имяn>:<имя типа>;
По этому параметру передается адрес данных, то есть он является как входным, так и выходным. Изменение этого значения вызывает изменение фактического параметра, поэтому фактическим параметром может быть только переменная.
Так как при использовании функций выходным значением является значение самой функции, то этот тип параметров наиболее часто используется в процедурах.
