Лекция: Параметры процедур

Параметры могут иметь любой тип, включая структурированный. Pascal поддерживает два различных метода передачи параметров: по значению и по ссылкам.

Когда параметры передаются по значениям, формальный параметр является переменной, локальной в блоке. Фактический параметр может быть любым выражением того же типа, что и соответствующий ему формальный параметр. Такие параметры называются параметрами-значениями. Их главная отличительная черта — изменение формальных параметров не влечет за собой изменения фактических параметров. Приведем пример типичной записи параметров-значений в описании процедур и функций:

Procedure Konc (A, B, C: integer; D: real);

Function Docs (S1, S2; real; Flag: boolean): real;

Тип параметров в секции формальных параметров должен быть указан в виде определенного ранее идентификатора типа. Так, запись

Procedure Okl (I: array[1… 12] of real);

является ошибочной. Тип переменной следует определить ранее в разделе описания типов блока:

Type Massiv = array[1… 12] of real;

Procedure Okl (I: Massiv);

Когда параметр передается посредством ссылки, фактический параметр является переменной. Формальный параметр обозначает эту фактическую переменную в течение всего времени активизации блока. Параметры, переданные посредством ссылки, называются параметрами-переменными. Их характерный признак — любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных в секции формальных параметров служит зарезервированное слово Var.

При использовании параметров-переменных формальные и фактические параметры должны совпадать по количеству и типу.

Однако возможны два исключения:

1. Можно передать значение параметров строкового типа, не совпадающее по длине с описанной в подпрограмме переменной.

2. Допускается отсутствие типа формального параметра в секции формальных параметров заголовка подпрограммы:

Procedure (Var FrontPage Express1);

Формальные параметры без типа несовместимы ни с каким типом. Допустимо сочетание параметров-значений и параметров-переменных в одной секции формальных параметров:

Procedure Prots (Var A, B, C: real; S: boolean);

Такая запись означает, что А, В, С — параметры-переменные, а S- параметр-значение. Напомним, что если процедура должна возвратить в программу определенные результаты, они должны быть специфицированы как параметры-переменные, т.е. в сочетании со словом Var, в противном случае результаты не будут возвращены.

еще рефераты
Еще работы по информатике