Умовний оператор
Алгоритми, в яких пропонується виконання ті чи інші послідовності дій в залежності від деяких умов, називаються алгоритмами з розгалуженням.
Для реалізації таких алгоритмів в мовах програмування існують спеціальні засоби. В Pascal такими засобами є умовний оператор і оператор варіанту. Кожен умовний оператор передбачає виконання однієї з двох дій в залежності від істинності деякої умови.
Умовний оператор може використовуватися в повній або скороченій формі.
Схема умовного оператора.
- if (умова)
- then
- оператор_А
- else
- оператор_B;
- then
A та B – деякі оператори.
Скорочена схема умовного оператора.
- if (умова)
- then
- оператор_А;
- then
Ключові слова, які використовуються в умовному операторі, мають наступний сенс:
if – якщо, then – то, else – інакше.
Умовою в умовному операторі може бути будь-який вираз логічного типу, тобто вираз, який може приймати одне з двох значень: True, False.
Найпростішими логічними виразами є вирази відносин, в Pascal використовуються наступні позначення відносин:
- = – дорівнює;
- <> – не дорівнює
- > – більше;
- < – меньше;
- >= – більше або дорівнює;
- <= – меньше або дорівнює.
Приклад: скласти програму обчислення значення функції:
x2, при x = 0
- program First_Function;
- var
- x, y: real;
- begin
- wrile (' ввести значення x: ');
- read (x);
- if (x < 0)
- then
- y := x
- else
- y := Sqr(x);
- then
- writeln ('y = ', y);
Логічні операції.
Логічні вирази (умови) можуть складатися з декількох частин. При цьому різні їх частини, також є логічними виразами (простими або складеними), які з’єднуються один з одним за допомоги наступних логічних операцій:
- not – заперечення (не);
- and – кон’юнкція або логічне множення (і);
- or – диз’юнкція або логічне додавання (або).
Приклад:
- not(Odd(x));
- (a > 10) and (a < 20);
- (y = 2) or (y = 3);
При обчисленні значень логічних виразів дотримуються наступного порядку дій:
- Обчислюються значення логічних функцій;
- Обчислюються результати операцій порівняння;
- Обчислюються логічні операції в послідовності:
not ———–> and ———–> or
- not (не)
- not False = True
- not True = False
- and (і)
- True and True = True
- True and False = False
- False and True = False
- False and False = False
- or (або)
- True or True = True
- True or False = True
- False or True = True
- False or False = False
Составний оператор.
В умовному операторі після ключових слів then та else може стояти лише один оператор. Щоб обійти це обмеження, використовують составний оператор.
Составний оператор має наступну структуру:
- begin
- оператор_1;
- …
- оператор_n;
- end;
Ключові слова begin і end виконують роль операторних дужок. Тіло будь-якої програми є один складений оператор. Составний оператор можна поміщати в будь-якому місці програми, де за правилами мови Pascal можна використовувати тільки один оператор, а за умовою задачі потрібно кілька.
Умовний оператор, при використанні його в структурі складеного оператора, виглядає наступним чином:
- if (умова)
- then
- begin
- оператор_1;
- …
- оператор_n;
- end
- begin
- else
- begin
- оператор_n+1;
- …
- оператор_n+m;
- end;
- begin
- then
Вкладені умови.
В умовному операторі, в якості оператора_А і оператора_В в Pascal дозволяється використовувати будь-які оператори, в тому числі і умовні.
Таким чином, в Паскалі можливо вкладення умовних операторів по одній з наступних схем:
-
- if (умова_1)
- then
- if (умова_2)
- then
- оператор_1
- else
- оператор_2
- then
- if (умова_2)
- else
- оператор_3;
- then
- if (умова_1)
-
- if (умова_1)
- then
- оператор_1
- else
- if (умова_2)
- then
- оператор_2
- else
- оператор_3;
- then
- if (умова_2)
- then
- if (умова_1)
-
- if (умова_1)
- then
- if (умова_2)
- then
- оператор_1
- else
- оператор_2
- then
- if (умова_2)
- else
- if (умова_3)
- then
- оператор_3
- else
- оператор_4;
- then
- if (умова_3)
- then
- if (умова_1)
Приклад: скласти програму обчислення значення функції:
0, при 0 <= x < 1
x2, при x = 0
- program Next_Function;
- var
- x, y: real;
- begin
- wrile ('ввести значення x:');
- read (x);
- if (x < 0)
- then
- y := x
- else
- if (x < 1)
- then
- y := 0
- else
- y := 2 * x;
- then
- if (x < 1)
- then
- writeln ('y = ', y);
- end.