Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 (6).doc
Скачиваний:
45
Добавлен:
12.05.2015
Размер:
1.67 Mб
Скачать

Принцип локалізації

В процесі запису алгоритму підзадачі, зазвичай, виникає необхідність оголошення деяких додаткових типів значень і (або) програмних об'єктів, наприклад допоміжних змінних для представлення проміжних результатів. Якщо всі їх описувати в основній програмі, то паралелізму і незалежності при розробці різних частин програми досягти не вдасться.

Також один і той же ідентифікатор в програмі не повинен використовуватися для різних цілей. З одного боку, ця вимога зрозуміла, оскільки інакше може виникнути неоднозначність розуміння і інтерпретації програми. З іншого боку, абсолютне виконання цієї вимоги приводить до значних труднощів при паралельній роботі виконавців в частині узгодження ідентифікаторів, які використовуються в підпрограмах і в основній програмі.

Зазначені труднощі усуваються в більшості мов програмування завдяки блоковій структурі програми і принципу локалізації даних.

Механізм блокової організації програм дозволяє розглядати програму як деяку ієрархічну структуру, що складається з головної програми і множини вкладених блоків (підпрограм). Зовнішньою по відношенню до всіх інших підпрограм, є програма (рис. 2).

Рис. 2. Реалізація вкладеності підпрограм

Тут А - основна програма; В, Е - підпрограми, що викликаються в основній програмі; С,D - підпрограми, що викликаються в підпрограмі B; F - підпрограма, що викликається в підпрограмі E.

Суть принципу локалізації даних полягає в тому, що будь-якій підпрограмі дозволяється вводити у вживання свої внутрішні програмні об'єкти (змінні, константи тощо), необхідні для її виконання. Такі програмні об'єкти називаються локальними і мають певний сенс (область дії) лише в межах даної підпрограми. При цьому об'єкти, що описуються в основній програмі, є глобальними і доступнимив будь-якому місці програми, у тому числі і у підпрограмах.

Таким чином у підпрограмі можуть оброблятися:

  • Глобальні дані – змінні і константи, які описані в основній програмі, і доступ до яких дозволений із тіла будь-якої підпрограми. Глобальні ідентифікатори в тілі підпрограми мають той же самий сенс, який вони мали до моменту входу в підпрограму. Пам'ять під усі глобальні дані виділяється на етапі компіляції і її розмір залишається незмінним протягом усього часу виконання програми. За допомогою глобальних ідентифікаторів здійснюється постійний і безпосередній зв'язок підпрограми з охоплюючим її блоком.

  • Локальні дані - змінні і константи, які описані в підпрограмах. Область їхньої дії – та підпрограма, у якій вони описані, і всі вкладені в неї підпрограми. Локальна змінна створюється при кожному виклику підпрограми і знищується, як тільки завершилося її виконання. Тому поза підпрограмою локальна змінна недоступна.

У загальному випадку на всі імена, що вводяться в списку формальних параметрів підпрограми, поширюються ті ж правила, що і на описані у підпрограмі програмні об’єкти. Вони вважаються локальними для підпрограми, яка і є областю дії для цих об'єктів. Поза цією областю дії вони не визначені.

Поняття "глобальності" і "локальності" варто розуміти відносно - стосовно конкретного блоку: дані, описані в блоці, вважаються глобальними по відношенню до усіх внутрішніх блоків. Вкладеність блоків і поняття глобальної та локальної змінної ілюструє наступний приклад:

Program Scope;

Var A0, B0, C0 : byte;

Procedure P1;

var A1, B1, C1 : byte;

Procedure P2;

var A2, B2, C2 : byte;

begin

{ A0, B0, C0, A1, B1, C1 - глобальні змінні, A2, B2, C2 - локальні змінні }

end;

begin

{ A0, B0, C0 - глобальні змінні, A1, B1, C1 - локальні змінні }

end;

Begin

{ A0, B0, C0 - глобальні змінні }

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]