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

Поняття типу даних

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

Людина розрізняє ці значення візуально. Комп’ютер же такої здатності немає, тому програміст зобов’язаний пояснити транслятору, з якими даними той матиме справу. Це досягається за рахунок специфікації1 даних за допомогою опису їх типу. При цьому передбачається, що кожна змінна або константа (екземпляр типу), що зустрічається в програмі, повинна бути зіставлена з одним і тільки одним типом даних.

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

В основу концепції типу даних покладені наступні основні принципи (властивості):

  1. Будь-який тип даних визначає множину значень, які можуть приймати константи, змінні, вирази, результати операцій та значення функцій.

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

  3. Кожна операція або функція вимагає задання операндів (аргументів) визначеного типу та повертає результат визначеного типу. Якщо операція допускає використання операндів декількох типів (наприклад, «+» використовується для додавання як цілих, так і дійсних чисел), то тип результату визначається правилами мови програмування.

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

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

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

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

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

  1. дозволяє компілятору виявляти і відсікати певні види помилок, зокрема,

  • некоректне присвоєння, коли має місце спроба присвоїти змінній одного типу значення іншого типу (наприклад, змінній числового типу присвоїти символьне або логічне значення);

  • некоректну операцію, коли має місце спроба вживання виразів вигляду «Hello world» + 1 або спроба задіяти величину з плаваючою крапкою як покажчик;

  • некоректну передачу параметрів, якщо, наприклад, функція «синус» чекає, що їй буде переданий числовий аргумент, а отримує як параметр рядок «Hello world», що може мати непередбачувані наслідки;

  • мінімізує, необхідну для збереження даних, ОП;

  • підвищує ефективність виконання програми, дозволяючи компілятору генерувати спеціалізований код. Наприклад, якщо компілятор "знає", що змінна завжди містить значення цілого типу, то він може генерувати цілочисельні команди для маніпулювання цією змінною; якщо ж інформації про тип змінної немає, компілятор повинен під час виконання програми генерувати додаткові команди для перевірки типу змінної.

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