52
7.3. Формальные параметры
Эта процедура сообщит об ошибке в процессе ее выполнения, если ей дадим
такой фактический параметр, что если табуляции будут заменены необходимым
числом пробелов, получится строка, длиннее максимальной (заданной как фактический
параметр). Если подобная вероятность существует, а появление ошибки нежелательно,
можем добавит дополнительное условие в начале цикла WHILE. Проверкой этого
условия будем констатировать есть ли место для введения пробелов, т.е.
действительная длина (SizeOf(s)) фактического параметра меньше текущей
(максимальная длина строки равна SizeOf(s) -1, так как на представление строки в памяти
уходить на один байт больше, который содержит ее длину - см. п. 12).
7.4. Фактические параметры
Список фактических параметров в операторе процедуры или описании функции
определяет фактические параметры, которые при выполнении процедуры или функции
должны быть подставлены в качестве формальных параметров. Если процедура или
функция не имеет списка формальных параметров, то не должен быть и список
фактических параметров.
ActualParamList =
[ '(' [Expression {',' Expression} ] ')' ].
Соответствие между фактическими и формальными параметрами
устанавливается путем позиционного сопоставления параметров из соответствующих
списков.
При сопоставлении компилятор следит о том, чтобы соответствующие типы
сопоставляемых параметров были совместимы. При том, если параметр передается по
значению, оба сопоставляемые типы должны обладать совместимость по
присваиванию, а если параметр передается по адресу, оба типа должны быть
идентичными. Исключения от этого правила состовляют следующие случаи:
*
если формальный параметр нетипизированный, фактический параметр
может быть переменной любого типа;
*
при формальном параметре стандартного типа BYTE, WORD или LONG-
WORD, фактический параметр может иметь любой тип лишь только его
представление занимало в памяти 1, 2 или 4 байта, соответственно;
*
если формальный параметр принадлежит стандартному типу POINTER, то
фактическим параметром может быть любая переменная ссылочного типа;
*
если формальный параметр-переменная типа STRING имеет спецификатор
длины, достаточно чтобы фактический параметр имел не меньшую
максимальную длину по отношению формального;
*
если формальный параметр-переменная типа STRING не имеет
спецификатор длины, максимальной длине фактического параметра не
накладываются никакие ограничения;
*
компоненты упакованного типа нельзя сопоставлять формальным
параметрам-переменным.
Примечание: Некоторые стандартные процедуры и функции отступают от этих
правил. Они позволяют при обращении к ним связывать с одним формальным
параметром фактические параметры разного типа и разного вида. Поэтому лучше
было бы называть их не процедурами или функциями, а более общим понятием -
конструкциями языка. В настоящем документе будем придерживаться к
установленному названию в литературе - процедуры и функции.
<<  <  GO  >  >>

Вернуться к началу сайта