ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 4 Глава 2. Блоки, локальность и область действия Блоки состоят из описаний, которые записаны и скомбинированы в любом порядке, и операторов. Каждый блок является частью описания процедуры или функции, или частью программы или модуля. Все идентификаторы и метки, объявленные в разделе описаний, являются для блока локальными. Синтаксис В общем виде любой блок имеет следующий формат: ЪДДДДДДДДДДДДДДДДДї ЪДДДДДДДДДДДДДДДДДДДї блок ДДДДДДі раздел описаний ГДДДДДДі раздел операторов ГДД АДДДДДДДДДДДДДДДДДЩ АДДДДДДДДДДДДДДДДДДДЩ раздел ДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВД описания і ЪДДДДДДДДДДДДДДДДДДДДДї і і ГДДіраздел описания метокГДДДДДДДДДДДДДДДґ і і і АДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДДДДї і і і ГДДіраздел описания константГДДДДДДДДДДДДґ і і і АДДДДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДї і і і ГДДіраздел описания типовГДДДДДДДДДДДДДДДґ і і і АДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДї і і і ГДДіраздел описания переменныхГДДДДДДДДДДґ і і і АДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї і і і АДДіраздел описания процедур и функцийГДДЩ і і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Раздел описания меток - это та часть блока, где описываются метки, присваиваемые операторам в соответствующем разделе операторов. Каждая метка должна помечать только один оператор. ХНННННё ЪДДДДДї ХНё раздел описания меток ДДДіlabelГДДДДДіметкаГДДДВДДі;ГДДДДД ФНННННѕ АДДДДДЩ і ФНѕ і ХНё і АДДДДДґ,ГДДДДДЩ ФНѕ Используемая в качестве метки последовательность цифр должна находиться в диапазоне от 0 до 9999. Раздел описания констант содержит описания констант, локальных для этого блока. ХНННННё ЪДДДДДДДДДДДДДДДДДДї раздел описанияДДДіconstГДДДВДДіописание константыГДДДДДДДВД констант ФНННННѕ і АДДДДДДДДДДДДДДДДДДЩ і і і ЪДДДДДДДДДДДДДДДДДДДДДї і і і АДДіописание типизованнойГДДЩ і і іконстанты і і і АДДДДДДДДДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Раздел описания типов включает в себя описания всех типов в блоке. ХНННННё ЪДДДДДДДДДДДДДї раздел описания типовДДДДіtype ГДДДДіописание типаГДДДВДД ФНННННѕ АДДДДДДДДДДДДДЩ і і і АДДДДДДДДДДДДДДДДДДДДДЩ Раздел описания переменных состоит из описаний переменных, локальных для этого блока. ХНННё ЪДДДДДДДДДДДДДДДДДДДї раздел описанияДДДіvarГДДДДіописание переменнойГДДДДДДВД переменных ФНННѕ АДДДДДДДДДДДДДДДДДДДЩ і і і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Раздел описания процедур и функций состоит из описаний процедур и функций, локальных для этого блока. ЪДДДДДДДДДДДДДДДДДДДДї раздел описанияДДДДДВДВДДґ описание процедуры ГДДДДДДДДДДДДДДДД процедур и функций і і АДДДДДДДДДДДДДДДДДДДДЩ і і ЪДДДДДДДДДДДДДДДДДДДДї і і і ГДі описание функции ГДДДДДДДґ і і і АДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДДДДї і і і ГДі описание конструктора ГДДДґ і і і АДДДДДДДДДДДДДДДДДДДДДДДДЩ і і і і ЪДДДДДДДДДДДДДДДДДДДДДДДї і і і АДі описание деструктора ГДДДДЩ і і АДДДДДДДДДДДДДДДДДДДДДДДЩ і АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ Раздел операторов определяет операторы или алгоритмические действия, которые должны быть выполнены блоком. ЪДДДДДДДДДДДДДДДДДДДДї раздел операторовДДДДДДДі составной оператор ГДДДДДДДДДД АДДДДДДДДДДДДДДДДДДДДЩ Правила для области действия Наличие идентификатора или метки в описании означает определение идентификатора или метки. Каждый раз, когда идентификатор или метка встречаются в программе, они должны находиться в области действия этого описания. Область действия идентификатора ил и метки распространяется от их описания до конца текущего блока, включая все блоки, входящие в текущий блок. Ниже приводится несколько исключений. - Переопределение во вложенном блоке. Допустим, что Exterior является блоком, в который вложен другой блок Interior. Если Exterior и Interior содержат идентификаторы с одинаковым именем, например, j, то Interior имеет доступ только к идентификатору j, который в нем описан, и аналогично Exterior имеет доступ только к идентификатору j, описание которого он содержит. - Положение описания внутри блока. Идентификаторы и метки нельзя использовать до тех пор, пока они не описаны. Описание идентификатора или метки должно предшествовать любому вхождению идентификатора или метки в тексте программы, с одним исключением. Базовый тип типа указатель может быть идентификатором, который еще не описан. Однако, в конечном итоге этот идентификатор должен быть описан в том же разделе описания, где встречается данный тип указатель. - Переопределение внутри блока. Идентификатор или метка могут быть описаны только один раз на внешнем уровне данного блока. Единственным исключением является случай, когда описание указывается внутри блока, входящего в данный, или когда описание ука зывается в списке полей записи. Идентификатор поля записи описывается в рамках типа запись и имеет значение только в сочетании со ссылкой на переменную этого типа запись. Поэтому вы можете повторно определить идентификатор поля (с таким же написанием) в том же самом блоке, но не н а том же самом уровне в рамках указанного типа запись. Однако, идентификатор, который был ранее описан, может быть повторно определен как идентификатор поля в том же самом блоке. Область действия компонентов объекта распространяется на область данного типа объекта (см. далее). Область действия интерфейса и стандартных идентификаторов Программы и модули, содержащие операторы uses (операторы использования) имеют доступ к идентификаторам, которые описаны в интерфейсной части модулей, указанных в этих операторах uses. Каждый модуль в операторе uses определяет свою область действия, которая охватывает остальные модули и программу в целом. Первый модуль в операторе uses представляет самую внешнюю область действия, а последний модуль представляет самую внутреннюю об ласть действия. Это означает, что если два или более модулей содержат описание одного и того же идентификатора, то при неуточненном обращении к этому идентификатору будет выбран тот вариант, который был описан в последнем модуле в операторе uses. Однако, вы можете выбрать любой вариант этого идентификатора, указав уточненный идентификатор. Идентификаторы встроенных констант, типов, переменных, процедур и функций Турбо Паскаля действуют так, как если бы они были описаны в блоке, охватывающем все используемые модули и программу в целом. В действительности эти стандартные объекты описаны в модуле System, который используется любой программой или модулем прежде любого модуля, указанного в операторе uses. Это означает, что любой модуль или программа могут переопределить стандартные идентификаторы, а обращение к ним может быть выполнено с помощью уточненного (составного) идентификатора, например, System.Integer или System.Writeln. |