Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
R6_ПП_12.doc
Скачиваний:
4
Добавлен:
25.11.2018
Размер:
816.64 Кб
Скачать

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

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

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

При цьому один і той же ідентифікатор в програмі не повинен використовуватися для різних цілей.

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

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

При цьому об'єкти, що описуються в основній програмі глобальні і доступні в будь-якому місці програми, у тому числі і у підпрограмах..

Відповідно підпрограма в загальному випадку може містити:

  1. Глобальні дані – змінні і константи, які описані в основній програмі, і доступ до яких дозволений із тіла будь-якої підпрограми. Глобальні ідентифікатори в тілі підпрограми мають той же самий сенс, який вони мали до моменту входу в підпрограму.

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

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

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

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.

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