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

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

Скалярні – це прості типи, значеннями кожного із яких є окремі елементи даних. Зокрема, скалярними є стандартні типи даних, вбудовані у мови програмування. У мові Pascal до скалярних також відносять прості типи, визначені користувачем (перелічуваний і обмежений).

Стандартні типи даних

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

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

Граничні значення допустимого для конкретного ПК діапазону цілих чисел визначаються за допомогою вбудованих у мову програмування констант, зокрема, за допомогою константи maxint, що визначає максимально можливе цілочисельне значення, допустиме для обробки на конкретному комп’ютері.

Так один із способів представлення діапазону допустимих цілочисельних значень передбачає, що в ПК будь-яке ціле число N повинне задовольняти умові

-maxint < N < maxint.

У деяких ПК діапазон цілих чисел, що представляються в машині, несиметричний відносно нуля і визначається двома константами minint і maxint:

minint < N < maxint

причому minint ≠ -maxint (зазвичай, minint = -(maxint -1)).

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

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

Беззнакові цілі числа можуть бути представлені у вигляді байта, слова або подвійного слова - залежно від їх розміру. Такі числа записуються у комірки в двійковій системі числення, займаючи всі розряди комірки. Наприклад, якщо для цілого 98 відведений байт, то вмістом байта буде двійкове число 01100010 (62h), якщо ж відведено слово, то воно матиме вигляд 0062h.

Цілі числа із знаком також представляються у вигляді байта, слова і подвійного слова. Як байт можна представити числа від -128 до+127, як слово - від -32768 до +32767, як подвійне слово - від -2147483648 до +2147483647. Знак міститься в старшому біті числа: нуль в цьому біті відповідає додатному числу, а одиниця - від’ємному. У ПК знакові числа зберігаються в додатковому коді.

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

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

Таблиця 1. Цілочисельні типи даних Pascal

Назва

Ідентифікатор

Діапазон значень

Розмір пам'яті, б

Коротке ціле без знака (байт)

byte

0 .. 255

1

Коротке ціле із знаком

shortint

-128 .. 127

1

Ціле без знака (слово)

word

0 .. 65535

2

Ціле із знаком

integer

-32768 .. 32767

2

Довге ціле із знаком

longint

-2147483648 .. 2147483647

(-231.. 231-1)

4

Доступ до верхніх граничних значень різних цілочисельних типів можна одержати за допомогою відповідних визначених констант (Maxіnt, MaxLongіnt і т.ін.)

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

Var a, b : integer ;

s, k : word ;

Таблиця 2. Цілочисельні типи даних C

Назва

Ідентифікатор

Діапазон значень

Розмір пам'яті, б

Коротке ціле із знаком

short int

-32 768 .. 32 767

2

Ціле із знаком

int

-32 768 .. 32 767

2

Довге ціле із знаком

long int

-2 147 483 648 .. 2 147 483 647

4

Беззнакове ціле

unsigned int

0 .. 65 535

2

Беззнакове довге ціле

unsigned long

0 ..  4 294 967 295

4

long long або __int64

–9 223 372 036 854 775 808 …

 9 223 372 036 854 775 807

8

unsigned __int64

0 … 18446744073709551615

8

Ключові слова signed і unsigned необов'язкові. Вони вказують, як інтерпретується нульовий біт оголошуваної змінної, тобто, якщо вказано ключове слово unsigned, то нульовий біт інтерпретується як частина числа, в іншому випадку - як знаковий біт. У разі відсутності ключового слова unsigned ціла змінна вважається знаковою. У тому випадку, якщо специфікатор типу складається з ключового типу signed або unsigned і далі йде ідентифікатор змінної, то вона буде розглядатися як змінна типу int. Наприклад,

unsigned int n;

unsigned int b;

int c; (розуміється signed int c);

unsigned d; (розуміється unsigned int d);

signed f; (розуміється signed int f).

Над даними цілочисельних типів визначені арифметичні операції, а також операції порівняння.

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

Дійсний тип. Це тип даних, що визначає множину дійсних чисел, допустимих для обробки на конкретному ПК.

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

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

Через ці причини множина значень дійсного типу не належить до впорядкованих. По цих же причинах операція порівняння значень цього типу на їх точну рівність є некоректною і слід уникати її використання в програмах.

Як і у випадку цілого типу, у деяких мовах програмування, зокрема, у Pascal, передбачено декілька дійсних типів даних (табл. 2), які визначають різні підмножини множини дійсних чисел. Розрізняються ці типи як діапазоном, так і точністю пов'язаних з ними значень.

Таблиця 2. Дійсні типи даних Pascal

Назва

Ідентифікатор

Діапазон значень

Розмір пам'яті, б

Точність, знаки

real

2.910-39  1.71038

6

11 - 12

Звичайної точності

single

1.5 10-45  3.41038

4

7 - 8

Подвійної точності

double

5.0 10-324  1.710308

8

15 - 16

Підвищеної точності

extended

3.4 10-4932  1.1104932

10

19 - 20

Складний

comp

-9.21018  9.21018

(-263+1  263 -1)

8

19 - 20

Тут точність визначає кількість значущих цифр мантиси в десятковому представленні числа.

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

Над значеннями дійсних типів допустимі арифметичні операції і операції порівняння.

Назва

Ідентифікатор

Діапазон значень

Розмір пам'яті, б

Символьний

unsigned char

0 .. 255

1

Char

-128 .. 127

1

Дійсні числа

Float

3.4 * (10-38) .. 3.4 * (10+38

4

Double

1.7 * (10-308) .. 1.7 * (10+308)

8

long double

3.4 * (10-4932) .. 1.1 * (10+4932)

10

Перелічувальний

Enum

-32 768 .. 32 767

2

Логічний тип. Це тип, елементи якого можуть приймати лише два логічні значення: "істина" (true, 1) і "хибність" (false, 0). В пам’яті значення даного типу займає цілий байт.

Над значеннями логічного типу визначені логічні операції.

Даний тип має місце не у всіх мовах програмування. У мові Pascal він задається стандартним ідентифікатором boolean.

Логічні типи зазвичай застосовуються для керування порядком виконання операторів програми.

Символьний тип. Це тип, множиною значень якого є символи кодової таблиці ASCІІ. Задається, зазвичай, ідентифікатором char.

Синтаксис задання значень (констант) символьного типу визначається мовою програмування. У мові Pascal, наприклад, використовуються наступні основні формати представлення символьних констант:

  • ‘<символ>’ ( 'а' );

  • #<код ASCII> (#65, що відповідає символу 'A' );

Оскільки, система кодування ASCII використовує 8-розрядні коди символів, то для збереження даних цього типу відводиться 1 байт пам’яті.

До символьних значень може застосовуватися операція конкатенації, а також операції порівняння. Результат операції в останньому випадку залежить від коду символьної константи або змінної в кодовій таблиці ПК. Наприклад,

'B' > 'A' true.

Важливою відмінністю мов Pascal і С від інших мов (PL1, FORTRAN, тощо) є відсутність принципу умовчання, що призводить до необхідності оголошення всіх змінних, що використовуються у програмі явно разом із зазначенням відповідних їм типів.