- •Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7
- •Глава 7. Составные типы данных 29
- •Глава 8. Подпрограммы и функции 46
- •Глава 9. Файлы 50
- •Глава 10. Динамические переменные (списки) 58
- •Тип и функциональные возможности языка
- •Структура программы на Паскале
- •Алфавит языка
- •Правила написания имен
- •Структура блока описаний
- •Глава 2. Простые типы данных в языке Паскаль Понятие и классификация типов данных
- •Целочисленные типы
- •Вещественные типы
- •Логический тип
- •Символьный тип
- •Интервальный тип пользователя
- •Перечисляемый тип пользователя
- •Глава 3. Встроенные функции Понятие и классификация типов функций
- •Математические функции
- •Функции преобразования типов
- •Глава 4. Выражения Понятие и классификация типов выражений
- •Арифметические операции
- •Логические операции
- •Отношения
- •Битовые операции
- •Глава 5. Выполняемые операторы языка (для программ линейной структуры) Понятие и классификация
- •Классификация инструкций Паскаля
- •Оператор присваивания
- •Простейшие операторы ввода с клавиатуры
- •Простейшие операторы вывода на экран дисплея
- •Глава 6. Выполняемые управляющие операторы языка Простые управляющие операторы
- •Оператор безусловного перехода.
- •Оператор продолжения цикла.
- •Операторы ветвлений
- •Оператор условного перехода.
- •Неполный условный оператор.
- •Полный условный оператор.
- •Операторы циклов
- •Оператор арифметического цикла
- •Операторы итеративных циклов
- •Организация цикла с помощью условного перехода
- •Оператор итеративного цикла с предусловием
- •Оператор итеративного цикла с постусловием
- •Глава 7. Составные типы данных Классификация составных типов
- •Массивы Основные определения
- •Вывод массива
- •Примеры программ работы с массивами
- •Сортировки массива
- •Алгоритмы основных методов сортировок
- •Строки Строковые переменные
- •Стандартные (встроенные) процедуры работы со строками
- •Стандартные (встроенные) функции работы со строками
- •Структуры
- •Глава 8. Подпрограммы и функции Понятие подпрограмм в языке Паскаль.
- •Процедуры.
- •Описание и вызов функций
- •Параметры процедур и функций
- •Глава 9. Файлы Классификация внешних данных
- •Стандартные процедуры работы с файлами
- •Процедуры
- •Функции
- •Особенности работы с текстовыми файлами
- •Пример работы с текстовыми файлами.
- •Двоичные файлы (в машинных кодах) Типизированные файлы
- •Процедуры при работе с типизированными файлами
- •Функции при работе с типизированными файлами
- •Пример работы с типизированными файлами.
- •Файлы без типов
- •Процедуры, используемые при работе с нетипизированными файлами
- •Функции, используемые при работе с нетипизированными файлами.
- •Глава 10. Динамические переменные (списки) Понятие динамических переменных
- •Списочные данные
- •Односвязные списки
- •Двусвязные списки
- •Нульсвязные списки
- •Глава 11.Стандартный модуль работы с текстовым экраном Crt
- •2) Координаты экрана
- •3) Управление графическим режимом
- •4) Управление экраном и окном
- •5) Управление цветом
- •6) Вывод точек
- •7) Вывод линий
- •8) Вывод и закраска контуров
- •9) Окружности, эллипсы, дуги
- •10) Вывод текста
- •11) Последовательность работ при использовании графического режима
- •11) Пример программы приложения
Глава 8. Подпрограммы и функции Понятие подпрограмм в языке Паскаль.
При написании программы может оказаться, что некоторые группы действий повторяются в программе неоднократно, хотя, возможно, и над различными данными. Кроме того, такие однотипные действия могут встречаться в различных программах. Если эти действия имеют законченный смысл, их целесообразно выделить в отельную подпрограмму.
В языке Turbo Pascal существуют 3 типа программных единиц:
- основная программа (начинающаяся заголовком Program),
- функция (заголовок Function),
- процедура (заголовок Procedure).
Два последних типа являются подпрограммами, отдельно они выполняться не могут, а должны вызываться из других программных единиц. Очевидно, что начинаться выполнение может только с основной программы.
Все программные единицы строятся по единому принципу, аналогичному описанному для основной программы. Описание любой подпрограммы должно быть проведено до ее использования в другой подпрограмме или основной программе. Программная единица, в которой производится обращение к подпрограмме, называется вызывающей.
Очевидно, что вызывающая программная единица и подпрограмма должны обмениваться информацией, т.е. часть переменных должна быть доступна в них обеих. Остальные переменные должны быть локализованы в своих программных единицах (быть недоступными из других подпрограмм). Поэтому все переменные, константы, типы данных могут быть или глобальными, или локализованными в программной единице. Метки всегда локальны в каждой подпрограмме. Все переменные основной программы, глобальны по отношению к подпрограммам, описанным в этой программе, если в подпрограммах не заведены (не описаны повторно) переменные с такими же именами.
Процедуры.
Процедура представляет собой некоторую последовательность действий, реализующую определенную задачу, причем эту группу действий можно неоднократно вызывать в программе в различных местах. Вызов (обращение к процедуре) осуществляется по имени процедуры, которое должно быть уникальным в программе. Хотя сама процедура при каждом вызове может выполнять фиксированный набор операторов, у нее есть возможность каждый раз обрабатывать новую группу данных. Указания, какие данные требуется обрабатывать при вызове процедуры, передаются ей через механизм параметров.
По своему строению процедура напоминает основную программу, т.к. состоит из заголовка, раздела описаний и выполняемого блока. Описание процедуры должно находиться после других операторов описаний основной (вызывающей) программы перед ее выполняемым блоком. Использование процедуры должно находиться внутри выполняемого блока после описания процедуры. После выполнения всех действий выполняемого блока процедуры в месте ее вызова, управление предается оператору, следующему за вызовом процедуры.
В отличие от основной программы, заголовок процедуры обязателен, он имеет вид:
PROCEDURE <имя процедуры>(<список параметров>);
Раздел описаний процедуры строится как раздел описаний основной программы, с учетом того, что все описанные переменные существуют только во время выполнения процедуры (локальные переменные) и никак не связаны с переменными вызывающей программы. Переменная, описанная в процедуре и такая же переменная (с тем же именем) основной программы представляют две различные ячейки памяти. Следует иметь в виду, что если во внешней программе переменная описана, а в процедуре - нет, ее использование в теле процедуры означает работу с переменной внешней программы (так называемые глобальные переменные). Обычно не рекомендуется использовать глобальные переменные, так как это снижает универсальность процедур и затрудняет отладку программ.
В выполняемом блоке процедуры (который должен быть заключен в скобки Begin .. End), описаны действия, которые при вызове процедуры, будут выполняться над локальными, глобальными переменными (если они есть), и над теми данными, которые будут переданы в процедуру через список параметров. В отличие от основной программы, выполняемый блок заканчивается символом ";", а не точкой.
В блок-схемах алгоритмов обращение к процедуре изображается прямоугольником с двойными вертикальными сторонами и именем процедуры внутри этого прямоугольника:
Рисунок 13.
Изображение в
блок-схеме вызова процедуры