Типи – це спеціальні конструкції мови, що розглядаються компілятором як зразки для створення інших елементів програми, таких як змінні, константи, функції. Різний тип визначає дві важливі для компілятора речі: обсяг пам'яті, що виділяється для розміщення елемента (константи, перемінною чи результату, що повертається функцією), набір припустимих для елемента значень, і набір припустимих над елементом дій.
Константи визначають ділянки пам'яті, що не можуть змінюватися в процесі виконання програми.
Змінні зв'язані зі змінюваними ділянками пам'яті, тобто з такими її ділянками, уміст яких буде змінюватися під час роботи програми.
Мітки – це імена операторів програми. Використовуються дуже рідко і тільки для вказівки переходу до наступного оператору.
Підпрограми – це спеціальним чином оформлені фрагменти програми. Важливою особливістю підпрограм є їхня відносна незалежність від іншого тексту програми. Підпрограми – це засіб структурування програми, тобто, розчленовування її на декілька багато в чому незалежних фрагментів.
Коментарі використовуються для пояснення тих чи інших фрагментів програми. Компілятором вони ігноруються. Наявність коментарів у тексті програми робить її зрозумілішою і дозволяє пояснювати особливості реалізації програми чи окремих її фрагментів. Коментарем у Pascal вважається будь-який текст, що розміщений у фігурних дужках. У коментарях допускаються використання будь-яких символів, включаючи символи кирилиці.
Перелічені елементи програми нижче будуть розглянуті більш детально.
Для подання інформації в комп’ютері використовуються двоїсті цифри або біти, які можуть набувати тільки два значення: 0 чи 1. Для зручності прийнято об’єднувати біти в байти. Кожний байт – це 8 бітів. У свою чергу байти можуть об’єднуватись в слова (здебільшого два-вісім байтів). Усі біти слова обробляються одночасно. Інтерпретація слів заздалегідь не визначена: все залежить від того, що з ними буде робитись. Їх можна трактувати і як команди комп’ютеру, і як числові дані, і як деякий текст, тощо. Тому потрібно визначитись, яка інформація міститься в тому чи іншому слові.
Тобто описати ділянки пам’яті комп’ютера, у які будуть поміщатися дані.
Програма здійснює обробку даних. Як уже відзначалось, дані бувають двох видів – константи і змінні.
Константи – це такі дані, значення яких, будучи визначеними перед виконанням програми, не змінюються на протязі її виконанні. У Pascal існує два виду констант: літерали та іменовані константи. Літералами називаються числа, окремі символи та рядки символів. Іменована константа – це фіксоване значення, якому при оголошенні на початку програми присвоюється ім’я (ідентифікатор). Літерали використовуються в програмі своїм значенням, іменовані константи – їх ідентифікаторами.
Змінні – це такі дані, значення яких можуть змінюватися у процесі виконання програми. При присвоєнні змінній нового значення старе значення знищується і втрачається.
Кожне дане (як константа, так і змінна) відноситься до якого-небудь типу. Під типом даного розуміється множина його допустимих значень. Тип дозволяє визначити, як буде інтерпретуватися той чи інший набір бітів (слово). Це дає можливість уникнути характерних для мов програмування низького рівня помилок зв’язаних зі спробою виконати арифметичні операції над символами, інтерпретувати дані як команди, тощо: тип даного визначає також які дії над ним допустимі.
Типи в Pascal відіграють важливу роль. Це зв'язано з тим, що ця мова створювалась як засіб навчання студентів програмуванню. Оскільки починаючий програміст може легко припуститися помилки чи неточно описати свої дії, компілятор Pascal повинен був мати засоби контролю за діями програміста, щоб вчасно застерегти програміста від невірних дій. Спочатку типи саме і призначалися для того, , щоб програміст явно вказував компілятору, якого розміру пам'ять йому необхідна і що він збирається з цією пам'яттю робити. Практика застосування типів показала їхню високу ефективність для захисту програми від випадкових помилок, так що практично всі мови програмування високого рівня в тому чи іншому степені реалізують механізм типів.
Існують декілька груп типів. Ми розглядаємо тільки дві з них: прості та структуровані типи даних.
Прості типи не містять в собі інших типів. Дані цих типів можуть одночасно мати тільки одне значення.
З групи простих типів даних, у свою чергу, ми розглянемо тільки декілька основних типів (табл.3).
Таблиця 3 - Основні типи даних
Тип | Ім'я типу | Зміст |
Цілий | Integer | Цілі числа в інтервалі -32768 до 32768 |
Дійсний | Real | Дійсні числа в інтервалі від 10 38 до |
Логічний | Boolean | Логічні дані. Можуть приймати значення True (істина) або False (брехня) |
Символьний (літерний) | Char | Дані символьного типу. Можуть приймати значення однієї літери з набору символів в ЕОМ |
Перераховани | Набір значень, яких може набувати дане | |
Тип | Ім'я типу | Зміст |
й | ||
Діапазон | Підмножина впорядкованих значень, визначуване початковим і кінцевим значеннями |
Слід відмітити, що Pascal має значно більше простих типів. Це тому, що він передбачає по декілька подібних типів. Наприклад, цілі типи крім типу Integer можна описати також як Byte, Longint, тощо. Кожен з таких типів відрізняється внутрішнім представленням, тобто розміром пам’яті, яка відводиться для даного та діапазоном можливих значень: Byte – один байт, Integer – два і т.д. Усі прості типи, за винятком дійсного, називаються порядковими типами. Вони мають кінчену кількість допустимих значень, тобто значення цього типу можна певним способом впорядкувати. Це означає, що кожному значенню порядкового типу можна присвоїти якесь ціле число – порядковий номер. Таким чином встановлюється порядок слідування значень “наступний” – “попередній”. Значення порядкових типів в комп’ютері подаються абсолютно точно. На відміну від порядкових типів дані дійсного типу в комп’ютері подаються лише з деякою точністю, яка залежить від внутрішнього формату дійсного числа.
З групи структурованих типів ми розглянемо рядкові дані (типу String), дані типу множина, масиви, записи і файли.
Дане типу String (рядок) – це послідовність символів довільної довжини, але не більше 255 символів. Гранична кількість символів у рядку можна перевизначити, вказавши це число після імені типу в квадратних дужках: String[n].
Множина – це набір логічно зв'язаних один з одним значень. Характер зв'язків між значеннями визначається програмою і ніяк не контролюється Delphi. Кількість елементів, що входять до множини , може мінятися від 0 до 255 (множина, що не містить елементів, називається порожньою). Саме змінністю своїх елементів множини відрізняються від масивів і записів.
Дві множини вважаються еквівалентними тоді і тільки тоді, коли всі їхні елементи однакові, причому порядок входження елементів до множини не має значення. Якщо всі елементи однієї множини входять також і до іншої, говорять про включення (входження) першої множини до другої.
Порожня множина включається до будь-якої іншої.
Над множинами визначені операції:
перетинання множин (*) – результат містить елементи, загальні для обох множин; об'єднання множин (+) – результат містить елементи першої множини, доповнені відсутніми елементами з другої множини; різниця множин (-) – результат містить елементи з першої множини, що не належать другій.Над множинами визначена також низка логічних операцій (операцій порівняння):
еквівалентність (=); повертає true, якщо обидві множини еквівалентні; нееквівалентність (<.); повертає true, якщо обидві множининееквівалентні;
входження (<=) – повертає true, якщо перша множина включена до другої; входження (>=) – повертає true, якщо друга множина включена до першої; приналежність (in) – це бінарна (одномісна) операція. Повертає true, якщо у множині маються задані значення.Решта структурованих типів буде розглянута нижче.
Серед типів даних, що використовуються в мові Pascal, є стандартні (наперед визначенні) типи і типи, визначувані користувачем.
До стандартних типів, що не вимагають попереднього визначення, відносяться типи Integer, Real, Boolean, Char і String. Решта типів, що використовуються в програмі, має бути визначена або в розділі опису типів (в цьому випадку кожному визначуваному типу буде привласнено ім'я), або безпосередньо в розділі опису змінних.