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

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

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

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

Наступні чотири стандартних типи даних є загальними для більшості мов програмування:

  • цілий,

  • дійсний,

  • логічний,

  • символьний.

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

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

Граничні значення допустимого для конкретного комп’ютера діапазону цілих чисел визначаються за допомогою вбудованих у мову програмування констант. Наприклад, константи MAXINT, MININT визначать максимально та мінімально можливі цілочисельні значення (типу integer) в мові Pascal; INT_MAX, INT_MIN – максимально та мінімально можливі цілочисельні значення (типу int) в мовах С/С++.

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

-maxint < N < maxint,

де maxint - максимально можливе цілочисельне значення, допустиме для обробки на конкретному комп’ютері.

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

minint < N < maxint

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

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

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

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

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

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

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

В деяких мовах програмування, наприклад в мові Standard Pascal, існує тільки один тип цілочисельних даних (один тип даних служить для представлення всіх цілих чисел!), однак в більшості сучасних алгоритмічних мов передбачено декілька цілочисельних типів, які визначають різні підмножини множини цілих чисел. Це дозволяє ефективно використовувати пам'ять комп’ютера і більш гнучко вводити цілочисельні змінні в програму. Цілочисельні типи мов С/С++ представлені у табл. 1.

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

Назва

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

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

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

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

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

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

unsigned int n;

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

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

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

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

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

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

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

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

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

Таблиця 2. Основні дійсні типи даних С/С++

Назва

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

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

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

дійсний

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

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

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

У мові Pascal даний тип задається стандартним ідентифікатором boolean, у мові С++ - стандартним ідентифікатором bool. Слід зазначити, що дещо по-різному у мовах програмування визначаються і значення констант логічного типу. Так у Pascal і С/С++ значення false (хибність) - 0, тоді як true (істина) у Pascal є 1, а у С/С++ - це будь-яке ціле число, відмінне від 0.

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

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

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

char с.

У мовах С/С++ даний тип відноситься до групи цілочисельних типів (табл. 3).

Таблиця 3. Символьні типи даних С/С++

Назва

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

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

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

символьний

char

-128 .. 127

1

беззнаковий символьний

unsigned char

0 .. 255

1

Синтаксис задання значень (констант) символьного типу визначається мовою програмування. У мовах С/С++, наприклад, РБНФ представлення символьних констант має вид:

символьна константа = “‘”символ”’”.

Наприклад,

char сh= 'D'.

До символьних значень може застосовуватися операція конкатенації або об’єднання (наприклад, в Pascal), а також операції порівняння. Результат операції в останньому випадку залежить від коду символьної константи або змінної в кодовій таблиці комп’ютера. Наприклад,

'B' > 'A'  true.

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

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