Всі оператори мови Паскаль[5] можна поділити на прості та структурні (складні). До складних операторів відносяться: складений оператор, умовний, оператор вибору та оператори циклу. Вони являють собою конструкції, що включають в себе інші оператори.
Умовний оператор використовується для організації розгалужень у програмі. Він дозволяє вибирати одну з двох дій, причому вибір робиться під час виконання програми. У мові Паскаль умовний оператор має два види запису:
1. IF B THEN A;
2. IF B THEN A1 ELSE A2;
де B - логічний вираз;
A1, A2, A - прості або складені оператори.
Складений оператор представляє собою послідовність операторів, укладених в операторні дужки BEGIN - END.
Перший тип запису – це коротка форма умовного оператору. Такий оператор дозволяє організувати виконання оператора A при умові, що логічний вираз має значення true. Якщо логічний вираз має значення false, оператор A не виконується, а виконується наступний оператор, що слідує за умовним [5].
Другий вид запису оператора – це повна форма. Вона дозволяє виконати оператор A1 у разі, якщо логічний вираз має значення true, і оператора A2 - якщо логічний вираз має значення false.
Приклади запису операторів:
IF N DIV 2 * 2 = N THEN N1: = N ELSE N2: = N * N;
IF X <0.1 THEN V: = EXP (X);
Умовний оператор можна розширити за рахунок вкладеності нових умов в оператор. У цьому випадку розгалуження програми виконується не за двома, а за більшою кількістю напрямів. Це призводить до скорочення числа операторів, але одночасно знижує наочність програми. Нова умова реалізується за допомогою вкладеного умовного оператора. За прийнятою угодою в мові Паскаль ELSE завжди відноситься до найближчого йому IF. Наприклад:
IF B1 THEN A1
ELSE IF B2 THEN A2
ELSE A3.
Для багаторазового обчислення групи операторів при зміні одного або декількох параметрів одночасно, у мові Паскаль використовуються оператори циклу FOR, WHILE, REPEAT.
Оператор циклу з перевіркою на початку (цикл з передумовою) while має вигляд:
while B do S;
де B – логічний вираз;
S - простий або складений оператор.
Тіло циклу S буде виконуватись до тих пір, поки значення виразу B буде дорівнювати true. Як тільки B стане рівним false, управління передається оператору, наступному за оператором циклу, а оператор S всередині циклу не виконується. Якщо вираз B буде дорівнювати false при першому вході в цикл, то оператор S не виконається жодного разу. Очевидно, що значення змінних, які входять у вираз, повинні змінюватися всередині циклу, інакше цикл буде повторюватися нескінченно.
Приклад. Вивести всі парні числа від 2 до 10.
Program test;
var k: integer;
Begin
k: = 2;
while k <= 10 do
begin
write (k: 3);
k: = k +2;
end
end.
Параметром циклу в цій програмі є змінна k, яка послідовно приймає значення 2, 4, 6, 8, 10.
Оператор циклу з перевіркою в кінці (цикл з постумовою) repeatмає вигляд:
repeat S1; S2 ;...; Sn until B;
де S1, S2 ,..., Sn - оператори тіла циклу;
B - логічне вираження.
Вихід з циклу здійснюється, якщо вираз B приймає значення true. Якщо ж значення виразу B дорівнює false, то виконуються оператори S1, S2 ,..., Sn, а потім знову обчислюється вираз B. На відміну від оператора while, в операторі repeat перевірка умови виконується в кінці циклу, тому він забезпечує хоча б одне обчислення навіть при початковому значенні логічного виразу true.
Нижче наведена програма, що здійснює ті ж дії, що і в попередньому прикладі, але з використанням оператора repeat:
Program test1;
var k: integer;
begin
k: = 2;
repeat
write (k: 3);
k: = k +2
until k> 10
end.
У результаті будуть виведені парні числа від 2 до 10, що співпадає з результатом роботи попередньої програми test, де використовується оператор while.
Приклад. Обчислити значення заданої функції, при зміні аргументу в зазначеному діапазоні і з заданим кроком (таблиця 3.1). Організувати виведення значення аргументу і обчисленого значення функції у вигляді таблиці.
Таблиця 3.1 – Приклад завдання
Функція
|
Умова
| Початкові дані
|
Діапазон та крок зміни аргументу
|
|
|
|
|
Program k;
Const
a= -0.5;
b=2;
Var t, y :real;
Begin
t:=0;
Writeln(‘Таблиця функції’);
Writeln;
While t<=3.01 do
begin
If (t>=1) and (t<=2) then y:=a*sqr(t)*ln(t);
If t< 1 then y:= sqr(t);
If t > 2 then y:= a* sin(t);
Writeln(‘t = ’,t:4:2,’ y= ’,y:5:2);
t:=t+0.15;
end;
end.
У цій програмі послідовно виконуються умовні оператори, які мають коротку форму запису. Кількість операторів зменшиться , якщо використати вкладені умовні оператори циклів:
If (t> = 1) and (t <= 2) then y: = a * sqr (t) * ln (t)
else
if t <1 then y: = sqr (t)
else y:= a* sin(t);