Понятие подпрограммы, виды подпрограмм в Паскале.
Подпрограммой называется именованный фрагмент кода, решающий определённую подзадачу в рамках общей задачи программы. К подпрограмме можно обращаться из основной части программы по мере необходимости.
В процессе изучения Паскаля мы уже неоднократно сталкивались с различными стандартными подпрограммами (например, ClrScr или sin), которые поставляются вместе с компилятором языка. Оказывается, что Паскаль позволяет программисту разрабатывать и использовать свои собственные подпрограммы. Таким образом, подпрограмму можно рассматривать как новую команду, порядок работы которой задаётся программистом самостоятельно.
Подпрограммой называется именованный фрагмент кода, к которой можно обращаться из основной части программы.
В схемах алгоритмов подпрограммы обозначаются блоками вида:
Внутри блока указывается имя подпрограммы, к которой происходит обращение.
Существует два основных вида подпрограмм: 1) процедуры и 2) функции. Отличие между ними состоит в том, что процедура выполняет предписанные действия, не возвращая явным образом числового результата. В качестве примера процедур можно привести процедуру очистки экрана ClrScr, процедуру генерации звукового сигнала Sound или процедуру установки текстового курсора в заданную позицию GotoXY.
В отличие от процедур, функции после выполнения предписанных действий возвращают результат работы в виде некоторого числа, символа или строки символов. Типичным примером функций являются функция вычисления квадратного корня sqrt, тригонометрические функции sin, cos, tan, функция генерации псевдослучайного числа Random и т.п. Поскольку функции возвращают определённое значение, их можно использовать в правых частях выражений.
Из приведённых примеров также следует, что для нормальной работы подпрограмм им обычно необходимо передавать определённые исходные данные. Например, для вычисления квадратного корня мы должны сообщить функции sqrt число, из которого этот корень будет извлекаться. Для позиционирования текстового курсора процедуре GotoXY следует указать координаты знакоместа на экране, в которое будет перемещён курсор. Подобные исходные данные называются аргументами, или параметрами подпрограммы. Они указываются в круглых скобках после имени вызываемой подпрограммы.
Рассмотрим, как можно модифицировать последний алгоритм, введя специальную подпрограмму, вычисляющую площадь отдельного треугольника.
Поскольку в результате работы этой подпрограммы должно быть найдено число, определяющее искомую площадь, целесообразно разрабатывать подпрограмму-функцию, а не подпрограмму-процедуру.
Кроме того, необходимо выбрать имя этой функции и определить список её параметров.
Имя функции должно удовлетворять следующим требованиям. Во-первых, оно, как и все идентификаторы Паскаля, должно состоять из букв латинского алфавита и, возможно, цифр; начинаться с буквы; не совпадать ни с одним зарезервированным словом или ранее объявленным идентификатором. Во-вторых, целесообразно давать подпрограммам осмысленные имена, отражающие суть выполняемых ими действий. Последнее требование не является обязательным с точки зрения синтаксиса языка Паскаль, но оперировать подпрограммами с именами вида P158, или fff_13 крайне неудобно.
Поскольку функция предназначена для расчёта площади, в качестве имени можно выбрать, например, слово Square.
Если для вычисления площади, как и в первом алгоритме, будет использоваться формула Герона, то в качестве исходных данных в функцию следует передавать длины сторон треугольника, для которого производится расчёт.
Таким образом, алгоритм вычисления площади четырёхугольника будет иметь вид:
При этом, разумеется, следует отдельно разработать алгоритм функции Square.