Турбо Паскаль позволяет выделять фрагменты программы во вспомогательные алгоритмы. Это позволяет писать хорошо структурированные программы. Языки программирования, в которых предусмотрены вспомогательные алгоритмы, называются процедурно-ориентированными. Структурированные программы обычно проще для понимания и отладки.
Подпрограмма - это последовательность операторов, которые определены и записаны только в одном месте программы, однако их можно вызвать для выполнения из одной или нескольких точек программы. Каждая подпрограмма определяется уникальным именем. В языке ПАСКАЛЬ существуют два типа подпрограмм - процедуры и функции.
Процедура и функция - это именованная последовательность описаний и операторов. При использовании процедур или функций ПАСКАЛЬ - программа должна содержать текст процедуры или функции и обращение к процедуре или функции. Тексты процедур и функций помещаются в раздел описаний процедур и функций.
Процедура может содержать такие - же разделы описаний, что и ПАСКАЛЬ - программа, а именно: разделы описания модулей, меток, констант, типов, переменных, процедур и функций.
Вызов процедуры на выполнение осуществляется отдельным оператором с помощью ее имени. Вызов функции может быть составной частью любого выражения при условии согласованности типов. Описание процедур и функций должно предшествовать их вызову и располагается перед началом основной программы. Нельзя вызывать на выполнение те вспомогательные алгоритмы, которые содержатся внутри других процедур и функций.
Описание процедуры имеет следующую структуру.
Procedure Имя (Список формальных параметров);
Label
constОписание локальных меток,
typeконстант, типов и переменных
Var
procedureОписание внутренних процедур
functionи функций
Begin
Операторы
end;
Описание функции имеет следующую структуру:
Function Имя (Список формальных параметров) : Тип результата;
Label
const Описание локальных меток,
type констант, типов и переменных
Var
procedureОписание внутренних процедур
function и функций
Begin
Операторы, среди которых хотя бы один, который присваивает имени функции значение результата
End.
Типом результата в функциях может быть любой из стандартных типов Турбо Паскаля кроме файловых типов. Использование конструируемых типов здесь недопустимо.
Существуют понятия локальных и глобальных меток, констант, типов и переменных. Переменные, описанные в основной программе, являются глобальными по отношению к процедурам и функциям, которые описаны позже этих переменных. Аналогично, переменные, описанные в процедурах и функциях, являются глобальными по отношению к внутренним процедурам и функциям, которые описаны позже. Остальные переменные называются локальными. Их область действия локализована, т.е. ограничена, тем вспомогательным алгоритмом, где они описаны.
Исходные данные для работы вспомогательных алгоритмов можно передавать через глобальные переменные, а также через параметры. Параметры при вызове вспомогательных алгоритмов называются фактическими, а параметры в заголовке вспомогательных алгоритмов называются формальными.
Формальные параметры вспомогательных алгоритмов также относятся к его локальным переменным. Локальные данные создаются, т.е. им выделяется память, при вызове вспомогательные алгоритмы, а освобождение этой памяти происходит при завершении работы вспомогательные алгоритмы. В том случае, когда локальная переменная имеет тот же идентификатор, что и глобальная, алгоритм работает с локальной. При этом, значение глобальной переменной сохраняется в специальной области памяти, которая называется стек.
По способу передачи параметры в Турбо Паскале делятся на типы: