Лекция 01. Тема Общая характеристика языков программирования высокого уровня


Лекция № 6 Область видимости переменных


Download 4.1 Mb.
Pdf ko'rish
bet16/57
Sana12.11.2023
Hajmi4.1 Mb.
#1767546
TuriЛекция
1   ...   12   13   14   15   16   17   18   19   ...   57
Bog'liq
Lektsii po YaP Lukinova 2 sem

Лекция № 6 Область видимости переменных. 
Область видимости – фрагмент программы, в котором переменная 
видима, т.е. определены ее атрибуты и к ней можно обратиться. 
Область видимости тесно связана с понятием блока программы. Блок 
позволяет фрагменту программы иметь собственные локальные переменные, 
которые, как правило, автоматические, поэтому память им выделяется в 
начале выполнения блока и освобождается по его окончании.
Существует два способа реализации области видимости: 

в виде статического обзора данных (СОД), 

в виде динамического обзора данных (ДОД).
Статический обзор данных.
Статический обзор данных – это связывание глобальных (нелокальных) 
переменных с атрибутами (т.е. определение области видимости переменных) 
на стадии компиляции. Он создается определениями главной программы
подпрограмм и блоков и определяет механизм вложенности подпрограмм 
или блоков друг в друга (определяется иерархией вложенности подпрограмм 
и блоков, см. рис. 5).
Рисунок 5. Схема областей видимости главной программы Program, 
подпрограмм A,B,C,D,E.
Когда в языке со статическим обзором данных компилятор 
обнаруживает переменную, ее атрибуты определяются путем поиска 
объявившего ее оператора.
Program 


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:
1   ...   12   13   14   15   16   17   18   19   ...   57




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling