Типи даних у програмуванні


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

Цілочислові типи
Крім відомого вам типу integer, що представляє значення цілих у діа­пазоні від-32768 до 32767, y Pascal є й інші цілочислові типи:
Byte        - числа в діапазоні   0 … 255;
shortint - числа в діапазоні   -128 … 127;
word       - числа в діапазоні    0 … 65535;
longint   - числа від - 2147483648  до 2147483647.
Межі діапазонів визначаються тим, що для збереження змінних типу byte або shortint надається 1 байт оперативної пам'яті, для змінних integer і word - 2 байти, а для longint - 4 байти.
Наведемо приклад опису цілочислових змінних:
var
H1,   H2:   word;
Zcolor:   byte;
3 даними цілого типу можна виконувати арифметичні операції й операції відношення. До цілочислових даних засто­совують також стандартні функції: sin(x), cos(x), arctan(x), exp(x), ln(x), sqrt(x) тощо.

Дійсні типи
В арифметичних виразах звичайно використовуються змінні, які набувають дійсних значень. Нагадаємо, що всі дійсні числа можуть зображатися у формі з фіксованою крапкою (наприклад, 0.13, 4.671, 6133.99 тощо) і з плаваючою крап­кою (наприклад, 2*103, 5.17*10-7 тощо). Значення з плаваючою крапкою у мові Pascal записуються у форматі
< мантиса > Е < порядок >
наприклад, 2E3 чи 5.17E -7 (Мантисою називається дробова частина десяткового логарифма. Наприклад, визначимо логарифм числа X= 4567,89 = 4.56789*103. Логарифм складатиметься з цілої частини (характеристики) і дробової частини (мантиси): lgX = 3 + lg(4.56789)) .
Для представлення дійсних значень у Pascal частіше використовуються типи: real, single, double. Ці типи розрізняються діапазоном допустимих значень і обсягом необхідної пам'яті:
real - числа від 2.9E-39 до 1.7E38 з мантисою 11-12 знаків; надається 6 байт пам'яті;
single - числа від 1.5Е-45 до 3.4E38 з кількістю значущих цифр 7 - 8; надається 4 байти пам'яті;
double - числа від 5.0Е-324 до 1.7E308 з кількістю значущих цифр15 - 16; надається 8 байт пам'яті.
Зазначимо, що дійсні типи, крім real, можуть використовуватися в про­грамі, якщо в комп'ютері є апаратна підтримка арифметики з плаваючою крап­кою (наприклад, є математичний співпроцесор.
Формат опису дійсних типів аналогічний опису цілочислових типів:
var
Y1,   Y2:   single;
ZZ:   double;
До даних дійсного типу застосовуються ті самі операції, що й до цілих. При запису операцій присвоювання потрібно пам'ятати, що змінній дійсного типу можна надати значення виразу цілого типу, але не навпаки.

Символьний тип
Змінні, які набувають символьних значень з таблиці ASCII, належать до символьного типу - char. Для розміщення таких змінних у пам'яті потрібний лише один байт.
До програми на Паскалі символьні змінні вводяться за допомогою такого опису:
var
Wx,   Ux:   char;
Якщо в програмі є значення символьних змінних, їх слід взяти в апострофи, наприклад, X = 'В'.
Для змінних типу char у Паскалі передбачена стандартна функція ord (X), що перетворить символ X на його ASCII-код. Так, для символу 'B' функція ord повертає значення 66. Зворотне перетворення коду на символ здійснюється функцією сhr (Х), тобто функція сhr (66) повертає символ 'B'.

Логічний тип
Величини логічного (булевого) типу ми розглядали раніше. Під час опису цих величин у програмі на Паскалі використовується слово Boolean, наприклад,
var
Pozit,   Sel: ,boolean;

Перелічуваний тип
Крім розглянутих вище типів, програміст за бажанням може вводити нові типи даних, до яких належить перелічуваний тип даних, що визначається шляхом перерахування елементів за такою схемою:
type <ім'я типу > = <список імен >
Розділ опису типів даних у цьому випадку починається службовим словом type, після якого йдуть імена типів і списки значень. Окремі значення в списку вказуються через кому, а сам список міститься у круглих дужках. Під час опису змінній у розділі var зазначається належність до того чи іншого типу. Наприклад: type
Metal   =   (Copper,   Tantal,   Cobalt,    Silver);
Index   =   (1,   5,   8,   13);
var
M1,   M2:   Metal;
 Ix,    Iy,   Init:   Index;
Size:    (Little,   Middle,   Big);
Це опис перелічуваних типів Metal і Index. Змінні Ml, M2 типу Metal можуть набувати лише значень з ряду: Copper, Tantal, . ., а змінні Ix, Iy, Init типу lndex - цілі значення: 1, 5, 8, 13. Змінна size не має певного типу, однак для неї в розділі var задані можливі значення; Little, Middle, Big. Спроба надати будь-якій змінній іншого значення, відсутнього в її описі, спричиняє про­грамне переривання.

Тип-діапазон
При заданні розглянутого вище типу необхідно скласти список можливих значень. Однак у деяких випадках зручніше не називати всі значення, а просто зазначити межі інтервалу, у якому вони містяться. Для цього застосовується інтервальний тип даних (його ще називають тип-діапазон), з описі вказується інтервал: від найменшого до найбільшого значення. Ці крайні значення розді­ляються двома послідовними крапками, наприклад:
type
Element =  100 .. 200;
Letter =   ('a' .. 'z');
var
Number,   N1:   Element;
Bukva:   Letter;
У цьому описі тип Element визначає множину цілих чисел від 100 до 200, a тип Letter - множину букв латинського алфавіту від а до z. Змінні Number і N1 належать до типу Element, а змінна Bukva: - до типу Letter.

Структуровані типи
Усі розглянуті вище типи даних (цілий, дійсний, символьний, логічний, пере­лічуваний, тип-діапазон) не містять складових частин і тому називаються простими чи складними типами. Поряд із простими типами у Паскалі передбачені структуровані типи, в яких дані складаються з компонентів.

Структуровані типи даних - це набори однотипових або різнотипових компонентів. Типи компонентів утворюються з інших типів даних (простих чи структурованих).

До структурованих типів належать рядки, масиви, записи, файли та інші. Уявлення про деякі з них ви вже маєте. Тут ми розглянемо масиви та їхній опис у програмах на Паскалі. Опис масиву задається такою схемою:

type < ім'я типу > = array   [< список індексів >]   of < тип >

де <ім’я типу > - ідентифікатор типу; array  і of   - зарезервовані слова; <список   індексів > - список діапазонів або індексів інших індексних типів; < тип > - будь-який тип даних. Наведемо приклад:
type
Vector = array [1 .. 3] of real;
Table   = array [1 .. 5, 1 .. 9] of integer;
Cub      = array [0 .. 4, -2 .. 2, N1] of byte;
Tyт Vector - це ім'я типу одновимірного масиву з трьох елементів, що набувають дійсних значень. Тип Table – двовимірний масив цілих чисел, розміром 5х9. Тип Cub - це тип тривимірного масиву, що складається з цілих значень типу byte. Третій компонент масиву типу Cub позначається сим­вольним індексом N1.
Змінні зазначених вище типів описуються так:
var
A1:   Vector;
Din:  Table;
C1,   C2,   C3:   Cub;
де A1, Din, C1, C2, C3 - ідентифікатори змінних.

Комментариев нет:

Отправить комментарий