Вспомогательные алгоритмы
В соответствии с методами структурного программирования построение программ производится методом постепенной детализации алгоритмов. Некоторые части алгоритма могут выделяться в виде вспомогательных алгоритмов, решающих вспомогательные подзадачи.
Для реализации вспомогательных алгоритмов служат подпрограммы или процедуры. Подпрограмма — самостоятельный фрагмент программы, оформленный в виде, допускающем многократное обращение к нему из разных точек программы. Обращение к подпрограмме — переход к выполнению подпрограммы с заданием информации, необходимой для ее выполнения и возврата.
Существует два вида подпрограмм: процедуры и функции. Разница между ними состоит в том, что функция через свое имя возвращает одно значение определенного типа и может, использоваться в выражениях наряду со встроенными функциями .
Процедура
Алгоритмический язык | Паскаль |
---|---|
алг <имя процедуры> (<список параметров>) <операторы> кон |
procedure <имя процедуры> (<список параметров>); <описание> begin <операторы> end |
Вызов процедуры из основной программы производится оператором вызова процедуры: <имя процедуры>(<список значеиий>).
В процедуру могут передаваться параметры, то есть некоторые переменные, которые могут использоваться внутри процедуры. При вызове процедуры с помощью оператора вызова этим переменным присваиваются значения, указанные в этом операторе. Параметры, описанные в заголовке процедуры, называются формальными значения, которые присваиваются этим параметрам в процессе вызова — фактическими параметрами.
Параметры в процедуру могут передаваться по значению или по ссылке. В случае передачи параметра по значению, в процедуру передастся значение фактического параметра. Изменение формального параметра внутри процедуры не отразится на значении фактического параметра. При передаче параметра по ссылке формальный параметр является ссылкой на фактический и его изменение внутри процедуры изменит значение фактического параметра. Второй метод обычно используется для возвращения результатов работы функции в главную программу.
Для того чтобы передать параметр по ссылке, в Паскале в описании формальных параметров в теле процедуры используется ключевое слово var:
procedure SubTest(a,b:integer; var c:real, var d:integer);
здесь параметры а и b передаются по значению, а параметры с и d — по ссылке.
Функции
Функции по своей сути похожи на процедуры, но возвращают одно значение через свое имя.
Бейсик | Паскаль |
---|---|
FUNCTION <имя>(<параметры>) <операторы> END FUNCTION |
function <имя>(<параметры>):<тип результата>; <описания> begin <операторы> end |
Для того чтобы вернуть значение из функции, необходимо внутри тела функции переменной, имя которой совпадает с именем функции, присвоить необходимое значение. Эту переменную не надо объявлять в области описания.
Вызов функции производится в выражениях и операторах подобно стандартным функциям языка:
<Переменная> := <Функция> (<Параметры>)
Реализация алгоритмов с помощью подпрограмм — процедур и функций — называется процедурным программированием. В последние годы все большую популярность приобретают методы объектного и событийного программирования.