Телефони 

Які типи даних використовуються у мові паскаль. Порядкові типи даних у паскалі. Перелічуваний тип даних

До порядкових типів відносяться (див. рис.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 наводиться назва цілих типів, довжина їхнього внутрішнього уявлення в байтах та діапазон можливих значень.

Таблиця 4.1

З використанням процедур і з цілими параметрами слід керуватися «вкладеністю» типів, тобто. скрізь, де може використовуватися WORD, допускається використання BYTE (але не навпаки), в LONGINT «входить» INTEGER, який, у свою чергу, включає SHORTINT.

Перелік процедур і функцій, що застосовуються до цілих типів, наведено в табл.4.2. Літерами b, s, w, i, lпозначені вирази відповідно типу BYTE, SHORTINT, WORD, INTEGER та LONGINT, x - вираз будь-якого з цих типів; літери vb, vs, vw, vi, vl, vxпозначають змінні відповідних типів. У квадратних дужках зазначається необов'язковий параметр.

Таблиця 4.2

Стандартні процедури та функції, які застосовуються до цілих типів
Звернення Тип результату Дія
abs(x) x Повертає модуль х
chr(b) Char Повертає символ за його кодом
dec (vx[, i]) - Зменшує значення vx на i, а за відсутності i-на 1
inc(vx[, i]) - Збільшує значення vx на i, а за відсутності i - на 1
Hi(i) Byte Повертає старший байт аргументу
Hi(w) Те ж саме Те саме
Lo(i) " Повертає молодший байт аргументу
Lo (w) " Те саме
odd(l) Boolean Повертає True, якщо аргумент - непарне число
Random (w) Як у параметра Повертає псевдовипадкове число, рівномірно розподілене в діапазоні 0...(w-l)
sgr(x) X Повертає квадрат аргументу
swap (i) Integer Змінює місцями байти у слові
swap (w) Word

При діях з цілими числами тип результату буде відповідати типу операндів, а якщо операнди відносяться до різних цілих типів, - типу операнда, який має максимальну потужність (максимальний діапазон значень). Можливе переповнення результату ніяк не контролюється, що може призвести до непорозумінь, наприклад:

а: = 32767; (Максимально можливе значення типу INTEGER)

х: = а + 2; (Переповнення при обчисленні цього виразу !}

у:= LongInt(а)+2; (Переповнення немає після приведення змінної до більш потужного типу)

WriteLn(x:10:0, у:10:0)

В результаті прогону програми отримаємо

Логічний тип. Значеннями логічного типу може бути одна із попередньо оголошених констант FALSE (брехня) або TRUE (істина). Для них справедливі правила:

False< True;

succ (False) = True;

pred(True) = False.

Оскільки логічний тип відноситься до порядкових типів, його можна використовувати в операторі лічильного типу, наприклад:

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 наведено деякі поширені варіанти кодування цих символів).

Таблиця 4.3

Кодування символів відповідно до стандарту ASCII
Код Символ Код Символ Код Символ Код Символ
NUL BL ® "
ЗОН ! A a
STX " У b
ЕТХ # З з
EOT $ D d
ENQ % E e
АСК & F f
BEL " G g
BS ( H h
НТ ) I i
LF * J j
VT + k k
FF , L i
CR - M m
SO . N n
SI / Про
DEL p P
DC1 Q q
DC2 R r
DC3 S s
DC4 T t
NAK U u
SYN V V
ETB w w
CAN X X
EM У У
SUB : z z
ESC / [ {
FS < \ l
GS = ] }
RS > ^ ~
US ? - n

Символи з кодами 0...31 відносяться до службових кодів. Якщо ці коди використовуються в тексті програми, вони вважаються пробілами. При використанні в операціях введення-виведення вони можуть мати наступне самостійне значення:

Символ Код Значення
BEL Дзвінок; виведення на екран цього символу супроводжується звуковим сигналом
НТ Горизонтальна табуляція; при виведенні на екран зміщує курсор у позицію, кратну 8 плюс 1 (9, 17, 25 і т.д.)
LF Переклад рядка; при виведенні його на екран усі наступні символи будуть виводитися, починаючи з тієї ж позиції, але на наступному рядку
VT Вертикальна табуляція; при виведенні на екран замінюється спеціальним знаком
FF Прогін сторінки; при виведенні на принтер формує сторінку, при виведенні на екран замінюється спеціальним знаком
CR Повернення каретки; вводиться натисканням клавіші Enter (при введенні за допомогою READ або READLN означає команду «Введення» і в буфер введення не поміщається; при виведенні означає команду «Продовжити виведення з початку поточного рядка»)
SUB Кінець файлу; вводиться із клавіатури натисканням Ctrl-Z; при виведенні замінюється спеціальним знаком
SSC Кінець роботи; вводиться з клавіатури натисканням клавіші ESC; при виведенні замінюється спеціальним знаком

До типу CHAR застосовні операції відносини, і навіть вбудовані функції: СНR(В) - функція типу CHAR; перетворює вираз типу BYTE на символ і повертає його своїм значенням;

UPCASE(CH) – функція типу CHAR; повертає прописну букву, якщо СН - рядкова латинська буква, інакше повертає сам символ СН, наприклад:

cl:= UpCase("s") ;

c2:= UpCase ("Ф");

WriteLn(cl," ",c2)

Так як функція UPCASE не обробляє кирилицю, в результаті цієї прогони

програми на екран буде видано

Перерахований тип. Тип, що перераховується, задається перерахуванням тих значень, які він може отримувати. Кожне значення називається деяким ідентифікатором і розташовується у списку, обрамленому круглими дужками, наприклад:

colors = (red, white, blue);

Застосування перелічуваних типів робить програми наочнішими. Якщо, наприклад, у програмі використовуються дані, пов'язані з місяцями року, такий фрагмент програми:

Тип Місяць = (січ, лютий, березень, квітень, травень, червень, липень, серпень, сен, окт, ноя, дек);

місяць: Тип Місяць;

if місяць = серп then WriteLn("Добре б поїхати до моря!");

був би, погодьтеся, дуже наочним. На жаль! У Турбо Паскалі не можна використовувати кирилицю в ідентифікаторах, тому ми змушені писати так:

TypeMonth=(jan,feb,mar,may,jun,jul,aug,sep,oct,nov,dec);

місяць: TypeMonth;

if month = aug then WriteLn("Добре б поїхати до моря!");

Відповідність між значеннями типу, що перераховується, і порядковими номерами цих значень встановлюється порядком перерахування: перше значення в списку отримує порядковий номер 0, друге - 1 і т.д. Максимальна потужність типу, що перераховується, становить 65536 значень, тому фактично перерахований тип задає деяке підмножина цілого типу WORD і може розглядатися як компактне оголошення відразу групи цілих констант зі значеннями О, 1 і т.д.

Використання типів, що перераховуються, підвищує надійність програм завдяки можливості контролю тих значень, які отримують відповідні змінні. Нехай, наприклад, задані такі типи:

colors = (black, red, white);

ordenal = (one, two, three);

days = (monday, tuesday, Wednesday);

З точки зору потужності та внутрішнього уявлення всі три типи еквівалентні:

ord(black)=0, ..., ord(white)=2,

ord(one)=0, ...ord(three)=2,

ord(monday)=0, ...ord(Wednesday)=2.

Однак, якщо визначено змінні

col:colors; num:ordenal;

то допустимі оператори

num: = succ (two);

day:= pred(tuesday);

але неприпустимі

Як уже згадувалося, між значеннями типу, що перераховується, і безліччю цілих чисел існує однозначна відповідність, що задається функцією ORD(X). У Турбо Паскалі допускається і зворотне перетворення: будь-який вираз типу WORD можна перетворити на значення типу, що перераховується, якщо тільки значення цілочисленного виразу не перевищує потужне1™ перелічуваного типу. Таке перетворення досягається застосуванням автоматично оголошеної функції з ім'ям типу, що перераховується (див. п. 4.4). Наприклад, для розглянутого вище оголошення типів еквівалентні такі присвоєння:

col:= colors(0);

Зрозуміло, привласнення

буде неприпустимим.

Змінні будь-якого типу можна оголошувати без попереднього опису цього типу, наприклад:

col: (black, white, green);

Тип-діапазон. Тип-діапазон є підмножина свого базового типу, якою може виступати будь-який порядковий тип, крім типу-діапазону. Тип-діапазон задається межами своїх значень усередині базового типу:

<мин.знач.>..<макс.знач.>

Тут<мин.знач. >- Мінімальне значення типу-діапазону;

<макс.знач.>- максимальне значення.

Наприклад:

digit = "0".. "9";

Тип-діапазон необов'язково описувати в розділі TYPE, а можна вказувати безпосередньо при оголошенні змінної, наприклад:

Ichr: "A".."Z";.

При визначенні типу-діапазону слід керуватися такими правилами:

  • два символи ".." розглядаються як один символ, тому між ними неприпустимі прогалини;
  • ліва межа діапазону не повинна перевищувати його правий кордон. Тип-діапазон успадковує всі властивості базового типу, але з обмеженнями, пов'язаними з його меншою потужністю. Зокрема, якщо визначено змінну

days = (mo,tu,we,th,fr,sa,su);

WeekEnd = sa.. su;

то ORD(W) поверне значення 5 , тоді як PRED(W) призведе до помилки.

До стандартної бібліотеки Турбо Паскаля включено дві функції, що підтримують роботу з типами-діапазонами:

НIGН(Х) - повертає максимальне значення типу-діапазону, якого належить змінна X;

LOW(X) -повертає мінімальне значення типу-діапазону.

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

WriteLn(Low(k),"..",High(k))

Безліч цілих чисел нескінченна, але ми завжди можемо підібрати таку кількість біт, щоб уявити будь-яке ціле число, що виникає при вирішенні конкретної задачі. Безліч дійсних чисел не лише нескінченна, а ще й безперервна, тому, скільки б ми не взяли біт, ми неминуче зіткнемося з числами, які не мають точного уявлення. Числа з плаваючою комою - один із можливих способів представлення дійсних чисел, який є компромісом між точністю та діапазоном значень, що приймаються.

Число з плаваючою комою складається з набору окремих розрядів, умовно розділених на знак, експоненту порядку та мантису. Порядок і мантиса - цілі числа, які разом із знаком дають уявлення числа з плаваючою комою у такому вигляді:

Математично це записується так:

(-1) s × M × B E , де s – знак, B-основа, E – порядок, а M – мантиса.

Підстава визначає систему числення розрядів. Математично доведено, що числа з плаваючою комою з базою B=2 (двійкове уявлення) найбільш стійкі до помилок округлення, тому на практиці зустрічаються тільки бази 2 і, рідше, 10. Для подальшого викладу завжди будемо вважати B=2, і формула числа с плаваючою комою матиме вигляд:

(-1) s × M × 2 E

Що таке мантиса та порядок? Мантіса- Це ціле число фіксованої довжини, яке представляє старші розряди дійсного числа. Допустимо наша мантиса складається з трьох біт (| M | = 3). Візьмемо, наприклад, число «5», яке в двійковій системі дорівнюватиме 101 2 . Старший біт відповідає 2 2 = 4, середній (який ми дорівнює нулю) 2 1 =2, а молодший 2 0 =1. Порядок- Це ступінь бази (двійки) старшого розряду. У разі E=2. Такі числа зручно записувати в так званому «науковому» стандартному вигляді, наприклад, «1.01e+2». Відразу видно, що мантиса складається із трьох знаків, а порядок дорівнює двом.

Допустимо ми хочемо отримати дробове число, використовуючи ті ж 3 біти мантиси. Ми можемо зробити це, якщо візьмемо, скажімо, E=1. Тоді наше число буде рівним

1.01e+1 = 1×2 1 +0×2 0 +1×2 -1 =2+0,5=2,5

Очевидно, що таким чином те саме число можна уявити по-різному. Розглянемо приклад із довжиною мантиси |M|=4. Число «2» можна представити у такому вигляді:

2 = 10 (у двійковій системі) = 1.000e+1 = 0.100e+2 = 0.010e+3.

Тому вже в перших машинах числа представляли в так званому нормалізованому вигляді, коли перший біт мантиси завжди мав на увазі рівним одиниці.

Це заощаджує один біт (оскільки неявну одиницю не потрібно зберігати в пам'яті) і забезпечує унікальність уявлення числа. У прикладі «2» має єдине уявлення («1.000e+1»), а мантиса зберігається у пам'яті як «000», т.к. старша одиниця мається на увазі неявно. Але в нормалізованому поданні чисел виникає нова проблема – у такій формі неможливо уявити нуль.

  • Аналіз даних за допомогою команд Підбір параметра та Пошук рішення
  • Аналіз та інтерпретація даних експериментально-психологічного дослідження.
  • Аналіз вихідних даних. Технічні нормативи міської залізниці.
  • АНАЛІЗ ОТРИМАНИХ ДАНИХ. ПРИЙНЯТТЯ РІШЕННЯ ПРО ДОСИЛЬНІСТЬ АБО НЕДОСТАТНОСТІ ХАРАКТЕРИСТИК ВОДОПОСТАЧАННЯ ДЛЯ ПОТРІБ СИСТЕМИ ПОЛИВУ.
  • Апаратура лінії зв'язку: апаратура передачі, кінцеве обладнання, проміжна апаратура.

  • Основи програмування
    Кожен професіонал колись був чайником. Напевно, вам знайомий стан, коли "не знаєш як почати думати, щоб до такого додуматися". Напевно, ви стикалися з ситуацією, коли ви просто не знаєте, з чого почати. Ця книга орієнтована саме на таких людей, хто хотів би стати програмістом, але зовсім не знає, як розпочати цей шлях. ...

    Майже всі цілочисленні типи даних належать до . Ці типи даних є цілими числами в певному діапазоні. Конкретні назви цілих типів і діапазони значень залежать від конкретної мови програмування, від компілятора і від режиму компіляції. Докладніше про це треба дізнаватись у документації на компілятор.

    Наприклад, тип даних Integer Delphi має діапазон -2147483648…2147483647, тоді як у Turbo Pascal тип даних Integerпредставляє числа у діапазоні -35768…32767. У Free Pascal діапазон значень типу Integerвизначається вибраним режимом.

    Оскільки Lazarus використовує компілятор Free Pascal, все сказане про типи даних стосовно Free Pascal справедливо й у Lazarus.

    Отже, цілі типи даних Free Pascal перераховані в таблиці 13.1.

    Таблиця 13.1. Цілочисленні типи даних Free Pascal (Lazarus).

    Тип Розмір, байт Діапазон значень
    Byte 1 0…255
    Shortint 1 -128…127
    Smallint 2 -35768…32767
    Word 2 0…65535
    Integer 2 або 4 Залежить від режиму компіляції
    Cardinal 4 0…4294967295
    Longint 4 -2147483648…2147483647
    Longword 4 0...4294967295
    Int64 8 -9223372036854775808...9223372036854775807
    QWord 8 0...18446744073709551615

    ПРИМІТКА
    У Free Pascal типи Int64і QWordне є! Це означає, що ви не можете використовувати їх, наприклад, для індексних змінних циклів. Однак я привів їх тут, щоб окремо не описувати в майбутньому і зібрати в одному місці всі цілі типи Free Pascal. Якщо якісь слова вам не зрозумілі – не лякайтеся. Свого часу я про все розповім докладніше.

    Нині ж кілька пояснень до таблиці.

    У колонці ТИПнаведено ідентифікатори типів даних (ключові слова, які вказують компілятору, якого типу належать ті чи інші дані). Як використовувати ці ідентифікатори, ви дізнаєтесь у наступних уроках.

    У колонці РОЗМІРвказано розмір, який займає тип даних у пам'яті комп'ютера. Наприклад, ціле позитивне число можна уявити різними типами: Byte, Word, Cardinalта ін Однак число типу Cardinalбуде займати в пам'яті 4 байти, тоді як кількість типу Byte- Лише 1 байт. Тому, якщо ви точно знаєте, що число, з яким ви працюєте, ніколи не набуде значення більше 255, то краще визначати його як тип Byte, оскільки це дозволить заощадити місце у пам'яті комп'ютера. Хоча тут не все однозначно (нюанси розподілу пам'яті та інших ресурсів комп'ютера виходять за рамки).

    У колонці ДІАПАЗОНвказано діапазон значень, яким оперує тип даних. Наприклад, кількість типу Byteможе набувати значення від 0 до 255.

    А зараз практика. Напишемо програму, яка виводить на екран діапазони значень всіх цілих типів даних. Вихідний код цієї програми наведено нижче:

    Лістинг 13.1. Програма виведення на екран діапазонів цілих чисел. program td; ($mode objfpc)($H+) uses ($IFDEF UNIX)($IFDEF UseCThreads) cthreads, ($ENDIF)($ENDIF) Classes ( ви можете add units after this ); begin Writeln("Byte:", Low(Byte), "..", High(Byte)); Writeln("Shortint:", Low(Shortint), "..", High(Shortint)); Writeln("Smallint:", Low(Smallint), "..", High(Smallint)); Writeln("Word: ", Low(Word), "..", High(Word)); Writeln("Integer:", Low(Integer), "..", High(Integer)); Writeln("Cardinal:", Low(Cardinal), "..", High(Cardinal)); Writeln("Longint:", Low(Longint), "..", High(Longint)); Writeln("Longword: ", Low(Longword), "..", High(Longword)); Writeln("Int64: ", Low(Int64), "..", High(Int64)); Writeln("QWord: ", Low(QWord), "..", High(QWord)); Readln; end.

    Стандартна функція Lowвизначає мінімальне значення типу даних. Фунцька Highвизначає максимальне значення. З функціями WriteLnі ReadLnви вже трохи знайомі. Більш детально про підпрограми (процедури та функції) ми говоритимемо у відповідному розділі .

    Насамкінець скажу, як записуються цілі дані в програмі. Так як і скрізь - просто пишіть число, без лапок і будь-яких додаткових символів. Наприклад, так

    10
    178
    35278

    Щоправда, це стосується числам у десятковій системі числення. Напевно, ви вже знаєте, що є й інші системи. Найбільш поширені двійкова, десяткова і шістнадцяткова системи числення.

    Free Pascal підтримує чотири формати запису цілого числа:

    1. Десятковий запис. Просто число, наприклад, 10.
    2. Шістнадцятковий запис. Число з префіксом $. Наприклад, шістнадцяткове число $10 дорівнює десятковому 16.
    3. Вісімковий запис. Число з префіксом &. Наприклад, вісімкове число &10 дорівнює десятковому 8.
    4. Двійковий запис. Число з префіксом %. Наприклад, двійкове число %10 дорівнює десятковому 2.

    Домашнє завдання:

    Створіть програму, яка відображає діапазони значень цілих чисел (листинг 13.1). Відкомпілюйте програму та запустіть її. Переконайтеся, що ці значення відповідають наведеним у таблиці 13.1.

    У вихідному коді програми знайдіть рядок, який визначає режим компіляції:

    ($mode objfpc)($H+)

    У цьому рядку замість слова objfpcнапишіть слово tp. Тобто підсумковий рядок має виглядати так:

    ($mode tp)($H+)

    Запустіть програму. Подивіться діапазон значень типу Integer. Зробіть висновки.

    Вчитеся думати як програміст, тобто логічно. Ніхто вам до пенсії не розжовуватиме, як це роблю зараз я. Потрібно звикати думати самостійно. Інакше ви скотитеся до "мавпячого принципу навчання", і тоді ваші шанси стати класним програмістом наблизяться до нуля. Щоб допомогти вам не скотитися на рівень "зубрьожки", я періодично залишатиму прогалини у вашому навчанні, щоб ви постаралися самі додуматися до якихось речей.

    Набагато краще, якщо ви самі додумаєтесь до неправильного рішення, самі знайдете помилку і самі її виправите, чим завжди будете використовувати чужі правильні рішення і тупо їх копіювати.

    Федеральне агентство з освіти

    Реферат

    «ТИПИ ДАНИХ У ПАСКАЛІ»

    1. Типи даних

    Будь-які дані, тобто. константи, змінні, властивості, значення функцій чи висловлювання характеризуються своїми типами. Тип визначає безліч допустимих значень, які може мати той чи інший об'єкт, а також безліч допустимих операцій, які застосовуються до нього. Крім того, тип визначає також формат внутрішнього подання даних у пам'яті ПК.

    Взагалі мова Object Pascal характеризується розгалуженою структурою типів даних (рис. 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 - Цілі типи

    Назва Довжина, байт Діапазон значень
    Cardinal 4 0. .. 2 147 483 647
    Byte 1 0...255
    Shortint 1 -128...+127
    Smallint 2 -32 768...+32 767
    Word 2 0...65 535
    Integer 4
    Longint 4 -2 147 483 648...+2 147 483 647
    Int64 8 -9*1018...+9*1018
    LongWord 4 0. . .4 294 967 295

    Типи LongWordі Int64вперше введені у версії 4, а типи Smallintі Cardinalвідсутні у Delphi 1. Тип integerдля цієї версії займає 2 байти і має діапазон значень від -32768 до +32767, тобто збігається з Smallint .

    З використанням процедур і з цілими параметрами слід керуватися “вкладеністю” типів, тобто. скрізь, де можна використовувати слово, допускається використання Byte(але не навпаки), в Longint"входить" Smallint, який, у свою чергу, включає в себе Shortint .

    Перелік процедур і функцій, що застосовуються до цілих типів, наведено в табл. 1.2. Літерами b, s, w, i, l позначені вирази відповідно до типу Byte , Shortint, Word, Integer та Longint ,

    х - вираз будь-якого з цих типів; літери vb, vs, vw, vi, vl, vx позначають змінні відповідних типів. У квадратних дужках зазначається необов'язковий параметр.

    Таблиця 1.2 - Стандартні процедури та функції, що застосовуються до цілих типів

    Звернення Тип результату Дія
    abs(x) x Повертає модуль x
    chr(b) Char Повертає символ за його кодом
    dec (vx [, i]) - Зменшує значення vx на i, а за відсутності i - на 1
    inc(vx[,i]) - Збільшує значення vx на i, а за відсутності i-на 1
    Hi(w) Byte Повертає старший бант аргументу
    Hi(I) Те саме Повертає третій за рахунком байт
    Lo(i) Повертає молодший байт аргументу
    Lo(w) Те саме
    odd(l) Boolean Повертає True, якщо аргумент-непарне число
    Random(w) Як у параметра Повертає псевдовипадкове число, рівномірно розподілене в діапазоні 0...(w-l)
    sqr(x) X Повертає квадрат аргументу
    swap(i) Integer Змінює місцями байти у слові
    swap (w) Word Теж

    При діях з цілими числами тип результату буде відповідати типу операндів, а якщо операнди відносяться до різних цілих типів - загального типу, який включає обидва операнда. Наприклад, при діях з shortintі словозагальним буде тип 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

    ShowMessage ("--);

    Якщо замінити тип параметра циклу 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 NUL 32 BL 64 @ 96 "
    1 ЗОН 33 ! 65 А 97 а
    2 STX 34 66 У 98 b
    3 ЕТХ 35 # 67 З 99 з
    4 EOT 36 $ 68 D 100 d
    5 ENQ 37 % 69 Е 101 е
    6 ACK 38 & 70 F 102 f
    7 BEL 39 " 71 G 103 д
    8" BS 40 ( 72 Н 104 h
    9 HT 41 ) 73 I 105 i
    10 LF 42 * 74 J 106 j
    11 VT 43 + 75 До 107 k
    12 FF 44 F 76 L 108 1
    13 CR 45 - 77 М 109 m
    14 SO 46 78 N 110 n
    15 SI 47 / 79 0 111 о
    16 DEL 48 0 80 Р 112 P
    17 DC1 49 1 81 Q 113 q
    18 DC2 50 2 82 R 114 r
    19 DC3 51 3 83 S 115 s
    20 DC 4 52 4 84 Т 116 t
    21 NAK 53 5 85 U 117 u
    22 SYN 54 6 86 V 118 v
    23 ETB 55 7 87 W 119 W
    24 CAN 56 8 88 х 120 x
    25 EM 57 9 89 Y 121 У
    26 SUB 58 : 90 Z .122 z
    27 ESC 59 ; 91 t 123 {
    28 FS 60 < 92 \ 124 1
    29 GS 61 = 93 ] 125 }
    30 RS 62 > 94 Л 126 ~
    31 US 63 F 95 127 r

    Символи з кодами 0...31 відносяться до службових кодів. Якщо ці коди використовуються в тексті програми, вони вважаються пробілами.

    Поняття даних є одним із ключових у програмуванні, та й взагалі у комп'ютерних науках. Грубо кажучи, дані в інформатиці це інформація, що перебувають у стані зберігання, обробки чи передачі, у певний відрізок часу. У машинах Тюрінга інформація має тип, а він у свою чергу залежить від роду інформації.

    Типи даних у Паскалі визначають можливі значення змінних, констант, виразів та функцій. Вони бувають вбудованими та користувальницькими. Вбудовані типи спочатку присутні у мові програмування, а користувачі створюються програмістом.

    За способом подання та обробки типи даних бувають:

    • прості
    • структуровані
    • покажчики
    • об'єкти
    • процедури

    У цій статті будуть розглянуті лише найпростіші типи даних, оскільки на початкових етапах навчання вашій програмі буде простіше обійтися, наприклад, без файлів і записів, ніж без цілих чи рядкових змінних.

    Цілочисленний тип

    Сюди входять кілька цілих типів, які відрізняються діапазоном значень, кількістю байт відведених для їх зберігання і словом, за допомогою якого оголошується тип.

    Тип Діапазон Розмір у байтах
    shortint -128…127 1
    integer -32 768…32 767 2
    longint -2 147 483 648…2 147 483 647 4
    byte 0…255 1
    слово 0…65 535 2

    Оголосити цілісну змінну можна в розділі Var, наприклад:

    Над змінними цієї категорії можна виконувати всі арифметичні та логічні операції за винятком поділу (/), для нього потрібний речовий тип. Також можуть бути застосовані деякі стандартні функції та процедури.

    Речовий тип

    У Паскалі бувають такі речові типи даних:

    Тип Діапазон Пам'ять, байт Кількість цифр
    Real 2.9e-39 … 1.7e38 6 11-12
    Single 1.5e-45 … 3.4e38 4 7-8
    Double 5.0e-324 …1.7e308 8 15-16
    Extended 3.4e-4932 … 1.1e493 10 19-20
    Comp -9.2e63 … (9.2e63)-1 8 19-20

    Над ними може бути виконано більшу кількість операцій та функцій, ніж над цілими. Наприклад, ці функції повертають речовий результат:

    sin(x) – синус;

    cos(x) – косинус;

    arctan(x) – арктангенс;

    ln(x) – натуральний логарифм;

    sqrt(x) – квадратний корінь;

    exp(x) – експонента;

    Логічний тип

    Змінна, що має логічний тип даних, може приймати всього два значення: true (істина) і false (брехня). Тут істині відповідає значення 1, а брехня тотожна нулю. Оголосити булеву змінну можна так:

    Над даними цього можуть виконуватися операції порівняння і логічні операції: not , and, or, xor.

    Символьний тип

    Символьний тип даних – це сукупність символів, які у тому чи іншому комп'ютері. Змінна цього типу приймає значення однієї з цих символів, займає у пам'яті комп'ютера 1 байт. Слово Charвизначає величину цього типу. Існує кілька способів записати символьну змінну (або константу):

    1. як одиночний символ, укладений апострофи: 'W', 'V', 'п';
    2. вказавши код символу, значення якого має бути в діапазоні від 0 до 255.
    3. за допомогою конструкції ^K, де K - код символу, що управляє. Значення K має бути на 64 більше за код відповідного керуючого символу.

    До величин символьного типу даних застосовні операції відношення та такі функції:

    Succ(x)- Повертає наступний символ;

    Pred(x)- Повертає попередній символ;

    Ord(x)- Повертає значення коду символу;

    Chr(x)- повертає значення символу за його кодом;

    UpCase(x)- Переводить літери з інтервалу 'a'..'z' у верхній регістр.

    Для плідної роботи із символьним типом рекомендую користуватися.

    Рядковий тип

    Рядок у Паскалі є послідовністю символів ув'язнених в апострофи, і позначається словом String. Число символів (довжина рядка) має не перевищувати 255. Якщо довжину рядка не вказувати, він автоматично визначитися в 255 символів. Загальний вид оголошення рядкової змінної виглядає так:

    Var<имя_переменной>: string[<длина строки>];

    Кожен символ у рядку має свій індекс (номер). Індекс першого байта - 0, але в ньому зберігається не перший символ, а довжина всього рядка, з чого випливає, що змінна цього типу займатиме на 1 байт більше за кількість змінних у ній. Номер першого символу – 1, наприклад, якщо ми маємо рядок S = stroka, то S = s;. В одному з наступних уроків рядковий тип даних буде розглянуто докладніше.

    Перелічуваний тип даних

    Тип даних, що перераховується, являє собою деяку обмежену кількість ідентифікаторів. Ці ідентифікатори полягають у круглі дужки, і відокремлюються один від одного комами.

    Type Day = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

    Змінна A може приймати лише значення, визначені в розділі Type. Також можна оголосити змінну типу в розділі Var:

    Var A: (Monday, Tuesday);

    До даного типузастосовні операції відносини, при цьому наперед визначено, що Monday

    Інтервальний тип даних

    Коли необхідно задати якийсь діапазон значень, то таких ситуаціях застосовується інтервальний тип даних. Для оголошення використовується конструкція m..n, де m- Мінімальне (початкове) значення, а n- максимально (кінцеве); тут m і n є константами, які можуть бути цілого, символьного, перерахованого чи логічного типу. Описуватися величини інтервального типу можуть як розділ типів, і у розділі описи змінних.

    Загальний вигляд:

    TYPE<имя_типа> = <мин. значение>..<макс. значение>;

    При описі змінної необхідно зазначити її тип. Тип змінної описує набір значень, які вона може набувати, та дії, які можуть бути над нею виконані. Опис типу визначає ідентифікатор, який означає тип.

    Прості типи поділяються на стандартні (порядкові) і перераховані (обмежені).

    Стандартні типи

    Турбо-Паскаль має чотири вбудовані стандартні типи: integer (ціле), real (речове), boolean (логічний) і char (символьний).

    Цілочисленний тип (integer)

    У Турбо-Паскалі є п'ять вбудованих цілих типів: shortint (коротке ціле), integer (ціле), longint (довге ціле), byte (довжиною в байт) і word (довжиною в слово). Кожен тип означає певне підмножина цілих чисел, як це показано в наступній Таблиці.

    Вбудовані цілі типи.

    Діапазон

    Формат

    8 бітів зі знаком

    16 бітів зі знаком

    2147483648 +2147483647

    32 біта зі знаком

    8 бітів без знаку

    16 бітів без знаку

    Арифметичні дії над операндами цілого типу здійснюються відповідно до таких правил:

    1. Тип цілої константи являє собою вбудований цілий тип з найменшим діапазоном, що включає значення цієї цілої константи.
    2. У разі бінарної операції (операції, що використовує два операнди), обидва операнди перетворюються до їх загального типу перед тим, як над ними відбувається дія. Загальним типом є вбудований цілий тип з найменшим діапазоном, що включає всі можливі значення обох типів. Наприклад, загальним типом для цілого та цілого довжиною в байт є ціле, а загальним типом для цілого та цілого довжиною у слово є довге ціле. Дія виконується відповідно до точності загального типу і типом результату є загальний тип.
    3. Вираз праворуч в операторі присвоєння обчислюється незалежно від розміру змінної зліва.

    Операції, що здійснюються над цілими числами:

    "+" - додавання

    "-" - віднімання

    "*" - множення

    SQR - зведення у квадрат

    DIV - після розподілу відкидає дробову частину

    MOD - одержання цілого залишку після розподілу

    ABS – модуль числа

    RANDOM(X)-отримання випадкового числа від 0 до Х

    А:=100; b:=60; a DIV b результат - 1 а MOD b результат - 40

    Описуються змінні цілого типу так:

    var список змінних: тип;

    Наприклад: var а,р,n:integer;

    Речовий тип(real)

    До речового типу відноситься підмножина дійсних чисел, які можуть бути представлені у форматі з плаваючою комою з фіксованим числом цифр. Запис значення у форматі з плаваючою комою зазвичай включає три значення - m, b та e - таким чином, що m*b е, де b завжди дорівнює 10, а m та e є цілочисленними значеннями в діапазоні речовинного типу. Ці значення m та e далі визначають діапазон і точність речовинного типу.

    Є п'ять видів речових типів: real, singlе, duble, exnende, comp. Речові типи відрізняються діапазоном та точністю пов'язаних з ними значень

    Діапазон та десяткові цифри для речових типів

    Діапазон

    Цифри

    2.9x10Е-39 до 1.7x10Е 38

    1.5x10Е-45 до 3.4x10Е 38

    5.0x10Е-324 до 1.7x10Е 308

    3.4x10Е-493 до 1.1x10Е 403

    2Е 63 до 2Е 63

    Операції, що здійснюються над речовими числами:

    • Усі операції допустимі цілих чисел.
    • SQRT(x)-корінь квадратний із числа х.
    • SIN(X), COS(X), ARCTAN(X).
    • LN(X)-натуральний логарифм.
    • EXP(X)-експонента Х (е х).
    • EXP (X * LN (A)) - зведення в ступінь (Ах).
    • Функції перетворення типів:
      • TRUNC(X)-відкидає дробову частину;
      • ROUND(X)-округлення.
    • Деякі правила арифметичних операцій:
      • Якщо арифметичному дії зустрічаються числа типу real і integer, то результат матиме тип real.
      • Всі складові виразу записуються в один рядок.
      • Використовуються лише круглі дужки.
      • Не можна поспіль ставити два арифметичні знаки.

    Описуються змінні речовинного типу так:

    var список змінних: тип;

    Наприклад:

    var d, g, k: real;

    Символьний тип(char)

    До типу char відноситься будь-який символ укладений в апострофи. Для подання апострофа як символьну змінну, треба укласти їх у апостроф:''''.

    Кожен символ має свій код та номер. Порядкові номери цифр 0,1...9 упорядковані за зростанням. Порядкові номери літер також упорядковані за зростанням, але не обов'язково йдуть один за одним.

    До символьних даних застосовні знаки порівняння:

    > , < , >=, <=, <> .

    Наприклад: 'A'< ‘W’

    Функції, які застосовуються до символьних змінних:

    1. ORD(X) - визначає порядковий номер символу Х. ord ('a') = 97;
    2. CHR(X) – визначає символ за номером. chr (97) = 'a';
    3. PRED(X) - видає символ, що стоїть перед символом Х. pred (B) = A;
    4. SUCC(X) - видає символ, наступний після символу Х. succ (A) = B);

    Перелічуваний тип

    Перерахований тип даних названий так оскільки задається як перерахування констант у строго певному порядку й у суворо певному кількості. Перерахований тип складається зі списку констант. Змінні цього типу можуть набувати значення будь-якої з цих констант. Опис перерахованого типу має вигляд:

    Type<имя типа>=(Список констант) ; Var<имя переменной>:<имя типа>;

    де<список констант>- це особливий вид констант, що задаються через кому і мають свій порядковий номер, починаючи з 0.

    Наприклад:

    type напрям = (північ, південь, захід, схід); місяць = (червень, липень, серпень, січень); ємність = (відро, бочка, каністра, бак); var поворот:напрямок; від'їзд: місяць; об'єм: ємність; var поворот:(звір, південь, захід, схід); від'їзд: (червень, липень, серпень, січень); об'єм: (відро, бочка, каністра, бак);

    Можна виконати такі оператори присвоєння:

    Поворот: = південь; від'їзд: = серпень; об'єм: = бак;

    але не можна виконувати змішані присвоєння:

    Від'їзд: = південь; обсяг:=серпень;

    До змінних перелічуваного типу можна застосувати такі функції:

    1. ORD – порядковий номер

    2. PRED - попередній елемент

    3. SUCC – наступний елемент.

    PRED (бочка) = відро; SUCC (південь) = захід; ORD (липень) = 1;

    Змінні типу можна порівняти, оскільки вони впорядковані і пронумеровані. Так висловлювання: північ< юг, июнь < январь имеют значения TRUE, а юг>захід та бак<бочка значение FАLSE.

    Обмежений тип

    Якщо змінна приймає в повному обсязі значення свого типу, лише у певному діапазоні, її можна розглядати як змінну обмеженого типу. Кожен обмежений тип визначається шляхом накладання обмеження на базові типи.

    Описується так:

    TYPE<имя типа>=константа1 ..константа2

    При цьому повинні виконуватись такі правила:

    1. Обидві обмежені константи мають бути одного типу.
    2. Як базовий тип можна використовувати будь-який простий тип, крім дійсного (real).
    3. Початкові значення щодо обмеженого типу має бути більше кінцевого значення.
    type index = 0..63; letter='a'..'z'; var char1, char2: letter; a, g: index;

    Можна описувати відразу в розділі опису змінних:

    var a, g:0 ..63; char1,char2:'a'..'z'.