Лекция 01. Тема Общая характеристика языков программирования высокого уровня
Лекция № 6 Область видимости переменных
Download 4.1 Mb. Pdf ko'rish
|
Lektsii po YaP Lukinova 2 sem
- Bu sahifa navigatsiya:
- Статический обзор данных.
Лекция № 6 Область видимости переменных.
Область видимости – фрагмент программы, в котором переменная видима, т.е. определены ее атрибуты и к ней можно обратиться. Область видимости тесно связана с понятием блока программы. Блок позволяет фрагменту программы иметь собственные локальные переменные, которые, как правило, автоматические, поэтому память им выделяется в начале выполнения блока и освобождается по его окончании. Существует два способа реализации области видимости: в виде статического обзора данных (СОД), в виде динамического обзора данных (ДОД). Статический обзор данных. Статический обзор данных – это связывание глобальных (нелокальных) переменных с атрибутами (т.е. определение области видимости переменных) на стадии компиляции. Он создается определениями главной программы, подпрограмм и блоков и определяет механизм вложенности подпрограмм или блоков друг в друга (определяется иерархией вложенности подпрограмм и блоков, см. рис. 5). Рисунок 5. Схема областей видимости главной программы Program, подпрограмм A,B,C,D,E. Когда в языке со статическим обзором данных компилятор обнаруживает переменную, ее атрибуты определяются путем поиска объявившего ее оператора. Program E B D А С Например: Procedure big; var x: integer; Procedure sub1; begin {sub1}; ..x… end {sub1}; Procedure sub2; var x: integer; begin…end {sub2}; Begin {big}…end {big}; Здесь, ссылка на переменную x сделана в процедуре sub1. Вначале компилятор ищет объявление в sub1, и если не находит, продолжает поиск в процедуре, породившей sub1 (статическом родителе). Локализованные в блоке имена могут совпадать с ранее объявленными глобальными переменными. В этом случае считается, что локальное имя «закрывает» глобальное и делает его недоступным. Например: Var i : integer; Procedure P; Var i : integer; begin writeln(i); end (P); begin i := 1; Обращение к блоку P; end. Эта программа выдаст любое значение, т.к. локальная переменная i в процедуре Р «закроет» глобальную, а значение i при входе в блок P не определено. Если убрать описание i : integer из блока P, на экран будет выведено значение глобальной переменной i, т.е. 1. Основной недостаток СОД заключается в том, что все переменные, объявленные в главной программе, видимы во всех подпрограммах иерархии и избежать этого нельзя (только если закрыть локальной). Download 4.1 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling