Главная Промышленная автоматика.

Это накладывает на любой оператор процедуры ограничения, заключающиеся в том. что класс и тип каждого фактического параметра должен быть совместим с классом и типом соответствующего формального параметра. Некоторые важные частные случаи этого общего правила приведены ниже:

4.7.5.1. Если строка является фактическим параметром оператора процедуры или указателя функции, для которых соответствующее тело процедуры является оператором в смысле языка .АЛГОЛ-60 (а не неалгольньш кодом, см. разд. 4.7.8), то эту строку можно использовать в теле процедуры только как фактический параметр в дальнейших обращениях к процедурам. В конечном итоге строку Можно использовать только в теле процедуры, выраженном иеалгольным кодом.

4.7.5.2. Формальному параметру, не вызываемому значением и встречающемуся в теле процедуры в виде переменной левой части некоторого оператора присваивания, может соответствовать в качестве фактического параметра только переменная (частный случай выражения).

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

4.7.5.4. Формальному параметру, вызываемому значением, не может, вообще говоря, соответствовать какой-либо идентификатор переключателя, или идентифи катор процедуры, или строка, так как последние не обладают значениями (исключение составляет идентификатор такой процедуры, описание которой имеет пустую совокупность формальных параметров (см. разд. 5.4.1) и которая определяет значение указателя функции (см. разд. 5.4.4). Такой идентифиатор процедуры сам по себе является законченным выражением.



5. t)-nucания 51

4.7.5.5. Любой формальный параметр может налагать ограничения на тип соответствующего связанного с ним фактического параметра (эти ограничения могут быть как указаны, так и не указаны посредством спецификаций в заголовке процедуры). Очевидно, что в операторе процедуры эти ограничения должны быть соблюдены.

4.7.6. Исключен . -

4.7.7. Ограничители параметров

Все ограничители параметров считаются эквивалент« ными. Не устанавливается никакого соответствия между ограничителями параметров, используемыми в операторе процедуры, и ограничителями, фигурирующими в заголовке процедуры, кроме того лишь, что их количество, должно быть одинаковым. Таким образом, вся информация, которая вносится употреблением сложных ограничителей, полностью избыточна.

4.7.8. Тело процедуры, выраженное в коде

Ограничения, налагаемые на оператор процедуры, обращающийся к процедуре, тело которой выражено в неалгольном коде, очевидно, могут вытекать лишь из характеристик данного кода и из особых соображений лиц, пользующихся им, и, таким образом, остаются вне рамок эталонного языка.

б. описания . .

Описания служат для того, чтобы определить некоторые свойства величин, используемых в программе, и связать эти величины с идентификаторами. Описание идентификатора имеет силу только в одном блоке. Вне этого блока тот же идентификатор можно использовать для других целей (см. разд. 4.1.3).

В процессе работы это влечет за собой следующее: с момента входа в блок (через begin, так как внутренние метки локальны и, следовательно, недостижимы



извне) все идентификаторы, описанные в блоке, приобретают смысл, вытекающий из природы данных описаний. Если эти идентификаторы уже были определены другими описаниями, находящимися вне блока, то на некоторое время они получают новый смысл. С другой стороны, те идентификаторы, которые не описаны в блоке, сохраняют свой прежний смысл.

В момент выхода из блока (через end или оператор перехода) все идентификаторы, которые описаны в блоке, теряют свой локальный смысл.

Описание можно снабдить добавочным описателем own (собственный. - Ped). Это приводит к следующему: к моменту повторного входа в блок значения собственных величин сохраняются такими же, какими они были после последнего выхода, в то время как значения описанных величин, которые «е отмечены описателем own, будут не определены. Следует описывать все идентификаторы программы, за исключением меток, формальных параметров в описаниях процедур и, возможно, идентификаторов стандартных функций (см. разд. 3.2.4 и 3.2.5). В начале любого блока никакой идентификатор нельзя описывать более одного раза.

Синтаксис

(описание): : = (описание типа)(описание массива) (описание переключателя) (описание процеду-

• ры)

5.1. Описания типа

5.1.1. Синтаксис

(список типа): : = (простая переменная)[(простая переменная), (список типа)

(тип):: = real (integer (Boolean

(локальный или собственный тип): : = (тип) own (тип) (описание типа): : = (локальный или собственный тип) (список типа)

5.1.2. Примеры integer р, q, s

own Boolean Acryt, п.





0 1 2 3 4 5 6 7 8 9 10 11 12 [13] 14 15 16 17 18 19 20 21 22

0.0022