Структура любой подпрограммы Паскаля аналогична структуре основной программы и, как и в структуре основной программы, выделяем заголовок и блок. Любая подпрограмма может содержать в своём блоке раздел описания своих подпрограмм.
В Паскале имеется две разновидности подпрограмм:
Процедуры общего назначения (просто процедуры): предназначены для выполнения какой-либо последовательности действий определённой соответствующим вспомогательным алгоритмом, приводящие к нескольким результатам вычислений.
Процедуры-функции (просто функции): Предназначены для описания последовательности действий, определённой соответствующим вспомогательным алгоритмом, но приводящей к одному единственному значению.
Есть два отличия от процедуры общего назначения:
В разделе операторов блока функций хотя бы один раз должно быть присвоено значение т.е. в разделе операторов должен быть записан хотя бы 1 оператор присваивания вида :=.
Функции в отличие от процедур общего назначения позволяют вычислить только одно единственное выходное (результирующее) значение.
Подпрограммы в языке Pascal
5. Формальные и фактические параметры подпрограмм Паскаля.
Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой подпрограмме (количество параметров, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группы, разделенные точками с запятыми. В группу формальных параметров включаются однотипные параметры одной категории.
Все формальные параметры можно разбить на четыре категории:
параметры-значения (эти параметры в основной программе подпрограммой не меняются);
параметры-переменные (эти параметры подпрограмма может изменить в основной программе);
параметры-константы (используются только в версии 7.0);
параметры-процедуры и параметры-функции (т. е. процедурного типа).
Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы — его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недоступным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать
function Max(A: arrayt1..100] of Real): Real;
Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:
type tArr = arrayt1..100] of Real; function Max(A: tArr): Real;
При обращении к подпрограмме формальные параметры заменяются на соответствующие фактические вызывающей программы или подпрограммы.
6. Формальные параметры подпрограмм Паскаля. Параметры-значения и параметры-переменные.
Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий и, следовательно, собственный параметр программы подпрограммой измениться не может.
Подпрограммы в Pascal
Параметр-значение указывается в заголовке подпрограммы своим именем и через двоеточие — типом. Тип параметра-значения может быть любым за исключением файлового.
Если параметров-значений одного типа несколько, их можно объединить в од ну группу, перечислив их имена через запятую, а затем уже указать общий тип Как отмечалось выше, отдельные группы параметров отделяются друг от точкой с запятой.
При передаче параметров-переменных в подпрограмму фактически через стек передаются их адреса в порядке, объявленном в заголовке подпрограммы. Следовательно, подпрограмма имеет доступ к этим параметрам и может их изменять.
Параметр-переменная указывается в заголовке подпрограммы аналогично параметру-значению, но только перед именем параметра записывается зарезервированное слово var. Действие слова var распространяется до ближайшей точки с запятой, т. е. в пределах одной группы.
7. Обработка в подпрограммах Турбо Паскаля одномерных массивов с регулируемыми размерами ( Использование нетипизированных формальных параметров и преобразования типов).
Параметр считается нетипизированным, если тип формального параметра-переменной в заголовке подпрограммы не указан, при этом соответствующий ему фактический параметр может быть переменной любого типа. Заметим, что нетипизированными могут быть только параметры-переменные. Нетипизированные параметры обычно используются в случае, когда тип данных несущественен.
8. Процедуры и функции как параметры подпрограмм в Турбо Паскале. Процедурный тип в Турбо Паскале.
Подпрограммы нужны для того, чтобы упростить структуру программы и облегчить ее отладку. В виде подпрограмм оформляются логические законченные части программы.
Подпрограмма — это фрагмент кода, к которому можно обратиться по имени. Она описывается один раз, а вызываться может столько раз, сколько необходимо. Одна и та же подпрограмма может обрабатывать различные данные, переданные ей в качестве аргументов.
В Паскале два вида подпрограмм: процедуры и функции. Они имеют незначительные отличия в синтаксисе и правилах вызова. Процедуры и функции описываются в соответствующих разделах описания, до начала блока исполняемых операторов.
Само по себе описание не приводит к выполнению подпрограммы. Для того чтобы подпрограмма выполнилась, ее надо вызвать. Вызов записывается в том месте программы, где требуется получить результаты работы подпрограммы. Подпрограмма вызывается по имени, за которым следует список аргументов в круглых скобках. Если аргументов нет, скобки не нужны.
Список аргументов при вызове как бы накладывается на список параметров, поэтому они должны попарно соответствовать друг другу.
В Turbo Pascal процедуры и функции можно рассматривать как некоторые параметры и можно использовать переменные, принимающие значение процедуры или функции. С этой целью вводятся процедурные типы, которые указывают, какой вид подпрограммы (процедуру или функцию) можно использовать в качестве параметра и с какими параметрами должны быть эти подпрограммы.
Объявление процедурного типа похоже на заголовок подпрограммы. Пишется слово procedure или function, за которым в круглых скобках записывается список формальных параметров; для функции после списка формальных параметров через двоеточие указывается тип функции. В отличие от заголовка подпрограммы здесь не указывается имя подпрограммы.
Процедурные переменные можно использовать так же, как и переменные других типов: в выражениях (если эта переменная — функция), в виде оператора (если эта переменная — процедура), как компонента другой более сложной переменной, как передаваемый в подпрограмму параметр. Идея единства данных и подпрограмм получила дальнейшее развитие в объектно-ориентированном программировании.
9. Общая классификация типов в Турбо Паскале.
Среди типов, используемых в языке, есть стандартные типы, то есть заранее предопределённые, не требующие предварительного описания в программе, и нестандартные типы, определённые самим программистом.
Все другие типы данных должны быть описаны в программе со служебным словом TYPE.
10. Структурированные типы в Турбо Паскале, их сравнительная характеристика.
Любой из структурированных типов характеризуется множественностью образующих этот тип элементов, т.е. переменная или константа структурированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложености типов. В Турбо Паскале допускается произвольная глубина вложености типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт.
Структурированные типы данных определяют наборы однотипных или разнотипных компонент. Типы компонент образуются из других типов (простых, структурированных, указателей и т. д.) данных.
В языке Паскаль существуют следующие структурированные типы.
Источник: studfile.net
Подпрограммы в Паскале
В какой части программы описываются подпрограммы в языке паскаль выберите ответ
May 2021 1 53 Report
Где записываются подпрограммы в языке Паскаль?
Выберите один из 4 вариантов ответа:
1) Только в составе циклов
2) После тела основной программы
3) Между заголовком основной программы и разделом описания переменных
4) Между разделом описания переменных и телом основной программы