Ці функції обчислюють синус, косинус і арктангенс кута, заданого в радіанах, логарифм натуральний, експоненту та корінь квадратний відповідно.
Результат виконання функції перевірки цілої величини на непарність Odd(X) має значення істини, якщо аргумент непарний, і значення неправда, якщо аргумент парний:
X=5 Odd(X)=TRUE, X=4 Odd(X)=FALSE.
Для швидкої роботи з цілими числами визначені процедури:
Inc(X) X:=X+1
Inc(X,N) X:=X+N
Dec(X) X:=X-1
Dec(X,N) X:=X-N
Дійсні типи визначають ті дані, що реалізуються підмножиною дійсних чисел, припустимих у даної ЕОМ (таблиця 2.2).
Таблиця 2.2 – Типи дійсних даних
Тип | Діапазон значень | Кількість цифр мантиси | Необхідна пам'ять (байт) |
Real | 2.9e-39.. 1.7e+38 | ||
Single | 1.5e-45.. 3.4e+38 | ||
Double | 5.0e-324.. 1.7e+308 | ||
Extended | 3.4e-4932.. 1.1e+4932 | ||
Comp | -9.2e+18.. 9.2e+18 |
Тип дійсний у стандартному ПАСКАЛІ визначений і математичним співпроцесором не підтримується.
Інші дійсні типи визначені стандартом IEEE 457 і реалізовані на всіх сучасних комп'ютерах.
Для їхнього використання при наявності співпроцесора чи при роботі на ЕОМ типу 80486 необхідно компілювати програму з ключем {$ N+}, а при відсутності співпроцесора - із ключами {$N-,E+}.
Тип Comp хоча і відноситься до дійсних типів, але зберігає тільки довгі цілі значення.
Над дійсними операндами можна виконувати наступні арифметичні операції, що дають дійсний результат:
додавання +, різниця -, множення *, ділення /.
До величин дійсного типу застосовують всі операції відношень, що дають булевський результат.
Один з операндів, що бере участь у цих операціях, може бути цілим.
До дійсних аргументів застосовні функції, що дають дійсний результат:
Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X), Frac(X), Int(X), Pi.
Функція Frac(X) повертає дробову частину X, функція Int(X) - цілу частину X.
Безаргументна функція Pi повертає значення числа Пі дійсного типу.
До аргументів дійсного типу застосовують також функції Trunc(X) і Round(X), що дають цілий результат. Перша з них виділяє цілу частину дійсного аргументу шляхом відсікання дробової частини, друга округляє аргумент до найближчого цілого.
Логічний тип (Boolean) визначає ті дані, що можуть приймати логічні значення TRUE і FALSE.
До булевських операндів застосовують наступні логічні операції:
Not and or xor.
Логічний тип визначений таким чином, що FALSE < TRUE. Це дозволяє застосовувати до булевских операндів всі операції відношень.
У ТУРБО ПАСКАЛІ введені ще деякі різновиди логічного типу: ByteBool, WordBool і LongBool, що займають у пам'яті ЕОМ один, два і чотири байти відповідно.
Символьний тип (Char) визначає упорядковану сукупність символів, припустимих у даної ЕОМ. Значення символьної змінної чи константи - це один символ із припустимого набору.
Символьна константа може записуватися в тексті програми трьома способами:
· як один символ, укладений в апострофи, наприклад: 'А' 'а' 'Ю' 'ю';
· за допомогою конструкції виду #K, де K - код відповідного символу, при цьому значення K повинне знаходитися в межах 0..255;
· за допомогою конструкції виду ^C, де C - код відповідного керуючого символу, при цьому значення C повинне бути на 64 більше коду керуючого символу.
До величин символьного типу застосовують всі операції відношень.
Для величин символьного типу визначені дві функції перетворення
Ord(C) Chr(K).
Перша функція визначає порядковий номер символу С в наборі символів, друга визначає по порядковому номері К символ, що стоїть на К - ому місці в наборі символів. Порядковий номер має цілий тип.
До аргументів символьного типу застосовуються функції, що визначають попередній і наступний символи:
Pred(C) Succ(C). Pred('F') = 'E'; Succ('Y') = 'Z'.
При відсутності попереднього чи наступного символів значення відповідних функцій не визначено.
Для літер з інтервалу 'а'..'z' застосовна функція UpCase(C), що переводить ці літери у верхній регістр 'A'..'Z'.
Адресний тип (Pointer) визначає змінні, котрі можуть містити значення адресу чи даних фрагментів програми. Для збереження адреси потрібні два слова (4 байти), одне з них визначає сегмент, друге - зсув.
Робота з адресними змінними (покажчиками) буде розглянута пізніше, зараз відзначимо, що для одержання значення адреси якої-небудь змінної введена унарна операція @.
Тип констант у мові ПАСКАЛЬ визначається по їхньому виду: константи цілого типу - це цілі числа, що не містять десяткової крапки, константи дійсного типу - дійсні числа, логічні константи - логічні значення TRUE і FALSE, символьні константи - або рядка довжиною в один символ, або конструкції виду #K чи ^K.
Мова ПАСКАЛЬ допускає використовування синонімів для позначення констант, у цьому випадку текст програми містить розділ опису констант, наприклад: {}
2.2.5 Змінні. Ініціалізація змінних
Тип змінних визначається користувачем у розділі опису змінних.
В даний час у професійному програмуванні прийнято записувати імена змінних з використанням так званої угорської нотації.
Угорська нотація - це угода про найменування змінних і функцій. Угода широко використовується при програмуванні на мовах PASCAL, C і в середовищі WINDOWS.
Угорська нотація ґрунтується на наступних принципах:
· імена змінних і функцій повинні містити префікс, що описує їхній тип;
· імена змінних і функцій записуються повними словами чи словосполученнями, їхніми скороченнями, але так, щоб по імені можна було зрозуміти призначення змінної чи дії, яку виконує функція.
Префікси записуються малими буквами, перша буква кожного слова - заголовна, префікси і слова записуються або разом, або через символ _ (підкреслення).
Для мови PASCAL можуть бути рекомендовані наступні префікси для скалярних змінних і функцій:
Префікс Тип
---------------------
By Byte
Sh Shortint
I Integer
W Word
L Longint
R Real
Si Single
D Double
E Extended
C Comp
Ch Char
B Boolean
P Pointer
x,у координати символу чи крапки на екрані.
Для величин структурованого типу можуть бути використані наступні префікси:
A Array
S String
Sz Stringz
Se Set
Re Record
F File
T Text
Наприклад:
r, arVector[1..20], sName, iCount.
У відкомпільованій програмі для всіх змінних відведене місце в пам'яті, і всім змінним привласнені нульові значення.
Для завдання початкових значень змінним (ініціалізації змінних) TURBO PASCAL дозволяє привласнювати початкові значення змінним одночасно з їх описом. Для цього використовується конструкція
ім'я змінної: тип = значення;
яка повинна бути розміщена в розділі опису констант, наприклад:
const rWeight: real = 0.4;
Вирази
Вирази складаються з констант, змінних, показників функцій, знаків операцій і дужок. Вираз задає правило обчислення деякого значення. Порядок обчислення визначається старшинством (пріоритетом) операцій, що містяться в ньому. У мові ПАСКАЛЬ прийнятий наступний пріоритет операцій:
1. унарна операція not, унарний мінус -, взяття адреси @
2. операції типу множення * / div mod and shl shr
3. операції типу додавання + - or xor
4. операції відношень = <> < > <= >= in
Вирази входять до складу багатьох операторів мови ПАСКАЛЬ, а також можуть бути аргументами вбудованих функцій.
Структура програми
Програма мовою ПАСКАЛЬ складається з:
· заголовка,
· розділів описів,
· розділів операторів.
Заголовок програми містить ім'я програми, наприклад:
Program PRIM;
Опису можуть містити в собі:
· розділів бібліотек, що підключаються, (модулів),
· розділів опису міток,
· розділів опису констант,
· розділів опису типів,
· розділів опису змінних,
· розділів опису процедур і функцій.
Розділ опису модулів визначається службовим словом USES і містить імена модулів, що підключаються, (бібліотек) як вхідних до складу системи TURBO PASCAL, так і написаних користувачем. Розділ опису модулів повинен бути першим серед розділів описів. Імена модулів відокремлюються один від одного комами:
Uses CRT, Graph;
Будь-який оператор у програмі може бути позначений міткою. У якості мітки використовуються довільні цілі без знака, що містять не більш чотирьох цифр, або імена. Мітка ставиться перед оператором і відокремлюється від нього двокрапкою. Усі мітки, використані в програмі, повинні бути перераховані в розділі опису міток, наприклад:
Label 3, 471, 29, Quit;
Опис констант дозволяє використати імена як синоніми констант, які необхідно визначити в розділі описів констант:
const K= 1024; MAX= 16384;
У розділі опису змінних необхідно визначити тип усіх змінних, використаних у програмі:
var P,Q,R: Integer;
A,B: Char;
F1,F2: Boolean;
Опис типів, процедур і функцій буде розглянуто нижче. Окремі розділи описів можуть бути відсутніми, але варто пам'ятати, що в ПАСКАЛЬ - програмі повинні бути обов'язково описані усі компоненти програми.
Розділ операторів являє собою складений оператор, що містить між службовими словами
begin.......end
послідовність операторів. Оператори відокремлюються один від одного символом (;).
Текст програми закінчується символом крапка.
Крім описів і операторів ПАСКАЛЬ - програма може містити коментарі, що являють собою довільну послідовність символів, розташовану між відкриваючою дужкою коментарів { і закриваючою дужкою коментарів }.
Текст ПАСКАЛЬ - програми може містити ключі компіляції, що дозволяють керувати режимом компіляції. Синтаксично ключі компіляції записуються як коментарі. Ключ компіляції містить символ $ і буква-ключ з наступним знаком + (включити режим) чи - (виключити режим). Наприклад:
{$E+} - эмулювати математичний співпроцесор;
{$F+} - формувати далекий тип виклику процедур і функцій;
{$N+} - використовувати математичний співпроцесор;
{$R+} - перевіряти вихід за границі діапазонів.
Деякі ключі компіляції можуть містити параметр, наприклад:
{$I ім'я файлу} - включити в текст програми, що компілюється названий файл.
Приклад запису простої програми:
Program TRIANG;
var A, B, C, S, P: Real;
Begin
Read(A,B,C);
WriteLn(A,B,C);
P:=(A+B+C)/2;
S:=Sqrt(P*(P-A)*(P-B)*(P-C));
WriteLn('S=',S:8:3)
End.
Для наочності тексту програми настійно рекомендуємо користатися символами пробілу для організації горизонтального форматування, вибудовуючи на одну вертикаль оператори, що належать одному блоку.
2.4 Основні оператори
Оператор присвоювання
Тип змінної і тип виразу повинні збігатися крім випадку, коли вираз відноситься до цілого типу, а змінна - до дійсного. При цьому відбувається перетворення значення виразу до дійсного типу.
У мовних конструкціях присвоювання позначається комбінацією символів ":=". Ліворуч від знака присвоювання вказується ім'я змінної яка повинна прийняти значення правої частини. Права частина оператора присвоювання може містити:
· Число;
· Константу;
· Ім'я змінної;
· Процедури, що обчислюються, і функції;
· Вирази.
У виразах можуть бути використані числа, змінні, константи, функції і процедури. Слід зазначити, що по обидві сторони від знака присвоювання може знаходитися та сама змінна. Наприклад,
A:=23;
X1:=A; X2:=Y;
Y:=SIN(f);
SIGMA:=A+SQRT(X-1);
I:=I+1;
2.4.2 Оператори введення і виведення
Розглянемо організацію введення і виведення даних з термінального пристрою. Термінальний пристрій - це пристрій, з яким працює користувач, звичайно це екран (дисплей) і клавіатура.
Для введення і виведення даних використовуються стандартні процедури введення і виведення Read і Write, що оперують стандартними послідовними файлами INPUT і OUTPUT.
Ці файли розбиваються на рядки змінної довжини, відокремлені один від одного ознакою кінця рядка. Кінець рядка задається натисненням клавіші ENTER.
Для введення вихідних даних використовуються оператори процедур введення:
Read(A1,A2,...AK);
ReadLn(A1,A2,...AK);
ReadLn;
Перший з них реалізує читання К значень вихідних даних і присвоювання цих значень змінним А1, А2,..., АК. Другий оператор реалізує читання К значень вихідний даних, пропуск інших значень до початку наступного рядка, присвоювання лічених значень змінним А1, А2,..., АК. Третій оператор реалізує пропуск рядка вихідних даних.
При введенні вихідних даних відбувається перетворення з зовнішньої форми представлення у внутрішню, обумовлену типом змінних. Змінні, створюючи список уведення, можуть належати або до цілого, або до дійсного, або до символьного типу. Читання вихідних даних логічного типу в мові ПАСКАЛЬ неприпустимо.
Оператори введення при читанні значень змінних цілого і дійсного типу пропускають пробіли, що передують числу. У той же час ці оператори не пропускають пробілів, що передують значенням символьних змінних, тому що пробіли є рівноправними символами рядків. Приклад запису операторів введення:
var rV, rS: Real;
iW, iJ: Integer;
chC, chD: Char;
……………………………………….....................