Опрос

Какой раздел для Вас является более полезным?
 

Календарь

2011
Июнь
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930   

Кто на сайте

Сейчас на сайте находятся:
 10 гостей 

Reklama



М. Бен-Ари. Языки программирования. Практический сравнительный анализ. Страница 131

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

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

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 и не должен изобретать странно звучащие имена. Кроме того, всегда можно добавить глобальную переменную, не беспокоясь о том, что ее имя совпадет с именем какой-нибудь локальной переменной, которое ис­пользуется одним из программистов вашей группы. Недостаток же состоит в том, что имя переменной могло быть случайно перекрыто, особенно если ис­пользуются большие включаемые файлы для централизации глобальных объ­явлений, поэтому, вероятно, лучше избегать перекрытия имен переменных. Однако нет никаких возражений против многократного использования име­ни в разных областях действия, так как нельзя получить доступ к обеим пере­менным одновременно независимо от того, являются имена одинаковыми или разными:

procedure Main is

Ada

procedure Proc_1 is

Index: Integer; -- Одна область действия

Web-дизайн (с) 2010 All rights reserved