Складені умови



Розгалуження й умовні вирази
Під час розв'язання задачі часто необхідно, залежно від ситуації, обрати один з двох чи більше можливих варіантів. Розв'язок у даному разі являє собою ніби «процес, що розгалужується», або, інакше кажучи, розгалуження. Вибір того чи іншого розв'язування (сценарію) здійснюється залежно від виконання певної умови.
Алгоритм, у якому та чи інша серія команд реалізується залежно від виконання умови, називається алгоритмом розгалуження.
При створенні алгоритмів розгалуження розрізняють прості розгалуження (два можливих сценарії) і множинні розгалуження (більше двох сценаріїв).
Важливе значення в операторах розгалуження мають умови, що містяться в них. У найпростішому випадку умовами є відношення між величинами. Умови з одним відношенням називають простими умовними виразами (або простими умовами).
У деяких задачах необхідні складніші умови, що складаються з кількох про­стих, наприклад, а<b<с чи (х<=а and x>=b). Об'єднання кількох простих умов в одну утворює складений умовний вираз (чи складену умову). Складені умови записуються за допомогою логічних операторів not (заперечення), and (логічне І), or (логічне АБО), хоr (виключне АБО).

Прості розгалуження
В алгоритмічній нотації умовний оператор простого розгалуження записується як
якщо   <умова   Q>
то   <серія   1>
інакше   <серія   2>
все
Ключові слова якщо і то обмежують умову розгалуження Q, слова то й інакше обмежують серію 1, а слова інакше й все - серію 2. Спочатку обчислюється умовний вираз Q. Якщо результатом буде True, то виконується серія 1, а серія 2 пропускається. Якщо ж результатом є False, навпаки, серія 1 пропускається, а виконується серія 2.
Прикладом простого розгалуження є алгоритм знаходження модуля числа, який можна записати на навчальній алгоритмічній мові:
алг   Модуль   числа
      арг   X
      рез Y
поч
    чит   X
    якщо   Х>=0  то   Y:=X
    інакше   Y: =-Х
    все
    зап Y
кін
Зверніть увагу: слова арг,   рез,   чит,   якщо,   то,   все,   зап записані з відступом, що дозволяє краще уявити структуру алгоритму.

Неповний умовний оператор
Частина алгоритму розгалуження, що містить рядок інакше <серія 2>, у деяких випадках може бути випущена. Тоді отримуємо інструкцію, названу неповним умовним оператором. Якщо умовний вираз набуває значення True, то виконується серія 1, у протилежному випадку ця серія пропускається. Неповний умовний оператор записується так:
якщо   <умова   Q>   то   <серія>
все
Множинне розгалуження. Оператор вибору
Якщо в алгоритмі потрібно зробити вибір між трьома і більше варіантами виконуваних послідовностей (а не двома, як у простому розгалуженні), то прий­демо до множинного розгалуження. Множинне розгалуження - це узагальнення умовного оператора, розглянутого вище.
Інструкція множинного розгалуження називається також оператором вибору. Цей оператор найпростіше записати так:
вибір
за умови 1: <серія 1>
за умови 2: <сєрія 2>
……………………..
за умови m: <серія m>
інакше <серія>
все
Вкладені оператори
У деяких задачах зручно застосовувати вкладені умовні оператори типу
if ... then ... if ... then ... else ... else або if ... then ... else ... if ... then  ... else ...

Оператори вибору case
Умовний оператор if ... then забезпечує розгалуження тільки з двома ва­ріантами вибору. Для задання множинного розгалуження використовується потужніший оператор - оператор вибору. Цей оператор складається з виразу (селектора) і списку варіантів:
case  <вираз>  of
   <список  1>:   <оператор  1;>
   <список  2>:  <оператор  2;>
……………………………………………………..
   <список N>:   <оператор  N>
else
   <оператор>
end;
Схема роботи оператора case така: спочатку обчислюється значення селек­тора, що йде за словом case. Потім виконується оператор з константою вибору, яка дорівнює значенню селектора. Якщо жодна з констант не дорівнює поточ­ному значенню селектора, то виконується оператор, що стоїть після слова else.
Частину else <оператор> у тексті програми можна випустити. Тоді, якщо серед констант селектора потрібне значення відсутнє, виконання оператора case не дасть жодного результату.
Приклади селекторів
Наведемо простий приклад селектора, який містить списки констант вибору. Складемо програму, за допомогою якої можна було б увести номер місяця, а програма відповіла б, якій порі року відповідає цей місяць.

Program Season;
var N: integer;
Begin
Writeln (‘Введіть номер місяця’);
Readln (N);
   case N of
           1,2,12: writeln (‘Це зима’);
             3..5: writeln (‘Це весна’);
              6..8: writeln (‘Це літо’);
           9..11: writeln (‘Це осінь’);
   else writeln (‘Такого місяця’ не існує);
   end;
end.
Як константи вибору можуть використовуватися цілі числа (integer), символи (char), логічні значення (boolean), а також користувальний тип.

Комментариев нет:

Отправить комментарий