Смекни!
smekni.com

Програмування в середовищі Pascal (стр. 6 из 16)

"=" (дорівнює);

"<>" (не дорівнює);

"<" (менше);

">" (більше);

"<=" (менше або дорівнює);

">=" (більше або дорівнює).

У порівнянні можуть брати участь і вирази.

У логічному виразі використовуються наступні логічні операції: 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)

3.6 Структура програми

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

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

3.7 Процедури і функції

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

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

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

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

Таким чином, за ім'ям підпрограми ховаються деякі винесені з програми дії, які ініціюються автоматично з появою в програмі звернення до цієї підпрограми.

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

Структура підпрограми аналогічна структурі всієї програми, тобто в ній є заголовок, розділи описів і тіло підпрограми (розділ операторів).

Підпрограма має бути описана до того, як вона буде використана в програмі або іншій підпрограмі.

Усі змінні, що використовуються в підпрограмі, можна розділити на три категорії:

локальні змінні – описуються і використовуються тільки усередині підпрограми;

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

Є два різновиди підпрограм – процедури і функції.

3.7.1 Процедури

У найпростішому випадку процедура може бути лише пойменованою групою операторів. Наприклад:

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);