Cтраница 3
Процедура-подпрограмма - это процедурный блок, при выполнении которого на основании заданного множества данных формируются значения другого множества данных. Сформированные результаты помещаются в память на хранение и могут быть использованы многократно. [31]
Обычные блоки и вложенные процедурные блоки, в свою очередь, могут содержать другие блоки. Максимальный уровень вложен-лости блоков равен трем. [32]
Управление последовательностью выполнения процедурных блоков осуществляется главной процедурой. Обычный блок ( блок BEGIN) и процедурный блок объединяют части алгоритма в одно целое. Эти блоки определяют область действия идентификаторов, описанных в них, и управляют резервированием основной памяти. [33]
В отличие от процедурного блока, выполнение операторов которого производится по оператору CALL, простои блок начинает выполняться в тот момент, когда закончилось выполнение непосредственно предшествующего оператора ( или простого блока), а также в том случае, когда был осуществлен переход на метку блока по оператору GO TO. Отметим, что, в отличие от простых блоков, внутренние процедурные блоки, если они расположены [ среди операторов процедуры ( что допускается в PL / 1, хотя и не рекомендуется) последовательно не выполняются, а просто обходятся. Выход из простого блока происходит после выполнения оператора END, ограничивающего блок, или ( что обычно не рекомендуется) по оператору GO ТО, выполняющему переход на метку, расположенную вне данного блока. [34]
Управление последовательностью выполнения процедурных блоков осуществляется главной процедурой. Обычный блок ( блок BEGIN) и процедурный блок объединяют части алгоритма в одно целое. Эти блоки определяют область действия идентификаторов, описанных в них, и управляют резервированием основной памяти. [35]
Завершив свое выполнение, процедурный блок передает управление участку программы, откуда произведен вызов. [36]
Оператор PROCEDURE определяет начало процедурного блока и его основную точку входа. Он может содержать также и - другие сведения, необходимые для работы процедурного блока. [37]
Что касается описаний и процедурных блоков, то здесь справедливы все те замечания, которые были сделаны относительно структуры простой группы. [38]
Обращение к функции из главного процедурного блока производится по имени функции с аргументами. Имя функции в программе может использоваться наравне с любым выражением. В нашем примере оно является операндом операции умножения. После выполнения функции вместе с возвратом в точку вызова происходит и передача вычисленного значения. Возврат в точку вызова производится в том случае, если выполнение функции заканчивается оператором RETURN. Такой возврат в вызывающую программу не является единственным для функции. Она может заканчиваться и выполнением оператора перехода, который определит другую точку возврата. Очевидно, вычисление выражения, в котором было обращение к функции, не будет закончено в этом случае. Точка возврата для оператора перехода ( соответствующая метка) может быть параметром функции. [39]
Главная процедура организует вызов остальных процедурных блоков исходной программы, которые по отношению к главной процедуре являются вызываемыми. Вызываемые процедурные блоки могут сами быть вызывающими. [40]
Имена, объявленные в процедурном блоке NRTL, сохраняют свои значения только в пределах этого блока. Однако массив Y ( 10), объявленный в главном процедурном блоке, не может использоваться в процедуре NRTL, так как в ней содержится объявление этого же имени. Таким образом, эти массивы обозначают различные объекты программы. [41]
Операторы PROCEDURE и END ограничивают процедурный блок. [42]
Операторы PROCEDURE и END ограничивают процедурный блок, а операторы, которые находятся между ними ( тело процедуры), представляют собой программу выделенного типового участка. В качестве формальных параметров могут использоваться имена простых переменных, массивов и структур, имена точек входов и файлов, переменные типа метки. [43]
Простой блок В входит в процедурный блок Р, который может быть или внутренним или внешним. Переменные А, описанные в блоках Р и В, являются разными переменными, локализованными каж-дая в своем блоке, и изменение одной из них на значение другой никак не влияет. Переменная D, описанная в блоке Р, и переменная D, встречающаяся в блоке В и не описанная в нем, это одна и та же переменная, и изменение ее значения в одном из блоков повлияет на ее величину в другом. [44]
Простой блок В входит в процедурный блок Р, который может быть внутренним или внешним. Переменная А, описанная в блоке Р, и переменная А, описанная в блоке В, - разные переменные. Переменная D, описанная в блоке Р и не описанная в блоке В, - одна и та же переменная. [45]