Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 (4).doc
Скачиваний:
30
Добавлен:
12.05.2015
Размер:
467.97 Кб
Скачать

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

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

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

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

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

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

  • кожна операція або функція вимагає аргументів визначеного типу і видає результат визначеного типу;

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

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

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

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

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

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

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

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

Введення типізації полегшує і упорядковує не лише сприйняття, але і управління предметною областю. Визначення типів даних у мовах програмування, окрім класифікації даних, що краще структурує предметну область, дозволяє компіляторувиявляти і відсікати певні види помилок, зокрема,некоректне присвоєння, коли має місце спроба присвоїти змінній одного типу значення іншого типу (наприклад, змінній числового типу присвоїти символьне або логічне значення); некоректну операцію, коли має місце спроба вживання виразів вигляду «Hello world» + 1 або спроба задіяти величину з плаваючою крапкою як покажчик; некоректну передачу параметрів, якщо, наприклад, функція «синус» чекає, що їй буде переданий числовий аргумент, а отримує як параметр рядок «Hello world», що може мати непередбачувані наслідки; мінімізує, необхідну для збереження даних, ОП; підвищує ефективність виконання програми, дозволяючи компілятору генерувати спеціалізований код. Наприклад, якщо компілятор "знає", що змінна завжди містить значення цілого типу, то він може генерувати цілочисельні команди для маніпулювання цією змінною; якщо ж інформації про тип змінної немає, компілятор повинен під час виконання програми генерувати додаткові команди для перевірки типу змінної.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]