Федеральне агентство з освіти
«Типи даних у Паскаль»
Будь-які дані, тобто константи, змінні, властивості, значення функцій або вираження характеризуються своїми типами. Тип визначає безліч допустимих значень, які може мати той чи інший об'єкт, а також безліч допустимих операцій, які застосовні до нього. Крім того, тип визначає також і формат внутрішнього представлення даних в пам'яті ПК.
Взагалі мова Object Pascal характеризується розгалуженою структурою типів даних (рис. 1.1). У мові передбачений механізм створення нових типів, завдяки чому загальна кількість використовуваних в програмі типів може бути як завгодно великим.
Оброблювані в програмі дані поділяються на змінні, константи і літерали:
Літерал не має ідентифікатора і представляється в тексті програми безпосередньо значенням.
Тип визначає безліч значень, які можуть приймати елементи даних, і сукупність допустимих над ними операцій.
У цій та чотирьох наступних розділах наводиться докладний опис всіх типів.
1.1 Прості типи
До простих типів відносяться порядкові, речові типи і тип дата-час.
Порядкові типи відрізняються тим, що кожен з них має кінцеве кількість можливих значень. Ці значення можна певним чином упорядкувати (звідси - назва типів) і, отже, з кожним з них можна зіставити деяке ціле число - порядковий номер значення.
Речові типи, строго кажучи, теж мають кінцеве число значень, яке визначається форматом внутрішнього подання дійсного числа. Однак кількість можливих значень речових типів настільки велике, що зіставити з кожним з них ціле число (його номер) не представляється можливим.
Тип дата-час призначений для зберігання дати та часу. Фактично для цих цілей він використовує речовинний формат.
1.1.1 Порядкові типи
До порядковим типам ставляться (див. Рис. 1.1) цілі, логічні, символьний, що перераховується і тип-діапазон. До будь-якого з них може бути застосована функція Ord (x), яка повертає порядковий номер значення виразу X.
Мал. 1.1 - Структура типів даних
Для цілих типів функція ord (x) повертає саме значення х, т. Е. Ord (X) = х для х, що належить будь-якому цілого типу. Застосування Ord (x) до логічного, символьного і не перераховувати типам дає позитивне ціле число в діапазоні від 0 до 1 (логічний тип), від 0 до 255 (символьний), від 0 до 65535 (перераховується). Тип-діапазон зберігає всі властивості базового порядкового типу, тому результат застосування до нього функції ord (х) залежить від властивостей цього типу.
До порядковим типам можна також застосовувати функції:
pred (x) - повертає попереднє значення порядкового типу (значення, яке відповідає порядковому номеру ord (х) -1, т. е. Оrd (рred (х)) = Оrd (х) - 1;
succ (х) - повертає таке значення порядкового типу, яке відповідає порядковому номеру ord (х) +1, т. е. Оrd (Succ (х)) = Оrd (х) + 1.
Наприклад, якщо в програмі визначена змінна
то функція PRED (с) поверне символ '4', а функція SUCC (с) - символ '6'.
Якщо уявити собі будь-який порядковий тип як впорядкована множина значень, зростаючих зліва направо і займають на числової осі певний відрізок, то функція pred (x) не визначена для лівого, a succ (х) - для правого кінця цього відрізка.
Цілі типи. Діапазон можливих значень цілих типів залежить від їх внутрішнього подання, яке може займати один, два, чотири або вісім байтів. У табл. 1.1 наводяться назви цілих типів, довжина їх внутрішнього подання в байтах і діапазон можливих значень.
Таблиця 1.1 - Цілі типи
При діях з цілими числами тип результату буде відповідати типу операндів, а якщо операнди відносяться до різних цілим типами - загального типу, який включає в себе обидва операнда. Наприклад, при діях з shortint і word загальним буде тип integer. У стандартному налаштуванні компілятор Delphi не виробляє код, який здійснює контроль за можливою перевіркою виходу значення з допустимого діапазону, що може призвести до непорозумінь.
Логіки. До логічним відносяться типи Boolean, ByteBool, Bool, wordBool і LongBool. У стандартному Паскалі визначений тільки тип Boolean, інші логічні типи введені в Object Pascal для сумісності з Windows: типи Boolean і ByteBool займають по одному байту кожен, Bool і WordBool - по 2 байта, LongBool - 4 байта. Значеннями логічного типу може бути одна з попередньо оголошених констант False (брехня) або True (істина).
Оскільки логічний тип відноситься до порядковим типам, його можна використовувати в операторі циклу рахункового типу. У Delphi 32 для Boolean значення
Ord (True) = +1, в той час як для інших типів (Bool, WordBool і т.д.)
Ord (True) = -1, тому такого роду оператори слід використовувати з обережністю! Наприклад, для версії Delphi 6 виконуваний оператор showMessage ( '---') в наступному циклі for не буде виконано жодного разу:
for L: = False to True do
Якщо замінити тип параметра циклу L в попередньому прикладі на Boolean, цикл буде працювати і повідомлення двічі з'явиться на екрані. [Для Delphi версії 1 і 2 ord (True) = + 1 для будь-якого логічного типу.]
Символьний тип. Значеннями символьного типу є безліч всіх символів ПК. Кожному символу приписується ціле число в діапазоні 0. 255. Це число служить кодом внутрішнього уявлення символу, його повертає функція ord.
Для кодування в Windows використовується код ANSI (названий по імені American National Standard Institute - американського інституту стандартизації, який запропонував цей код). Перша половина символів ПК з кодами 0. 127 відповідає таблиці 1.3. Друга половина символів з кодами 128. 255 змінюється для різних шрифтів. Стандартні Windows-шрифти Arial Cyr, Courier New Cyr і Times New Roman для представлення символів кирилиці (без букв "е" і "Е") використовують останні 64 коду (від 192 до 256): "А". "Я" кодуються значеннями 192..223, "а". "Я" - 224. 255. Символи "Е" і "е" мають відповідно коди 168 і 184.
Таблиця 1.3 - Кодування символів відповідно до стандарту ANSI
Символи з кодами 0. 31 відносяться до службових кодами. Якщо ці коди використовуються в символьному тексті програми, вони вважаються пробілами.
До типу char застосовні операції відносини, а також вбудовані функції:
Сhаr (в) - функція типу char; перетворює вираз в типу Byte в символ і повертає його своїм значенням;
UpCase (CH) - функція типу char; повертає прописну букву, якщо сн - рядкова латинська буква, в іншому випадку повертає сам символ сн (для кирилиці повертає вихідний символ).
Перераховуються тип. Перераховуються тип задається перерахуванням тих значень, які він може отримувати. Кожне значення іменується деяким ідентифікатором і розташовується в списку, обрамленому круглими дужками, наприклад:
colors = (red, white, blue);
Застосування перелічуваних типів робить програми наочніше.
Використання перелічуваних типів підвищує надійність програм завдяки можливості контролю тих значень, які отримують відповідні змінні. У Object Pascal допускається зворотне перетворення: будь-який вираз типу Word можна перетворити в значення перераховується типу, якщо тільки значення цілочисельного виразу не перевищує потужності цього типу. Таке перетворення досягається застосуванням автоматично оголошується функції з ім'ям перераховується типу.
Тип-діапазон. Тип-діапазон є підмножина свого базового типу, в якості якого може виступати будь-який порядковий тип, крім типу-діапазону.
Тип-діапазон задається межами своїх значень всередині базового типу:
тут <мин. знач.> - мінімальне значення типу-діапазону; <макс. знач.> - максимальне його значення.
При визначенні типу-діапазону потрібно керуватися наступними правилами:
два символу ".." розглядаються як один символ, тому між ними неприпустимі прогалини; ліва межа діапазону не повинна перевищувати його праву межу.
Тип-діапазон успадковує всі властивості свого базового типу, але з обмеженнями, пов'язаними з його меншою потужністю. Зокрема, якщо визначена змінна.
У стандартну бібліотеку Object Pascal включені дві функції, що підтримують роботу з типами-діапазонами:
High (х) - повертає максимальне значення типу-діапазону, до якого належить змінна х;
Low (х) - повертає мінімальне значення типу-діапазону.
Читати далі: Речові типи
(3.1415) = 3; 7. LN (1) = 0.000; 8. SQRT (36) = 6.000; 9. SIN (90 * pi / 180) = 1.000. Зауваження: В тригонометричних функціях аргумент повинен бути заданий тільки в радіанної міру кута. Сумісність і перетворення типів даних. Турбо-Паскаль - збірний мову, отже, всі застосовувані операції визначені тільки над операндами сумісних типів. Два типу вважаються сумісними, якщо • обидва вони є.
записуються або з фіксованою крапкою, наприклад, -1.234, або з плаваючою точкою, наприклад, -1.234E-5 або 555е12. У програмі, як правило, доводиться використовувати змінні арифметичних типів. Кожна така змінна (і змінна будь-якого іншого типу) в мові Паскаль повинна бути обов'язково описана, тобто повинен бути явно вказано її тип. Опис змінних в загальному випадку має вигляд: VAR ім'я.
puts () ма ють только один параметр и віводять відповідно символи та рядки, но НЕ забезпечують вивід числових Даних. Функція printf () вікорістовується для форматованого виводу на екран усіх тіпів Даних с помощью спеціфікаторів. Спеціфікатор формату почінається Із символу%, после которого стоит символ, что вказує тип Даних:. - ціле число; % Ld - довге ціле число типу long int; % U -.