"=" (дорівнює);
"<>" (не дорівнює);
"<" (менше);
">" (більше);
"<=" (менше або дорівнює);
">=" (більше або дорівнює).
У порівнянні можуть брати участь і вирази.
У логічному виразі використовуються наступні логічні операції: NOT (заперечення), AND (логічне і), OR (логічне або).
Обчислення логічного виразу здійснюється зліва направо з дотриманням наступного старшинства:
а) відношення (його слід укласти в круглі дужки);
б) заперечення (NOT);
в) логічне і (AND);
г) логічне або (OR).
Результат має логічний тип (BOOLEAN).
Приклад:
А:=3.5; B:=4.1;
С:=2; D:=’Дорога’;
L:=(A+B>C) and (D<>’Мост’);
У результаті змінна L отримає значення TRUE (Істина).
Слід зауважити, що відношення – це бінарна операція. Використовується для порівняння саме двох величин. Тому в Pascal немає подвійних порівнянь, як це має місце в математиці. Такі подвійні порівняння слід розбити на два відношення. Наприклад, математичній вираз: a ≤ x ≤ b в Pascal необхідно записати так: (a<=x) and (x<=b)
Програма на мові Pascal складається з двох частин: описів (об’явлень) та інструкцій (операторів). За допомогою об’явлень програміст сповіщає компілятор, які дані будуть використані в програмі. Після об’явлень ідуть оператори. Вони потрібні для опису операцій, які виконуються над даними.
Структурно програма на мові Pascal складається із заголовка, блоку і закінчується крапкою. Блок, у свою чергу, містить розділи описів і розділ операторів:
PROGRAM <ім'я>;
USES <ім'я>,...,<ім'я>;
LABEL <Мітка>,...,<Мітка>;
CONST <ім'я константи> = <константа>;
M<ім'я константи> = <константа>; TYPE <ім'я типу> = <тип>;
M<ім'я типу> = <тип>;
VAR <ім'я змінної>,...,<ім'я змінної>:<тип>;
M<ім'я змінної>,...,<ім'я змінної>:<тип>;
PROCEDURE <заголовок процедури>;
<блок>;
FUNCTION <заголовок функції>;
<блок>; BEGIN
<оператор>;
M<оператор> END.
Обов'язковим є тільки розділ операторів. Уся решта елементів програми може бути відсутньою.
Порядок розміщення розділів описів – довільний, єдине правило, яке необхідно витримати, – можна використовувати лише ті ідентифікатори, які перед цим були визначені. Можна визначати декілька однойменних розділів описів.
PROGRAM – заголовок програми. Носить чисто декоративний
характер і компілятором ігнорується.
USES – визначає перелік зовнішніх модулів, що використовуються програмою (див. п.3.8).
LABEL – розділ опису міток. Мітка – ціле число без знака, що містить не більше чотирьох цифр або звичайний ідентифікатор. Використовується у розділі операторів для тог, щоб помітити оператор, на який здійснюється перехід. Мітка від оператора, що позначається, відділяється двокрапкою. Усі мітки, що використовуються в програмі, мають бути визначені в розділі опису міток.
CONST – розділ опису констант (див. п.3.3.2).
TYPE – розділ опису типів. Служить для визначення простих і структурованих типів даних, що задаються користувачем.
VAR – розділ опису змінних (див. п.3.3.3).
PROCEDURE, FUNCTION – розділи опису процедур і функцій. Ці розділи присутні в програмі, якщо крім стандартних процедур і функцій в програмі визначаються свої, що є самостійними програмними одиницями, до яких здійснюється звертання з основної програми (див. п.3.7).
РОЗДІЛ ОПЕРАТОРІВ – (тіло програми) є послідовністю виконуваних операторів, відокремлюваних один від одного крапкою з комою і обмежених операторними дужками BEGIN і END. Оператори описують деякі алгоритмічні дії, які необхідно виконати для вирішення задачі. В одному рядку можна записувати декількох операторів. І навпаки, один оператор може розміщуватися в декількох рядках.
У тих випадках, коли відповідно до правил побудови конструкцій мови допустиме використовування тільки одного оператора, а потрібно виконати декількох операторів, застосовується складовий оператор. Складовий оператор – це сукупність послідовно виконуваних операторів, укладених в операторні дужки BEGIN і END. Усередині операторних дужок оператори також відокремлюються один від одного крапкою з комою. BEGIN – це не оператор. Тому після нього крапка з комою не ставиться. Перед END крапка з комою допускається, але її наявність необов'язкова. Надалі скрізь, де буде сказано, що можна використовувати один оператор, цим оператором може бути складовий оператор.
У будь-яке місце програми можна вставляти коментарі. Це взята у фігурні дужки будь-яка послідовність символів, що не містить закриваючої фігурної дужки. Компілятор коментарі пропускає, не обробляючи. У процесі налагодження програми будь-яку її частину можна виключати тимчасово з розгляду, уклавши у фігурні дужки, тобто перетворивши на коментар.
У програмах часто можна виділити деякі фрагменти, що повторюються. Такі повторення подовжують програму, утрудняють роботу з нею. У мові Pascal передбачена можливість об'єднання будь-якої послідовності
операторів (як фрагментів, що повторюються в різних місцях програми, так і просто логічно самостійних фрагментів) в окрему підпрограму, до якої можна багато разів звертатися (викликати) з будь-якого місця основної програми, звільняючи останню від винесених до підпрограми фрагментів.
Підпрограма – це спеціальним чином оформлений фрагмент програми. Особливістю підпрограм є їх значна незалежність від іншого тексту програми. Говорять, що властивості підпрограми реалізуються в її тілі. Це означає, що при змінах усередині підпрограми, як правило, немає необхідності що-небудь змінювати поза підпрограмою. Таким чином, підпрограми є засобом структурування програми, тобто розчленовування програми на деякі незалежні фрагменти (підпрограм).
Звернення до підпрограми здійснюється за її ім’ям. При цьому виконання основної програми буде тимчасово припинено, виконаються всі дії підпрограми, і виконання основної програми знову буде продовжено, починаючи з оператора, наступного за оператором виклику підпрограми.
Таким чином, за ім'ям підпрограми ховаються деякі винесені з програми дії, які ініціюються автоматично з появою в програмі звернення до цієї підпрограми.
Будь-яка підпрограма, у свою чергу, може звертатися до інших підпрограм. Рівень вкладення підпрограм практично не обмежений.
Структура підпрограми аналогічна структурі всієї програми, тобто в ній є заголовок, розділи описів і тіло підпрограми (розділ операторів).
Підпрограма має бути описана до того, як вона буде використана в програмі або іншій підпрограмі.
Усі змінні, що використовуються в підпрограмі, можна розділити на три категорії:
локальні змінні – описуються і використовуються тільки усередині підпрограми; глобальні змінні – описуються в основній програмі, а можуть використовуватися як в програмі, так і в її підпрограмах; формальні параметри – це зарезервовані в підпрограмі змінні, до яких при зверненні до програми будуть занесені із зовнішньої програми конкретні дані або їх адреси.Є два різновиди підпрограм – процедури і функції.
У найпростішому випадку процедура може бути лише пойменованою групою операторів. Наприклад:
PROCEDURE SW1; begin r:=x; x:=y; у:=r;
end;
Така процедура не має ні параметрів, ні локальних змінних. У ній всі змінні, що використовуються (в нашому прикладі це x, у і r), є глобальними, тобто вони мають бути описані в зовнішній (що викликає цю процедуру) програмі. У прикладі процедура здійснює обмін значеннями змінних х і у. Ясно, що ці змінні мають бути доступними зовнішній програмі, тобто оголошення їх глобальними виправдано. А ось змінна r – це робоча змінна, що використовується для тимчасового зберігання даного при виконанні обміну. Для зовнішньої програми вона не становить ніякого інтересу. Тому її можна локалізувати:
PROCEDURE SW2
var r:real;
begin r:=x; x:=y; у:=r;
end;
Тепер зовнішній програмі "невидима" змінна r.
Помітимо далі, що отримана процедура "жорстко" прив'язана до глобальних змінних x і у: до неї можна звернутися тільки для обміну значеннями змінних x і у. Її не можна застосувати для інших змінних (наприклад, А і B). Для того, щоб мати таку нагоду, дані в процедуру (і з процедури) потрібно передавати як параметри:
PROCEDURE SW3 (var x:real; var у:real); var r:real;
begin r:=x; x:=y; у:=r;
end;
Тепер цю процедуру можна використати, наприклад, для обміну значеннями змінних A та В (але вони мають бути описаними як real):
SW3(A,B);
При такому виклику процедури формальні параметри x та y будуть заміщені відповідними їм фактичними параметрами А та В і всі дії, закодовані в процедурі будуть виконуватись саме над змінними А та В.
Будь-яка процедура починається із заголовка. Він складається з ключового слова PROCEDURE, за яким йде ідентифікатор (ім'я) процедури, а далі, в круглих дужках, - список формальних параметрів (див. нижче). Потім можуть йти такі ж розділи, що і в основній програмі. На відміну від основної програми процедура завершується не крапкою, а крапкою з комою. Приклад. Процедура введення N цілих чисел Хай в зовнішній програмі визначений тип:
TYPE MASSIV=ARRAY [1..100] integer;
Процедура може мати вигляд:
PROCEDYRE INP4(VAR MAS:MASSIV; N:integer);
{заголовок процедури} var I:integer;
{локальна змінна - параметр циклу} begin
WRITELN ('Введіть',N:3,' цілих чисел'); for I:=1 to N do READ(MAS[I]);
end;
Для виклику процедури в основній програмі або іншій підпрограмі слід записати оператор, що складається з імені процедури, і укладеного в дужки списку фактичних параметрів, які повинні співпадати за кількістю, типом і смислом з формальними параметрами процедури. Наприклад INP4 (M,K);