ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 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. |