Діапазон (програмування)

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

В інформатиці термін діапазон може стосуватися однієї з трьох речей:[джерело?]

  1. Можливі значення, які можуть зберігатися в змінній.
  2. Верхня та нижня межі масиву.
  3. Альтернатива ітератору.

Діапазон змінної[ред. | ред. код]

Діапазон змінної задається як набір можливих значень, які ця змінна може містити. У випадку цілого числа визначення змінної обмежується лише цілими числами, а діапазон охоплює кожне число в межах діапазону (включно з максимальним і мінімальним). Наприклад, діапазон 16-бітної цілочисельної змінної зі знаком − це всі цілі числа від −32 768 до +32 767.

Діапазон масиву[ред. | ред. код]

Коли масив має числовий індекс, його діапазон є верхньою та нижньою межею масиву. Залежно від середовища, якщо програма спробує отримати доступ до елемента масиву, який знаходиться за межами діапазону, виникне попередження, фатальний виняток або непередбачувана поведінка. У деяких мовах програмування, таких як C, масиви мають фіксовану нижню межу (нуль) і міститимуть дані в кожній позиції аж до верхньої межі (тому масив із 5 елементів матиме діапазон від 0 до 4). В інших, таких як PHP, масив може мати діри, де не визначено жодного елемента, і тому масив із діапазоном від 0 до 4 матиме до 5 елементів (і мінімум 2).

Діапазон як альтернатива ітератору[ред. | ред. код]

Іншим значенням діапазону в інформатиці є альтернатива — ітератор. При використанні в цьому значенні діапазон визначається як «пара початкових/кінцевих ітераторів, упакованих разом».[1] Стверджується[1], що «Діапазони є кращою абстракцією» (порівняно з ітераторами) з кількох причин, включаючи кращу безпеку.

Зокрема, такі діапазони підтримуються в Boost C++ Libraries[2] і стандартній бібліотеці D.[3]

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. а б Andrei Alexandrescu (6 травня 2009). Iterators Must Go (PDF). BoostCon 2009. Процитовано 29 липня 2014.
  2. Boost.Range documentation
  3. D Phobos Runtime Library std.range module