Процедуры и функции
Подпрограммы бывают двух видов — процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его обратно в главную программу (возвращает значение). Это значение имеет определенный тип (говорят, что функция имеет такой-то тип).
В Си++ понятия «процедура» нет — там имеются только функции, а если никакого значения функция не вычисляет, то считается, что она возвращает значение типа «никакое» (void).
Параметры подпрограмм
Чтобы работа подпрограммы имела смысл, ей надо получить данные из внешней программы, которая эту подпрограмму вызывает. Данные передаются подпрограмме в виде параметров или аргументов, которые обычно описываются в ее заголовке так же, как переменные.
Управление последовательностью вызова подпрограмм
Подпрограммы вызываются, как правило, путем простой записи их названия с нужными параметрами. В Бейсике есть оператор CALL для явного указания того, что происходит вызов подпрограммы.
Подпрограммы активизируются только в момент их вызова. Операторы, находящиеся внутри подпрограммы, выполняются, только если эта подпрограмма явно вызвана. Пока выполнение подпрограммы полностью не закончится, оператор главной программы, следующий за командой вызова подпрограммы, выполняться не будет.
Подпрограммы могут быть вложенными — допускается вызов подпрограммы не только из главной программы, но и из любых других подпрограмм.
В некоторых языках программирования допускается вызов подпрограммы из себя самой. Такой прием называется рекурсией и потенциально опасен тем, что может привести к зацикливанию — бесконечному самовызову.
Структура подпрограммы
Подпрограмма состоит из нескольких частей: заголовка с параметрами, тела подпрограммы (операторов, которые будут выполняться при ее вызове) и завершения подпрограммы.
Локальные переменные, объявленные внутри подпрограммы, имеют областью действия только ее тело.
Функции
Бейсик | Паскаль | Си++ | |
Заголовок функции | FUNCTION имя (список_параметров) Тип возвращаемого значения определяется специальным символом после имени функции | function имя (список_параметров) : тип_функции; | тип_функции имя(список_параметров) |
Тело | Последовательность операторов | begin последовательность операторов end; | { последовательность операторов }; |
Завершение | END FUNCTION | нет | нет |
Процедуры
Бейсик | Паскаль | Си++ | |
Заголовок процедуры | SUB имя (список_параметров) | procedure имя (список_параметров) ; | void имя(список_ параметров) |
Тело | Последовательность операторов | begin последовательность операторов end; | { последовательность операторов }; |
Завершение | END SUB | нет | нет |
Дата добавления: 2016-09-26; просмотров: 1865;