2. Алгоритми з повторенням і розгалуженням
2.5. Оператор вибору
Оператор вибору (варіанту) можна розглядати, як узагальнення умовного оператора. Він дає змогу зробити вибір з кількох варіантів залежно від значення змінної.
Виконання оператора вибору починається з обчислення виразу, який повинен мати значення порядкового типу.
Формат запису оператора варіанту такий:
Case <порядкова змінна або вираз> of
<константа 1>:<оператор 1>;
<константа 2>:<оператор 2>;
…
<константа
[Else <оператор>; ]
End;
Або
Вибір <порядкова змінна або вираз> із
<константа 1>:<оператор 1>;
<константа 2>:<оператор 2>;
<константа n>:<оперaтор n>;
[інакше <оператор>; ]
Кінець;
У випадку, коли результат обчислення дорівнює одній з перелічених констант, виконується відповідний оператор. Потім керування передається за межі оператора вибору.
Якщо значення виразу не збігається з жодною із констант, то виконується оператор, що стоїть після Else, якщо він є, або керування передається оператору, що слідує за End.
Примітки
1. Тип кожної
2. Гілка Else міститься у квадратних дужках. Це означає, що ця частина оператора вибору не обов’язкова.
3. У конструкції вибору (на відміну від умовного оператора) перед Else ставиться крапка з комою.
4. У якості операторів можуть використовуватися і складені оператори.
Приклад
Нехай при тестуванні учень отримав N балів з 20 можливих. Потрібно вивести суму балів з коротким коментарем.
Розв’язування Program оцінка;
Var N :integer;
Begin
Write (‘Введіть N-‘);
ReadLn(N);
Case N of
20: WriteLn(‘Краще не буває!’);
19,18,17 : WriteLn(‘Відмінно!’);
16,15,14,13 : WriteLn(‘Добре.’);
12,11,10,9 : WriteLn(‘Задовільно.’); 8,7:WriteLn(‘Ще трохи, і було б добре.’);
Else
WriteLn(‘Потрібно попрацювати!’)
End;
WriteLn(‘Сума балів – ‘,N:2,’ з 20 можливих’);
End.
Питання для самоконтролю:
1. У яких випадках використовується оператор вибору?
2. Який загальний формат запису оператора вибору?
3. Яких правил потрібно дотримуватися, використовуючи оператор вибору при розв’язуванні задач?