Учня 11-А класу  p> 
 ТИПИ ДАНИХ  p> 
 Будь-які дані, тобто константи, змінні, значення функцій абовирази, в Турбо Паскалі характеризуються своїми типами. Тип визначаєбезліч допустимих значень, які може той чи інший об'єкт, а такожбезліч припустимих операцій, які застосовуються до нього. Крім того, типвизначає формат внутрішнього подання даних в пам'яті ПК.  p> 
 Турбо Паскаль характеризується розгалуженою структурою типів даних.  p> 
 У Турбо Паскалі передбачений механізм створення нових типів даних,завдяки чому загальна кількість типів, що використовуються в програмі, може бутискільки завгодно великим.  p> 
 ПРОСТІ ТИПИ  p> 
 До простих типів відносяться порядкові і речові типи.  p> 
 Порядкові типи відрізняються тим, що кожен з них має кінцеве числоможливих значень. Ці значення можна певним чином порядок 
(звідси - назва типів) і, отже, з кожним з них можназіставити деякий ціле число - порядковий номер значення.  p> 
 Речові типи теж мають кінцеве число значень, якевизначається форматом внутрішнього подання дійсного числа. Однаккількість можливих значень речових типів настільки велике, щозіставити з кожним з них ціле число (його номер) не представляєтьсяможливим.  p> 
 Порядковий ТИПИ  p> 
 До порядковим типами відносяться цілі, логічний, символьний,перераховувати і тип-діапазон.  p> 
 Цілі типи. Діапазон можливих значень цілих типів залежить від їхвнутрішнього уявлення, яке може займати один, два або чотирибайти 
| ЦІЛІ ТИПИ | 
| Назва | Довжина, | Діапазон значень | 
| | Байт | | 
| Byte | 1 | 0 ... 255 | 
| ShortInt | 1 | -128 ... +127 | 
| Word | 2 | 0 ... 65535 | 
| Integer | 2 | -32768 ... 32767 | 
| LongInt | 4 | -2 147 483 648 ... +2 147 483 647 |  p> 
 При використанні процедур і функцій з цілочисельними параметрамислід керуватися «вкладень» типів, тобто скрізь, де можевикористовуватися Word, допускається використання Byte (але не навпаки), в 
LongInt "входить" Integer, який, у свою чергу, включає в себе 
ShortInt.  P> 
 При дейстйствіі з цілими чмсламі тип результату буде відповідатитипу операндів, ф якщо операнди відносяться до різних цілим типами, - типутого операнда, який має максимальну потужність (максимальний діапазонзначень). Можливе переповнення ніяк не контролюється, що можепризвести до недорозумение.  p> 
 Логічний тип 
| Логічні ТИПИ | 
| Назва | Довжина, Байт | OS | Значення | 
| BOOLEAN | 1 | Linux, DOS | False, True | 
| BYTEBOOL | 1 | Сумісний з С | False, True | 
| WORDBOOL | 2 | Win | False, True | 
| LONGBOOL | 4 | Win | False, True |  p> 
. Значеннями логічного типу може бути один із заздалегідьоголошених констант FALSE (неправда) або TRUE (істина).  p> 
 Оскільки логічний тип відноситься до порядковим типами, його можнавикористовувати в операторі рахункового типу.  p> 
 символьний тип. CHAR - займає 1 байт. Значним символьного типує безліч всіх символів ПК. Кожному символу присвоюється цілечисло в діапозоні 0 ... 255. Це число служить кодом внутрішнього поданнясимволу.  p> 
 Для кодування іспоьзуется код ASCII (American Standart Code for 
Information Interchange - американський стандартний код для обмінуінформацією). Це 7-бітний код, тобто з його допомогою можн озакодіровать лише 
128 символів у діапозоні від 0 до 127. У той же час у 8-бітному байті,відведеному для зберігання символу в Турбо Паскалі, можна закодувати в дварази більше символів у дапозоне від 0 до 255. Перша половина символів ПК зкодами 0 ... 127 відповідає стандарту ASCII. Друга половина символів зкодами 128ююю255 не обмежена жорсткими рамками стандарту і може змінюватисьна ПК різних типів.  p> 
 Символи з кодами 0 ... 31 відносяться до слжебним кодами. Якщо ці кодивикористовувати в символьному тексті програми, вони вважаються пробілами.  p> 
 перераховуються тип. Перераховуються тип задається перерахуванням тихзначень, які він може отримувати. Кожне значення іменується деякимідентифікатором і рапологается у списку, обрамленому круглими дужками,напрімерЖ  p> 
 Type  p> 
 Colors = (red, white, blue);  p> 
 Застосування перелічуваних типів робить програми наочніше.  p> 
 Відповідність між значеннями перераховується типу і порядковиминомерами цих значень встановлюється порядком перерахування: першазначення списку отримує порядковий номер 0, друга - 1 і т.д. максимальнапотужність що перераховується типу складає 65536 значень, тому фактичноперераховуються тип задає деякий підмножина цілого типу WORD і можерозглядатися як компактне оголошення відразу групи цілочисельнихконстант зі значеннями 0,1 і т.д.  p> 
 Використання перелічуваних типів підвищує надійність програми,завдяки можливості контролю тих значень, які одержуютьвідповідні змінні.  p> 
 Тип-діапазон. Тип-діапазон є підмножина свого базового типу, вякості якого може виступати будь-який порядковий тип, окрім типу -діапазону.  p> 
 Тип-діапазон задається межами своїх значень всередині базового типу:  p> 
 ..  p> 
 Тут - мінімальне значення типу-діапазону.  p> 
 - максимальне його значення.  p> 
 Type  p> 
 Digit = '0 '.. '9';  p> 
 Dig2 = 48 .. 57;  p> 
 При визначенні типу-діапазону потрібно керуватися наступнимиправилами:  p> 
 1. два символи «..» розглядаються як один символ, тому між ними неприпустимі пробіли.  p> 
 2. ліва межа діапазону не повинна перевищувати його праву кордон.  p> 
 Тип-діапазон успадковує всі властивості базового ітпа, але з обмеженнями, пов'язаними з його меншою потужністю.  p> 
 Речовий ТИПИ  p> < p> На відміну від порядкових типів, значення яких завжди зіставляютьсяз низкою цілих чисел і, отже, представляється в ПК абсолютно точно,значення речових типів визначають довільне число лише з деякоюкінцевою точністю, яка залежить від внутрішнього формату дійсного числа.  p> 
 
| Довжина, | Назва | Кількість | Діапазон десяткового | 
| байт | | значущих цифр | порядку | 
| 6 | Real | 11 ... 12 | -39 ... +38 | 
| 4 | Single | 7 ... 8 | -45 ... +38 | 
| 8 | Double | 15 ... 16 | -324 ... +308 | 
| 10 | Extended | 19 ... 20 | -4951 ... 4932 | 
| 8 | comp | 19 ... 20 | -2 * 1063 +1 ... +2 * 1063-1 |  p> 
 Структуровані ТИПИ  p> 
 Будь-який з структурованих типів характеризується множинністюскладають цей тип елементів, тобто мінлива або сонстантаструктурованого типу завжди має декілька компонентів. Коженкомпонент, у свою чергу, може належати структурованого типу, щодозволяє говорити про можливу вложеності типів. У Турбо Паскалідопускається довільна глибина вложеності типів, однак сумарна довжинабудь-якого з них у внутрішньому представленні не повинна перевищувати 65520 байт.  p> 
 Масиву  p> 
 Массіиви в Турбо Паскалі багато в чому схожі з аналогічними типами данихв інших мовах програмування. Відмінна риса масивівполягає в тому, що всі їх компоненти суть дані одного типу (можливоструктурованого). Ці компоненти можна легко впорядкувати і забезпечитидоступ до будь-якого з них простим зазначенням порядкового номера.  p> 
 Опис масиву задається наступним чином:  p> 
 = array [] of  p> 
 Тут - правильний індіфікатор;  p > 
 Array, of - зарезірвірование слова (масив, з);  p> 
 - список з одного або декількох індексних типів,розділених комами; квадратні дужки, що обрамляють список, - вимогасинтаксису;  p> 
 - будь-який тип Турбо Паскаля.  p> 
 Як індексних типів у Турбо Паскалі можна використовувати будь-якіпорядкові типи, крім LongInt і типів-діапазонів з базовим типом LongInt.  p> 
 Глибина вкладеності структурованих типів взагалі, а отже, імасивів - довільна, тому кількість елементів у списку індексівтипів (розмірність масиву) не обмежена, однак сумарна довжинавнутрішнього подання будь-якого масиву не може бути більше 65520 байт.  p> 
 ЗАПИСИ  p> 
 Запис - це структура даних, що складається з фіксованого числакомпонентів, називаемихполямі запису. На відміну від масиву, компоненти 
(поля) запису можуть бути різного типу. Щоб можна було посилатися на тойабо інший компонент записи, поля іменуються.  p> 
 Структура оголошення типу запису така:  p> 
 = RECORD END  p> 
 Тут - правильний індіфікатор;  p> 
 RECORD, END - зарезервірование слова (запис, кінець);  p> 
 - список полів, представляє собою послідовністьрозділів записи, між якими ставиться крапка з комою.  p> 
 МНОЖЕСТВ  p> 
 Безліч - це набір однотипних логіческх пов'язаних один з однимоб'єктів. Характер зв'язків між об'єктами лише мається на увазі програмістіві ніяк не контролюється Турбо Паскалем.колічество елементів, що входять добезліч, може змінюватись в межах від 0до 256 (безліч, що не міститьелементів, називається порожнім). саме мінливістю кількості своїхелементів множини відрізняються від масивів і записів.  p> 
 Два безлічі вважаються еквівалентними тоді і тільки тоді, коли всіїх елементи однакові, причому порядок проходження елементів множинибайдужий. Якщо всі елементи одного безлічі входять також і в інше,говорять про включення першого безлічі у другому.  p> 
 Опис типу безлічі має вигляд:  p> 
 = SET OF  p> 
 Тут - правильний індіфікатор;  p> 
 SET, OF - зарезірвірованние слова (безліч, з);  p> 
 - базовий тип елементів множини, в якості якого можевикористовуватися будь-який порядковий тип, крім WORD, INTEGER і LONGINT.  p> 
 Для завдання безлічі використовується так званий конструкторбезлічі: список специфікацій елементів множини, відокремлюваних один віддруга комами; список обрамляється квадратними дужками. Специфікаціямиелементів можуть бути константи, або вирази базового типу, а також - тип -діапазон того ж базового типу.  p> 
 СТРОКИ  p> 
 Тип STRING (рядок) у Турбо Паскалі широко використовується для обробкитекстів. Він багато в чому схожий на одновимірний масив символів ARRAY [0 .. N] OF 
CHAR, проте, на відміну від останнього, кількість символів у рядку --змінної може змінюватись від 0 до N, де N - кількість максімалльноесимволів в рядку. Значення N визначається оголошенням типу STRING [N] N іможе бути будь-якою константою порядкового типу, але ен більше 255. Турбо 
Паскаль дозволяє не вказувати N, у тому випадку довжина рядка приймаєтьсямаксимально можливою, а саме N = 255.  p> 
 Рядок у Турбо Паскалі трактується як ланцюжок символів. До будь-якогосимволу в рядку можна звернутися точно так само, як до елементу одновимірногомасиву ARRAY [0 .. N] OF CHAR.  p> 
 ФАЙЛИ  p> 
 Під файлом розуміється або іменована область зовнішньої пам'яті ПК, абологічний пристрій - потенційне джерело або приймач інформації.  p> 
 Будь-який файл має три характерні особливості. По-перше, у нього єім'я, що дає можливість програмі працювати одночасно з декількомафайлами. По-друге, він містить компоненти одного типу. Типом компонентівможе бути будь-який тип Турбо Паскаля, крім файлів. Іншими словами, недьзястворити «файл файлів». По-третє, довжина знову створюваного файла ніяк необмовляється при його оголошенні і обмежується лише розміром пристроївзовнішньої пам'яті.  p> 
 Файловий тип або змінну файлового типу можна поставити одним з трьохспособів:  p> 
 = FILE OF;  p> 
 = TEXT;  p> 
 = FILE;  p> 
 Тут - ім'я файлового типу (правильний індіфікатор);  p> 
 FILE, OF - зарезервовані слова (файл, з);  p> 
 TEXT - ім'я стандартного типу текстових файлів;  p> 
 - будь-який тип Турбо Паскаля, крім файлів.  p> 
 Залежно від способу оголошення можна виділити три види файлів:  p> 
. типізовані файли (задаються пропозицією FILE OF ...);  p> 
. текстові файли (визначаються типом TEXT);  p> 
. нетипізовані файли (визначаються типом FILE).  p> 
 ПРОЦЕДУРНІ ТИПИ  p> 
 Процедурні типи - це нововедення фірми Borland (у стандартному 
Паскалі таких типів немає). Основне призначення цих типів-дати програмистгнучкі засоби передачі функцій і процедур в якості фактичнихпараметрів звернення до інших процедур та функцій.  p> 
 Для оголошення процедурного типу використовується заголовок процедури 
(функції), в якому опускається її ім'я, напріме: type  p> 
 Proc = procedure;  p> 
 Proc1 = procedure (var X, Y: Integer);  p> 
 StrProc = procedure (S: String);  p> 
 MathFunc = function (X: Real): Real:  p> 
 DeviceFunc = function (var F: Text): Integer;  p> 
 MaxFunc = function (A, B: Real; F: MathFunc): Real;  p> 
 Як видно з наведених прикладів існує два види процедурнихтипів: тип-роцедура і тип-функція.  p> 
 У програмі можуть бути оголошені змінні процедурних типів,наприклад, так:  p> 
 Var  p> 
 P1: Proc1;  p> 
 F1, f2: MathFunc;  p> 
 Ap: array [1 .. N] of Proc1  p> 
 змінним процедурних типів допускається привласнювати якзначень імена відповідних підпрограм. Після такого присвоювання ім'язмінної стає синонімом імені підпрограми.  p> 
 ТИП Об'єкт  p> 
 Тип об'єкт - це структура, що складається з фіксованого числакомпонент. Кожна компонента - це чи поле, яке містить даніпевного типу, або метод, який здійснює операції над об'єктом. 
Аналогічно оголошення змінних, оголошення поля, вказує тип данихполя та ідентифікатор імені цього поля, і аналогічно оголошенню процедуриабо функції оголошення методу вказує заголовок процедури, функції,констрактора або дестрактора.  p> 
 Тип об'єкт може успадковувати компоненти від іншого типу об'єкта.  p> 
 Сфера дії типу об'єкта складається з нього самого і всіх йогопороджених типів.  p> 
 На відміну від інших типів, тип об'єкт може бути оголошений в частиніоголошення типів у самої зовнішньої частини програми або модуля.  p> 
 Так, тип об'єкта не може бути оголошений в частині оголошення зміннихабо всередині процедури, функції або методу.  p> 
 ТИП ВКАЗІВНИК  p> 
 Тип покажчик (контрольний тип) визначає безліч значень, яківказують на динамічні змінні певного типу, званогобазовим типом. Змінна з типом покажчик містить адресу динамічноїзмінної в пам'яті.  p> 
 Якщо базовий тип є ще не описаним ідентифікатором, то вінповинен бути описаний в тій же самій частині опису типів, що й типпокажчик.  p> 
 Змінній-вказівником може мати значення за допомогою процедури New,@ операції або функції Ptr. Процедура New відводить нову область пам'яті вдинамічно розподіляє області для динамічних змінних і зберігаєадресу цієї області у змінній покажчика. Операція @ орієнтуєзмінну вказівник на область пам'яті, що містить існуючу змінну,включаючи і ті змінні, які мають ідентифікатори. Функція Ptrорієнтує змінну покажчика на певну адресу в пам'яті. 
Зарезервоване слово nil позначає константу зі значенням покажчика,яка ні на що не вказує.  p> 
 Вбудований вказівник типу позначає нетіпізованний покажчик, тобтопокажчик, який не вказує ні на який певний тип. Зміннітипу Pointer можуть бути разименовани; вказівку символу ^ після такоїзмінної викликає появу помилки. Як і значення, що позначається словомnil, значення типу Pointer сумісні з усіма іншими типами покажчиків.  p> 
 У розділі "Покажчики та динамічні змінні" в Главе4 ви можетезнайти синтаксис посилання на динамічні змінні, які вказуються здопомогою покажчика-змінної.  p> 
 типізований КОНСТАНТА  p> 
 У Турбо Паскалі допускається використання типізованих констант. Вонизадаються в розділі оголошення констант в такий спосіб:  p> 
: =  p> 
 Тут - індіфікатор константи;  p> 
 - тип константи;  p> 
 - значення константи .  p> 
 типізований констант можна присвоювати інші значення в ходівиконання програми, тому фактично вони являють собою змінніз початковими значеннями. Типізований константа набуває зазначена воголошення її значення, тобто ініціюється, лише один раз: до моменту початкуроботи програми. При повторному вході в блок (роцедуру або функцію), вякому вона оголошена, ініціація типізований константи не виробляється івона зберігає те значення, яке мала до моменту виходу з блоку.  p> 
 типізовані константи можуть бути будь-якого типу, крім файлів. Не можнатакож оголосити типізований константу - запис, якщо хоча б одна з їїполів є полем файлового типу.  p> 
 Оскільки типізований константа фактично не відрізняється відзмінної, її не можна використовувати як значення при оголошенніінших констант або меж типу-діапазону.  p> 
 КОНСТАНТА простих типів І ТИПУ STRING  p> 
 Оголошення таких констант звичайно не викликає труднощів, так як вяк їх значення іспоьзуется нетипізовані константи або їхіндіфікатори.  p> 
 КОНСТАНТА-масиви  p> 
 В якості початкового значення тіпізтрованной константи-масивувикористовуються список констант, відокремлених один від одного комами; списокполягає в круглі Собко.  p> 
 При оголошенні багатовимірних констант-масивів безліч констант,відповідних кожному вимірюванню, полягає в додаткові круглідужки і відокремлюється від сусіднього безлічі комами. У результатіутворюються вкладені структури множин, причому глибина вкладення повиннасответствовать кількості вимірів (розмірності) масиву. Найкращі внутрішнібезлічі констант пов'язують?? я з вимірюванням самого правого індексу масиву.  p> 
 КОНСТАНТА-ЗАПИСИ  p> 
 Визначення константи-запису має такий вигляд:  p> 
: ()  p> 
 Тут - індіфікатор константи;  p> 
 - тип запису;  p> 
 - список значень полів.  p> 
 Список значень полів являє собою список з послідовностейвиду: ім'я поля, двокрапка і константа. Елементи списку відокремлюються один віддруга двокрапками.  p> 
 КОНСТАНТА-множина  p> 
 Значення типізований константи-безлічі задається у виглядіправильного конструктора множин.  p> 
 КОНСТАНТА-ПОКАЖЧИКИ  p> 
 Єдиним значенням типізований константи-покажчика може бутитільки NIL. 
----------------------- p> 
 Порядкові  p> 
 Об'єкти  p> 
 Процедурні  p > 
 Масиви  p> 
 Структуровані  p> 
 Файли  p> 
 Записи  p> 
 Безліч  p> 
 Строки  p> < p> Покажчики  p> 
 Цілі  p> 
 Тип-діапазон  p> 
 Логічний  p> 
 символьний  p> 
 перераховуються  p> < p> Прості типи  p> 
 Речові  p> 
 ТИПИ  p> 
 
 p>