Тип даних

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

Ієрархія стандартних типів даних в мові програмування Python версії 3

Машинні типи даних

У всіх комп'ютерах, заснованих на цифровій електроніці, інформація на найнижчому рівні представляється у вигляді бітів (із значенням 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

Діапазони числових типів даних

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

Діапазон змінних оснований на кількості байтів відведених для збереження значення. Цілі типи даних розрядністю n бітів зазвичай[1] здатні зберігати 2n значень. Для інших типів даних (напр. дійсних чисел) діапазон заплутаніший, та залежить від методу зберігання інформації у ньому. Існують також типи даних, які не використовують весь байт. Наприклад, для булевого типу, який є двійковим значенням, достатньо лише одного біта, але на практиці використовується весь байт, тобто 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 та восьмирозрядних кодувань, тоді як для представлення символів з набору Unicode потрібно щонайменше 2 байти.

Складні типи даних

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

Рядки

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

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

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

Структури даних

Абстрактні типи

Векторні типи

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

Див. також

Примітки

  1. Бувають ситуації, коли один або більше бітів відводиться для інших функцій, наприклад, перевірки парності.
  2. Зауважте, що розмір більшості типів даних різниться в залежності від платформи та мови програмування. Наведені тут розміри є найвживанішими на сьогодні.
  3. Складні типи даних. Архів оригіналу за 16 січня 2011. Процитовано 6 грудня 2010.

Посилання

  • Luca Cardelli, Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism, from Computing Surveys, (December, 1985)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.