Тип даних

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Ієрархія стандартних типів даних у мові програмування Python версії 3

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

Машинні типи даних[ред. | ред. код]

У всіх комп'ютерах, заснованих на цифровій електроніці, інформація на найнижчому рівні представляється у вигляді бітів (зі значенням 0 або 1). Найменша адресована одиниця інформації називається байт (зазвичай як октет, який містить 8 бітів). Одиниця інформації, яка оброблюється інструкціями машинного коду, називається словом (станом на 2006 рік, зазвичай по 32 або 64 біти). Більшість інструкцій сприймають слово як двійкове число, щоб 32-бітне слово могло бути представлене беззнаковим цілим числом від 0 до 232–1, або знакове ціле від –231 до 231–1. Завдяки наявності доповняльного коду, у багатьох випадках машині не потрібно по різному оброблювати знакові та беззнакові числа.

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

Прості типи даних[ред. | ред. код]

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

Числові типи даних[ред. | ред. код]

Цілі числа[ред. | ред. код]

Цілочисельний тип даних (англ. integer) не може зберігати дробову частину числа. Для від'ємного числа треба ставити знак мінус (-) перед значенням (числом). Не можна використовувати кому у введені такого числа, бо інакше буде викликана синтаксична помилка. Приклади цілих чисел:

  • 42
  • 10000
  • −233000
  • −100

Дійсні числа[ред. | ред. код]

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

  • 20.0005
  • 99.9
  • −5000.12
  • −9999.9991

Діапазони числових типів даних[ред. | ред. код]

Кожний числовий тип даних має мінімальне та максимальне значення, яке називають діапазон значень. Важливо знати діапазон значень, особливо, коли працюєте з «маленькими» типами даних, оскільки в них можна зберігати лише значення у вузькому діапазоні. Спроба внести число, більше за доступний діапазон може призвести до помилок періоду компіляції/виконання, або до неправильних підрахунків (через відкидання) залежно від використовуваної мови програмування.

Діапазон змінних оснований на кількості байтів відведених для збереження значення. Цілі типи даних розрядністю бітів зазвичай[1] здатні зберігати значень. Для інших типів даних (напр. дійсних чисел) діапазон заплутаніший, та залежить від методу зберігання інформації в ньому. Існують також типи даних, які не використовують увесь байт. Наприклад, для булевого типу, який є двійковим значенням, достатньо лише одного біта, але на практиці використовується весь байт, тобто 7 бітів залишаються невикористаними.

Таблиця показує набір загальновживаних числових типів даних та їхніх діапазонів[2]:

Тип даних Розмір Діапазон
Цілі типи
Булеві 1 біт (хоча зазвичай зберігається як 1 байт) 0 до 1
Байт 8 бітів 0 до 255
Слово 2 байти 0 до 65535
Подвійне слово 4 байти 0 до 4,294,967,295
Ціле число 4 байта −2,147,483,648 до 2,147,483,647
Подвійне ціле 8 байтів −9,223,372,036,854,775,808 до 9,223,372,036,854,775,807
Дійсні типи
Дійсне 4 байти 1E-37 до 1E+37 (6 десяткових цифр)
Подвійної точності 8 байтів 1E-307 до 1E+308 (15 десяткових цифр)

Логічний тип даних[ред. | ред. код]

Тип даних, об'єкти якого можуть приймати одне з двох значень: істина (англ. true) та хиба (англ. false).

Перелічуваний тип даних[ред. | ред. код]

Перелічуваний тип, перелік (англ. enumeration type) — тип даних, що описується через перелічення всіх можливих значень (кожне з яких позначається власним ідентифікатором), які можуть приймати об'єкти цього типу. Приклад (Pascal):

type Cardsuit = (clubs, diamonds, hearts, spades);

Символьний тип даних[ред. | ред. код]

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

Складені типи даних[ред. | ред. код]

Складені типи даних — це типи, які складаються з елементів, що належать до простих типів. До складених типів даних відносяться: масиви, множини, рядки, записи, файли, динамічні змінні, вказівники, лінійні списки (стеки, черги), нелінійні списки (двійкові дерева, несиметричні дерева, тексти, графи), процедурний тип, об'єкти[3].

Рядки[ред. | ред. код]

Рядки (англ. string) — нечисловий тип даних, що використовується для збереження букв та слів. Усі рядки складаються із символів. Рядки можуть містити цифри та числа, але однаково будуть оброблятися як текст. Приклади рядків:

  • «A»
  • «Hello World»
  • «Телефон»
  • «Мені 99 років»
  • «1.2.3.4.5.6.7.8.9»

У деяких мовах програмування кількість символів у рядку може бути обмежена, в інших довжина рядка може обмежуватися лише кількістю пам'яті в комп'ютері. Можуть бути також порожні рядки.

Структури даних[ред. | ред. код]

Докладніше: Структура даних

Абстрактні типи даних[ред. | ред. код]

Векторні типи[ред. | ред. код]

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

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

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

  1. Бувають ситуації, коли один або більше бітів відводиться для інших функцій, наприклад, перевірки парності.
  2. Зауважте, що розмір більшості типів даних різниться залежно від платформи та мови програмування. Наведені тут розміри є найвживанішими на сьогодні.
  3. C++. Структури. Частина 1. Складені типи даних. Шаблон структури. Структурна змінна. Структури в середовищі CLR. Оголошення та ініціалізація структурної змінної | BestProg. www.bestprog.net. Процитовано 2 жовтня 2022. 

Посилання[ред. | ред. код]

  • Luca Cardelli, Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism, [1] [Архівовано 19 червня 2006 у Wayback Machine.] from Computing Surveys, (December, 1985)