Ілюстрований самовчитель по turbo pascal
До порядковим типам ставляться (див. Рис.4.1) цілі, логічний, символьний, що перераховується і тип-діапазон. До будь-якого з них може бути застосована функція ORD (X), яка повертає порядковий номер значення виразу X. Для цілих типів функція ORD (X) повертає саме значення X, тобто ORD (X) = X для X, що належить будь-якому шелому типу. Застосування ORD (X) до логічного, символьного і не перераховувати типам дає позитивне ціле число в діапазоні від 0 до 1 (логічний тип), від 0 до 155 (символьний), від 0 до 65535 (перераховується). Тип-діапазон зберігає всі властивості базового порядкового типу, тому результат застосування до нього функції ORD (X) залежить від властивостей цього типу.
До порядковим типам можна також застосовувати функції:
PRED (X) - повертає попереднє значення порядкового типу (значення, яке відповідає порядковому номеру ORD (X) - 1), тобто
ORD (PRED (X)) = ORD (X) - 1;
SUCC (X) - повертає таке значення порядкового типу, яке відповідає порядковому номеру ORD (X) +1, тобто
ORD (SUCC (X)) = ORD (X) + 1.
Наприклад, якщо в програмі визначена змінна
то функція PRED (C) поверне значення '4', а функція SUCC (C) - значення '6'.
Якщо уявити собі будь-який порядковий тип як впорядкована множина значить, зростаючих зліва направо і займають на числової осі певний відрізок, то функція PRED (X) не визначена для лівого, a SUCC (X) - для правого кінця цього відрізка.
Цілі типи. Діапазон можливих значень цілих типів залежить від їх внутрішнього подання, яке може займати один, два або чотири байти. У табл. 4.1 наводиться назва цілих типів, довжина їх внутрішнього подання в байтах і діапазон можливих значень.
-2 147 483 648. +2 147 483 647
При використанні процедур і функцій з цілочисельними параметрами слід керуватися «вкладеністю» типів, тобто всюди, де може використовуватися WORD, допускається використання BYTE (але не навпаки), в LONGINT «входить» INTEGER, який, в свою чергу, включає в себе SHORTINT.
Перелік процедур і функцій, які можна застосувати до цілочисельним типам, наведено в табл.4.2. Літерами b, s, w, i, l позначені вираження відповідно типу BYTE, SHORTINT, WORD, INTEGER і LONGINT, x - вираз будь-якого з цих типів; літери vb, vs, vw, vi, vl, vx позначають змінні відповідних типів. У квадратних дужках вказується необов'язковий параметр.
Стандартні процедури та функції, застосовні до цілим типам
При діях з цілими числами тип результату буде відповідати типу операндів, а якщо операнди відносяться до різних цілим типами, - типу того операнда, який має максимальну потужність (максимальний діапазон значень). Можливе переповнення результату ніяк не контролюється, що може призвести до непорозумінь, наприклад:
В результаті прогону програми отримаємо
Логічний тип. Значеннями логічного типу може бути одна з попередньо оголошених констант FALSE (неправда) або TRUE (істина). Для них справедливі правила:
Оскільки логічний тип відноситься до порядковим типам, його можна використовувати в операторі рахункового типу, наприклад:
for 1: = False to True do.
Символьний тип. Значним символьного типу є безліч всіх символів ПК. Кожному символу приписується ціле число в діапазоні 0. 255. Це число служить кодом внутрішнього уявлення символу, його повертає функція ORD.
Для кодування використовується код ASCII (American Standard Code for Information Interchange - американський стандартний код для обміну інформацією). Це 7-бітний код, тобто з його допомогою можна закодувати лише 128 символів в діапазоні від 0 до 127. У той же час в 8-бітному байті, відведеному для зберігання символу в Турбо Паскалі, можна закодувати в два рази більше символів в діапазоні від 0 до 255. Перша половина символів ПК з кодами 0. 127 відповідає стандарту ASCII (табл. 4.3). Друга половина символів з кодами 128. 255 не обмежена жорсткими рамками стандарту і може змінюватися на ПК різних типів (в прил.2 наведені деякі поширені варіанти кодування цих символів).
Кодування символів відповідно до стандарту ASCII
До типу CHAR застосовні операції відносини, а також вбудовані функції: СНR (В) - функція типу CHAR; перетворює вираз В типу BYTE в символ і повертає його своїм значенням;
UPCASE (CH) - функція типу CHAR; повертає прописну букву, якщо СН -строчная латинська буква, в іншому випадку повертає сам символ СН, наприклад:
Так як функція UPCASE і не виконує жодних кирилицю, в результаті прогону цієї
програми на екран буде видано
Перераховуються тип. Перераховуються тип задається перерахуванням тих значень, які він може отримувати. Кожне значення іменується деяким ідентифікатором і розташовується в списку, обрамленому круглими дужками, наприклад:
colors = (red, white, blue);
Застосування перелічуваних типів робить програми наочніше. Якщо, наприклад, в програмі використовуються дані, пов'язані з місяцями року, то такий фрагмент програми:
if місяць = серпня then WriteLn ( 'Добре б поїхати до моря!');
був би, погодьтеся, дуже наочним. На жаль! У Турбо Паскалі можна використовувати кирилицю в ідентифікаторах, тому ми змушені писати так:
if month = aug then WriteLn ( 'Добре б поїхати до моря!');
Використання перелічуваних типів підвищує надійність програм завдяки можливості контролю тих значень, які отримують відповідні змінні. Нехай, наприклад, задані такі перераховуються типи:
colors = (black, red, white);
ordenal = (one, two, three);
days = (monday, tuesday, Wednesday);
З точки зору потужності і внутрішнього уявлення все три типу еквівалентні:
Однак, якщо визначені змінні
col: colors; num: ordenal;
то допустимі оператори
Змінні будь-якого перераховується типу можна оголошувати без попереднього опису цього типу, наприклад:
col: (black, white, green);
Тип-діапазон. Тип-діапазон є підмножина свого базового типу, в якості якого може виступати будь-який порядковий тип, крім типу-діапазону. Тип-діапазон задається межами своїх значень всередині базового типу:
тут <мин.знач.> - мінімальне значення типу-діапазону;
<макс.знач.> - максимальне його значення.
При визначенні типу-діапазону потрібно керуватися наступними правилами:
- два символи «..» розглядаються як один символ, тому між ними неприпустимі прогалини;
- ліва межа діапазону не повинна перевищувати його праву межу. Тип-діапазон успадковує всі властивості свого базового типу, але з обмеженнями, пов'язаними з його меншою потужністю. Зокрема, якщо визначена змінна
то ORD (W) поверне значення 5. в той час як PRED (W) призведе до помилки.
У стандартну бібліотеку Турбо Паскаля включені дві функції, що підтримують роботу з типами-діапазонами:
НIGН (Х) - повертає максимальне значення типу-діапазону, до якого належить змінна X;
LOW (X) -возвращает мінімальне значення типу-діапазону.
Наступна коротка програма виведе на екран рядок