Языки программирования - концепции и принципы

ная Global существует на протяжении


Блок процедуры Main — вся программа, поэтому перемен­ ная Global существует на протяжении выполнения программы. Такая пере­менная называется статической: после того как ей отведена память, она су­ществует до конца программы. Локальная переменная имеет два времени жизни, соответствующие двум вызовам локальной процедуры. Так как эти интервалы не перекрываются, переменной каждый раз можно выделять но­вое место памяти. Локальные переменные называются автоматическими, по­тому что память для них автоматически выделяется при вызове процедуры (при входе в блок) и освобождается при возврате из процедуры (при выходе из блока).

 

 

 

 

 

 

 

 

 

 

 

 



 

Скрытые имена

Предположим, что имя переменной, которое используется в главной про­грамме, повторяется в объявлении в локальной процедуре:

procedure Mam is

        Global: Integer;

        V: Integer;                                                      -- Объявление в Main

procedure Proc(Parm: in Integer) is

        Local: Integer;

        V: Integer;                                                      -- Объявление в Proc

begin

      Global := Local + Parm + V;                            -- Какое именно V используется?

end Proc;

begin -- Main

      Global := Global + V;                                        -- Какое именно V используется?

end Main;

     В этом случае говорят, что локальное объявление скрывает (или перекрывает) глобальное объявление. Внутри процедуры любая ссылка на V является ссылкой на локально объявленную переменную. С технической точки зрения область действия глобальной переменной V простирается от точки объявления до конца Main, но она невидима в локальной процедуре Ргос.

   Скрытие имен переменных внутренними объявлениями удобно тем, что программист может многократно использовать естественные имена типа Current_Key и не должен изобретать странно звучащие имена.

Содержание раздела