Оператор варіанту
При написанні програми не рекомендується використовувати багаторазово вкладені один в один умовні оператори – програма стає громіздкою і її важко читати. Вважається, що число рівнів вкладення не повинно перевищувати двох-трьох. Однак на практиці часто зустрічаються задачі, в яких необхідно перевіряти досить багато умов і, в залежності від результату перевірки, виконувати ті чи інші дії. Для реалізації цих цілей і використовують оператор варіанту.
Оператор варіанту є узагальненням умовного оператора і дає можливість виконати одну з декількох дій в залежності від значення деякого виразу.
Оператор варіанту має наступну структуру:
- case селектор варіанту of
- мітка_варіанту_1 : оператор_1;
- …
- мітка_варіанту_n : оператор_n;
- else
- оператор_q;
- end;
Селектор варіанту – змінна або вираз будь-якого скалярного типу, крім real.
Мітка варіанту – константа, тип якої збігається з типом селектора варіанта (усі мітки варіанту мають бути різні!).
Якщо одному оператору в операторі варіанту відповідають кілька міток, то вони перераховуються через кому.
Якщо мітки деякого оператора належать якому-небудь діапазону, причому без пропусків, то їх можна вказати так, як це зроблено в наведеному нижче прикладі.
Приклад:
- case Ch of
- 'A' .. 'Z', 'a' .. 'z' : WriteLn('буква');
- '0' .. '9' : WriteLn('цифра');
- '+', '-', '*', '/' : WriteLn('знак математической операции');
- else
- WriteLn('специальный символ');
- end;
Оператор варіанту виконується наступним чином. На початку, обчислюється значення селектора варіанта, а потім вибирається для виконання той оператор, перед яким стоїть позначка, що має дане значення. Після – виконується наступний за ключовим словом end оператор.
Якщо відповідної мітки немає, то виконується оператор після ключового слова else. Потім відбувається перехід до першого оператора, що стоїть після оператора варіанту.
Присутність в операторі варіанту елемента else – не обов’язкова.
Якщо відповідної мітки немає, а конструкція else опущена, то відбувається перехід до першого оператора, що стоїть після оператора варіанту.
Завдання: Скласти програму WeekDay. Програма в залежності від зазначеного номера дня тижня виводить його назву.
- Program WeekDay;
- var
- d: integer;
- begin
- Writeln('Введіть номер дня тижня');
- Read(d);
- case d of
- 1: WriteLn('Понеділок');
- 2: WriteLn('Вівторок');
- 3: WriteLn('Середа');
- 4: WriteLn('Четвер');
- 5: WriteLn('П’ятниця');
- 6: WriteLn('Субота');
- 7: WriteLn('Неділя');
-
else
- WriteLn('Такого дня не існує');
- end;
- end.