ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 4

                             ГЛАВА 2.

                БЛОКИ, ЛОКАЛИЗАЦИЯ И СФЕРА ДЕЙСТВИЯ


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

                             Синтаксис

     В общем виде любой блок имеет следующий формат:

          ЪДДДДДДДДДДї     ЪДДДДДДДДДДї
блок ДДДДці раздел   ГДДДДці раздел   ГДДДДц
          іобъявленияі     іоператорові
          АДДДДДДДДДДЩ     АДДДДДДДДДДЩ


раздел    ДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДц
объявления    ш     і                              ш     і
              і     і    ЪДДДДДДДДДДДДДДДДДДї      і     і
              і     ГДДДціраздел объявления ГДДДДДДґ     і
              і     і    і    меток         і      і     і
              і     і    АДДДДДДДДДДДДДДДДДДЩ      і     і
              і     і    ЪДДДДДДДДДДДДДДДДДДї      і     і
              і     ГДДДціраздел объявления ГДДДДДДґ     і
              і     і    і констант         і      і     і
              і     і    АДДДДДДДДДДДДДДДДДДЩ      і     і
              і     і    ЪДДДДДДДДДДДДДДДДДДї      і     і
              і     ГДДДціраздел объявления ГДДДДДДґ     і
              і     і    і    типов         і      і     і
              і     і    АДДДДДДДДДДДДДДДДДДЩ      і     і
              і     і    ЪДДДДДДДДДДДДДДДДДДї      і     і
              і     ГДДДціраздел объявления ГДДДДДДґ     і
              і     і    і    переменных    і      і     і
              і     і    АДДДДДДДДДДДДДДДДДДЩ      і     і
              і     і    ЪДДДДДДДДДДДДДДДДДДї      і     і
              і     АДДДціраздел объявления ГДДДДДДЩ     і
              і          іпроцедур и функцийі            і
              і          АДДДДДДДДДДДДДДДДДДЩ            і
              АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ


     Раздел объявления меток - это та часть блока,  где объявляются
метки,   присваеваемые   оператором   в   соответствующем   разделе
операторов. Каждая метка должна помечать только один оператор.


раздел           ЪДДДДДДДї       ЪДДДДДДДї      ЪДДДї
объявления ДДДДДці label ГДДДДДДці метка ГДДВДДці ; ГДДДц
меток            АДДДДДДДЩ   ш   АДДДДДДДЩ  і   АДДДЩ
                             і   ЪДДДї      і
                             АДДДі , іДДДДДДЩ
                                 АДДДЩ


     Используемая в качестве метки последовательность  цифр  должна
находиться в диапазоне от 0 до 9999.
     Раздел объявления  констант  содержит   объявления   констант,
локальных для этого блока.


раздел         ЪДДДДДДДї       ЪДДДДДДДДДДДДї
объявления ДДДці const ГДДДДВДці объявление ГДДДДДДДДДДДВДДДц
констант       АДДДДДДДЩ ш  і  і константы  і        ш  і
                         і  і  АДДДДДДДДДДДДЩ        і  і
                         і  і  ЪДДДДДДДДДДДДДДДДДДДї і  і
                         і  і  іобъявленине типиро-і і  і
                         і  АДці  ванной константы ГДЩ  і
                         і     АДДДДДДДДДДДДДДДДДДДЩ    і
                         АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ


     Раздел объявления  типов  включает  объявления  всех  типов  в
блоке.


раздел         ЪДДДДДДДї       ЪДДДДДДДДДДДДї
объявления ДДДці type  ГДДДДДДці объявление ГДДДДВДДДц
типов          АДДДДДДДЩ  ш    і   типа     і    і
                          і    АДДДДДДДДДДДДЩ    і
                          АДДДДДДДДДДДДДДДДДДДДДДЩ


     Раздел объявления переменных состоит из объявления переменных,
локальных для этого блока.


раздел         ЪДДДДДї       ЪДДДДДДДДДДДДї
объявления ДДДці var ГДДДДДДці объявление ГДДДДВДДДц
переменных     АДДДДДЩ  ш    і переменной і    і
                        і    АДДДДДДДДДДДДЩ    і
                        АДДДДДДДДДДДДДДДДДДДДДДЩ


     Раздел объявления  процедур  и  функций  состоит из объявления
процедур и функций, локальных для этого блока.


раздел                 ЪДДДДДДДДДДДДї
объявления ДДДДДДДДДВДці объявление ГДДДДДВДДДДц
процедур и       ш  і  і процедуры  і  ш  і
функций          і  і  АДДДДДДДДДДДДЩ  і  і
                 і  і  ЪДДДДДДДДДДДДї  і  і
                 і  АДці объявление ГДДЩ  і
                 і     і функции    і     і
                 і     АДДДДДДДДДДДДЩ     і
                 і     ЪДДДДДДДДДДДДї     і
                 ГДДДДці объявление ГДДДДДґ
                 і     іконстрактораі     і
                 і     АДДДДДДДДДДДДЩ     і
                 і     ЪДДДДДДДДДДДДї     і
                 ГДДДДці объявление ГДДДДДґ
                 і     ідестрактора і     і
                 і     АДДДДДДДДДДДДЩ     і
                 АДДДДДДДДДДДДДДДДДДДДДДДДЩ


     Раздел операторов  определяет  операторы  или  алгоритмические
действия, которые выполняются в блоке.


раздел           ЪДДДДДДДДДДДї
операторов ДДДДДці составной ГДДДДДц
                 і  оператор і
                 АДДДДДДДДДДДЩ


                    Правила для сферы действия

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

   - Переобъявление во  вложенном  блоке:  допустим,  что  Exterior
     является блоком,  в котором вложен другой блок Interior.  Если
     Exterior и Interior имеют идентификаторы с  одинаковым именем,
     например,  J, то Interior имеет доступ только к идентификатору
     J,  который в нем объявлен, и аналогично Exterior имеет доступ
     только к идентификатору J, объявление которого он содержит.

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

     - Переобъявление внутри блока:  идентификатор или метка  могут
       быть объявлены  только  один  раз  на внешнем уровне данного
       блока. Единственным  исключением  является   случай,   когда
       объявление указывается в списке полей записи.

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

     Сфера действия  идентификатора  компоненты объекта расширяется
     на этот тип объекта. См. Главу 3 для дальнейшего объяснения.


     Сфера действия интерфейса и стандартных идентификаторов.

     Программы и модули,  содержащие предложения uses, имеют доступ
к  идентификаторам,  объявленным  в  разделах  интерфейса  модулей,
указанных в этих предложениях uses.
     Каждый модуль  в  предложении  uses  определяет  свою  область
действия,   которая  охватывает  остальные  используемые  модули  и
программу в целом.  Первый модуль в предложении  uses  представляет
самую   внешнюю  область  действия,  а  последний  модуль  -  самую
внутреннюю.  Это означает,  что если два или более модулей содержат
объявление одного  и  того  же идентификатора,  то при неуточненном
обращении к этому идентификатору будет выбран тот  вариант, который
был описан в последнем модуле в предложении uses. Однако, вы можете
выбрать любой экземпляр  этого  идентификатора,  указав  уточненный
идентификатор.
     Идентификаторы предопределенных констант,  типов,  переменных,
процедур  и  функций  Turbo Pascal действуют,  как если бы они были
объявлены в блоке, охватывающем все используемые модули и программу
в целом.  В  действительности  эти стандартные обьекты определены в
модуле System,  который используется любой программой  или  модулем
прежде любого модуля,  указанного в предложении uses. Это означает,
что любой модуль или  программа  могут  переопределить  стандартные
идентификаторы,  а  обращение  к ним может быть выполнено с помощью
составного    идентификатора,    например,    System.Integer    или
System.Writeln.



Яндекс цитирования