Константи

Текстовий тип

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

Множиною значень цього типу є символи, впорядковані відповідно до розширеного набору символів коду ASCII. При виклику функції Ord(Ch), де Ch - значення символьного типу, повертається порядковий номер Ch.

Рядкова константа з довжиною 1 може позначати значення константи символьного типу. Будь-яке значення символьного типу може бути отримане за допомогою стандартної функції Chr. Крім того, до значень типу char, як і до значень інших порядкових типів, також можуть бути застосовані функції Pred і Succ.

Символьні дані поміщуються в апострофи (лапки).

Рядкові типи

З точки зору структур даних рядкові типи, на відміну від інших стандартних типів, є структурованими типами. Однак, враховуючи широке використання рядків в програмуванні, в Turbo Pascal для них введені стандартні типи String і PChar.

Рядковий тип даних дозволяє представити послідовність символів максимальної довжини – 255. Довжина рядка вказується в квадратних дужках. Наприклад, string[12] визначає рядок довжиною 12 символів. Якщо довжина рядка не вказана, приймається максимальна довжина рядка. Рядкові дані поміщаються в апострофи. Наприклад, рядок ‘Інформатика.’ має 12 символів.

Вказівний тип

Стандартний вказівний тип має ідентифікатор Pointer. Значеннями змінних і констант вказівного типу є адреси оперативної пам’яті, які складаються з адреси сегмента (1 слово=2 байта) і зміщення (1 слово=2 байта). Адреса сегмента зберігається в старшому слові, а зміщення – в молодшому слові повної адреси.

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

Структуровані типи та типи користувача ми також будемо вивчати в наступних лекціях.

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

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

Цілі десяткові числа записують­ся за звичайними правилами в діапазоні від -2147483648 до +2147483647, наприклад: -17; 193. Дійсні десяткові числа запису­ються у такому вигляді: ціла час­тина, крапка, дробова частина, ма­ленька або велика літера Е і показ­ник. Приклади: 200Е2; -31.4Е-1; –2.5, що, відповідно, означає: 20000; -3,14; -2,5.

Шістнадцяткові цілі числа запи­суються шістнадцятковими символами, перед якими розміщується знак долара, наприклад: $А5С, -$5В.

Логічні константи мають значен­ня true (істинно) або false (хибно).

Символьна константа – це будь-який один символ комп’ютера, поміще­ний в апострофи, наприклад: ‘a’, ‘Y’. Символ може бути заданий також внутрішнім кодом, перед яким вказується символ #, наприклад: #97 (символ а), #90 (символ Z).

Рядкова константа – це будь-яка послідовність символів комп’ютера (крім символу CR – повернення каретки), поміщена в апострофи, наприклад: ‘х+у=‘; ‘Київ – столиця України’. Максимальна довжина рядкової констан­ти – 255 символів.

У мові Pascal часто використовуються так звані іменовані константи, тобто константи, яким присвоюються імена (ідентифікатори), які надалі використо­вуються замість констант. Імена констант у програмі присвоюються до опи­сання змінних. Тип константи визначається автоматично на основі її значення.

У мові Pascal припускається використання типізованих констант, які мо­жуть змінювати своє значення у процесі виконання програми. Тому ці кон­станти можна враховувати як змінні. Однак за правилами їх запису вони ближчі до констант. Формально, типізовані константи відрізняються від іме­нованих тим, що після імені константи вказується її тип. Типізовані константи можуть бути будь-якого типу (простого, рядкового, масиву та ін.), крім файлів.

Арифметичні вирази

У математиці та фізиці послідовність виконання дій з числовими даними визначають формули, наприклад, h=gt2/2, s=vt. Вираз gt2/2 є складовою формули.

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

Найпростіший вираз складається з одного операнду. Прикладами таких виразів є: а – змінна, 5.3 – константа, sin(x) – функція. Приклад більш склад­ного виразу: 3.5+a-sin(x).

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

Ø арифметичні (результат арифметичного типу);

Ø логічні (результат логічного типу);

Ø текстові (результат текстового типу).

У арифметичних виразах мови Pascal використовуються такі знаки опе­рацій: + – додавання, – – віднімання, / – ділення, * – множення і т.д.

При записуванні арифметичних виразів необхідно враховувати пріори­тет операцій і дотримуватись таких правил:

1. Вирази записуються у рядок без будь-яких підрядкових або надрядко­вих знаків. Наприклад, запис 5*(а+b)2 заборонений. Правильним, наприклад, буде такий запис: 5*(a+b)*(a+b).

2. Операції повинні бути задані у явному вигляді. Неправильно писати 5(а+b). Його потрібно записати у такому вигляді: 5*(а+b).

3. Не дозволяється запис двох операцій, що безпосередньо розміщуються одна за одною. Наприклад, вираз а*–b записаний неправильно. Його можна записати, наприклад, так: а*(–b) або –b*а.

4. Операції у виразах виконуються зліва направо у порядку пріоритетності операцій.

5. Кожній дужці, що відкривається, у виразі повинна відповідати дужка, що закривається. Неправильно писати (a+b)*z). Його треба записати у вигляді (a+b)*z або ((a+b)*z).

 

Зауваження Якщо операнди виразу відносяться до різних типів даних, то автоматично виконується перетворення цих операндів до одного типу. Наприклад, якщо у виразі а+b число а – ціле десяткове, а число b – дійсне десяткове, то число а буде перетворене до дійсного типу і додавання буде виконуватися над дійсними числами. Результатом виразу буде також дійсне десяткове число.

По кількості операндів операції діляться на унарні і бінарні.

Унарні операції мають тільки один операнд, перед яким розташовується символ операції.

Більшість операцій є бінарними і містять два операнда, між якими ставиться символ операції.

Порядок обчислення значення арифметичного виразу, визначається:

ü пріоритетом операцій;

ü порядком слідування операцій зліва направо;

ü дужками.

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

 

Класифікація операцій по пріоритетах

Пріоритет Категорія операції Операції
Унарні + – not @
Бінарні типу множення, ділення, зсуву * / div mod and shl shr
Бінарні типу додавання + – or xor
Бінарні типу відношення = <> < > <= >= in

 

Класифікація операцій

По характеру виконуваних дій операції можна розділити на наступні групи:

1. Арифметичні операції:


Ø унарні (+, –);

Ø бінарні (+, –, *, /, div, mod.


2. Операції відношення: =, <>, <, >, <=, >=.

3. Логічні операції: not, and, or, xor.

4. Порозрядні логічні і зсувні операції: not, and, or, xor, shl, shr.

5. Рядкова операція (конкатенація): +.

6. Операції над множинами: +, –, *, in, <=, >=.

7. Операція взяття адреси: @.

Арифметичні операції

Суть цих дій особливих пояснень не потребує. Слід тільки пам’ятати:

ü якщо операнди різних типів, то тип результату буде більш охоплюючий

ü тип результату операції ділення завжди буде дійсним.

Операція Дія Типи операндів Тип результату
Унарні
+ Збереження знака Цілий, Дійсний Цілий, Дійсний
Заперечення знака Цілий, Дійсний Цілий, Дійсний
Бінарні
+ Додавання Цілий, Дійсний Цілий, Дійсний
Віднімання Цілий, Дійсний Цілий, Дійсний
* Множення Цілий, Дійсний Цілий, Дійсний
/ Ділення Цілий, Дійсний Дійсний
div Цілочислове ділення Цілий Цілий
mod Остача від ділення Цілий Цілий

Операції відношення

Дія операцій відношення відповідає їх математичному розумінню. Результатом цих операцій є логічне значення (True, False).

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

При порівнянні операндів вказівного типу допустимо використання тільки операцій = і <>. Два вказівника рівні тоді і тільки тоді, коли вони посилаються на один і той самий об’єкт.

Операція Дія Тип операндів Тип результату
= Дорівнює Сумісний простий, рядковий або вказівний Логічний
<> Не дорівнює Сумісний простий, рядковий або вказівний Логічний
< Менше Сумісний простий або рядковий Логічний
> Більше Сумісний простий або рядковий Логічний
<= Менше або дорівнює Сумісний простий або рядковий Логічний
>= Більше або дорівнює Сумісний простий або рядковий Логічний

 

Логічні операції (правила виконання)

Операнди Операції
A B not A A and B A or B A xor B
False False True False False False
False True True False True True
True False False False True True
True True False True True False

 

Логічні операції

Операція Дія Тип операнда Тип результату
Унарна
not Логічне заперечення Логічний Логічний
Бінарна
and Логічне І Логічний Логічний
or Логічне АБО Логічний Логічний
xor Логічне, що виключає АБО Логічний Логічний

Порозрядні і зсувні операції

Порозрядні операції в Turbo Pascal можуть мати операнди тільки цілого типу. Дія цих операцій виконується порозрядно (побітово) над двійковим записом операндів.

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

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

Результатом операції or буде цілочислене значення, рівне десятковому числу, яке відповідає двійковому запису порозрядно виконаної над початковими операндами логічної операції АБО.

Результатом операції xor буде цілочислене значення, рівне десятковому числу, яке відповідає двійковому запису порозрядно виконаної над початковими операндами логічної операції виключне АБО

Результатом операції A shl B буде цілочислене значення, рівне десятковому числу, отриманому в результаті порозрядного зсуву вліво двійкового запису операнда А на В розрядів. Ті розряди, що при цьому звільнилися заповнюються нулями.

Результатом операції A shr B буде цілочислене значення, рівне десятковому числу, отриманому в результаті порозрядного зсуву вправо двійкового запису операнда А на В розрядів. Ті розряди, що при цьому звільнилися заповнюються нулями.

Операції Дія Тип операндів Тип результату
Унарна
not Порозрядне заперечення Цілий Цілий
Бінарні
and Порозрядне І Цілий Цілий
or Порозрядне АБО Цілий Цілий
xor Порозрядне, що виключає АБО Цілий Цілий
shl Порозрядний зсув вліво Цілий Цілий
shr Порозрядний зсув вправо Цілий Цілий

Приклади:

  Десяткове значення Двійкове значення
Операнд А
Операнд В
not A
A and B
A or B
A xor B
A shl B
A shr B

Рядкові операції

Для позначення операції конкатенації (зчеплення) двох рядків або символів в Turbo Pascal використовується такий самий символ, як і для операції додавання (+). Результатом цієї операції буде рядок, що складається з символів обох операндів, в якій символи другого операнда приєднуються в кінець символів першого операнда. Якщо довжина результуючого рядка перевищує 255 символів, то вона урізається до 255 символів.

 

Операція Дія Тип операндів Тип результату
+ Конкатенації Рядковий, символьний Рядковий

Операції над множинами

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

Результатом операції об’єднання двох множин А + В буде множина С, що включає як всі елементи множини А, так і всі елементи множини В.

Результатом операції різниці двох множин А – В буде множина С, що складається тільки з тих елементів множини А, які не входять у множину В.

Результатом операції перетину двох множин А * В буде множина С, що складається тільки з тих елементів, які належать як множині А, так і множині В.

Зауваження Якщо найменше порядкове значення, що є результатом операції над множинами це X, а найбільше Y, то типом результату буде set of X..Y.

Результатом операції порівняння А = В буде True, а операції А <> В буде False, тільки тоді, коли А и В містять ті самі елементи.

Результатом операції порівняння А <= В буде True, якщо множина А є підмножиною множини В.

Результатом операції порівняння А >= В буде True, якщо множина А містить у собі всі елементи множини В,

Результатом операції належності X in А буде True, якщо значення X якого-небудь порядкового типу Т є елементом множини А того ж типу Т.