Область видимості (програмування)

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

У більшості мов програмування межі дії змінної зумовлені місцем її оголошення. Крім того, межі дії можна зазначити явно за допомогою класів пам'яті або просторів імен.

Різновиди змінних залежно від меж дії

У мовах, що підтримують структурне програмування, змінні зазвичай поділяються на два типи залежно від видимості:

  • локальні змінні — оголошуються всередині функції і недоступні поза нею;
  • глобальні змінні — оголошуються поза всіма функціями і доступні звідусіль[1][неавторитетне джерело].

Об'єктно-орієнтоване програмування передбачає існування всередині кожного класу трьох нарізних ділянок з особливими межами дії:

  • Закрита (англ. private) — межі дії оголошень збігаються з межами класу (посилатися на змінні чи методи можна лише з коду, що належить класові);
  • Відкрита (англ. public) — обмеження дії відсутнє, але посилатися на змінні чи методи можна лише через ім'я об'єкта (примірник класу);
  • Захищена (англ. protected) — межі дії оголошень відповідають межам класу та всіх його нащадків[2].

Мови розмітки

Поняття меж дії також стосується мов розмітки. Наприклад, в HTML межі дії імені поля введення (те саме стосується прапорців, ґудзиків тощо) збігаються з межами форми (HTML) від <form> до </form>[3].

Приклади

C

Приклад областей видимості змінних у мові програмування C:

// Змінна foo має глобальні межі дії
int foo = 0;

int main() {
    // Межами дії змінної bar є тіло функції main
    int bar = 1;
}
# include <stdio.h>
int a = 0; // Глобальна змінна

int main ()
{
    printf («% d», a); // Буде виведено число 0
    {
       int a = 1; // Оголошена локальна змінна а, глобальну змінну a не видно
       printf («% d», a); // Буде виведено число 1
       {
          int a = 2; // Ще локальна змінна в блоці, глобальну змінну a не видно, невидно і попередню локальну змінну
          printf («% d», a); // Буде виведено число 2
       }
    }
}

Примітки

  1. УРОК 12. локальні змінні І ОБЛАСТЬ ВИДИМОСТІ. Архів оригіналу за 16 березня 2013. Процитовано 11 березня 2013.
  2. Області видимості. Архів оригіналу за 16 березня 2013. Процитовано 11 березня 2013.
  3. Специфікація мови HTML. intuit.ru (рос.). ISBN 978-5-94774-648-8. Проігноровано невідомий параметр |translator= (довідка)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.