ПАРАМЕТРЫ
Параметры могут иметь любой тип, включая структурированный. ПАСКАЛЬ поддерживает два различных метода передачи параметров: по значению и по ссылкам. Когда параметры передаются по значениям, формальный параметр является переменной, локальной в блоке. Фактический параметр может быть любым выражением того же типа, что и соответствующий ему формальный параметр. Такие параметры называются параметрами-значениями. Их главная отличительная черта - изменение формальных параметров не влечет за собой изменения фактических параметров. Приведем пример типичной записи параметров-значений в описании процедур и функций: Procedure Копе (А, В, С: integer; D: real); Function Docs (SI, S2: real; Flag: boolean): real; Тип параметров в секции формальных параметров должен быть указан в виде определенного ранее идентификатора типа. Так, запись Procedure Okl (I: array [l..12] of real); является ошибочной. Тип переменной следует определить ранее в разделе описания типов блока: Type Massiv = array [l..12] of real; Procedure Okl (I: Massiv); Когда параметр передается посредством ссылки, фактический параметр является переменной. Формальный параметр обозначает эту фактическую переменную в течение всего времени активизации блока. Параметры, переданные посредством ссылки, называются параметрами-переменными. Их характерный признак - любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных в секции формальных параметров служит зарезервированное слово Var. При использовании параметров-переменных формальные и фактические параметры должны совпадать по количеству и типу. Однако возможны два исключения: Формальные параметры без типа несовместимы ни с каким типом. Допустимо сочетание параметров-значений и параметров-переменных в одной секции формальных параметров: Procedure Prots (Var А, В, С: real; S: boolean); Такая запись означает, что А, В, С - параметры-переменные, а S - параметр-значение. Напомним, что если процедура должна возвратить в программу определенные результаты, они должны быть специфицированы как параметры-переменные, т. е. в сочетании со словом Var, в противном случае результаты не будут возвращены.
|