Типи даних та їхні описи
Будь-який елемент даних
(константу, змінну) можна віднести до того чи іншого типу. Тип визначає безліч
значень, яких може набувати елемент даних. Усі типи даних мають бути зрозумілими
компілятору, і тому типи, що вводяться програмістом, необхідно описати.
Раніше ви вже
ознайомилися зі стандартними і складеними типами величин. Тепер розглянемо
детально ці та інші типи, а також їхній опис у програмах на Паскалі.
Цілочислові типи
Крім відомого вам типу
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 - ідентифікатори
змінних.
Комментариев нет:
Отправить комментарий