Ілюстрований самовчитель по 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) -возвращает мінімальне значення типу-діапазону.

Наступна коротка програма виведе на екран рядок