ОПЕРАТОР ВЫБОРА
Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if.. then, удобнее воспользоваться специальным оператором выбора.
Его формат : case of вариант : ;... вариант : ; end;
Или case of вариант : ;... вариант : ; else end;
Выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. Вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантов записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else ( если он есть ).
Пример case ch of 'A'..'Z', 'a'..'z' : WriteLn('Буква'); 0 '.. 9 ' : WriteLn('Цифра'); '+', '-', '*', '/' : WriteLn('Оператор'); else WriteLn(' Специальный символ ') end;
Задача 1 Составить программу, которая в зависимости от порядкового номера дня недели (1, 2,…,7) выводит на экран его название ( понедельник, вторник,…, воскресенье ).
program one; uses crt; label metka; var x: integer; Begin clrscr; metka: write('Vvedite nomer dnya nedeli (1-7) '); readln(x);
case x of 1 : writeln('Ponedelnik'); 2 : writeln('Vtornik'); 3 : writeln('Sreda'); 4 : writeln('Chetverg'); 5 : writeln('Pyatnica'); 6 : writeln('Subbota'); 7 : writeln('Voskresenie');
else goto metka; end; readln; End.
Задача 2 Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение об ошибке.
program two; uses crt; label metka; var x: integer; Begin clrscr; metka: write('Vvedite nomer msyaca (1- 12) '); readln(x);
case x of 1,2,12 : writeln('Zima'); 3..5 : writeln('Vesna'); 6..8 : writeln('Leto'); : writeln('Osen'); else goto metka; end; readln; End.
Домашнее задание Написать программу, которая после введенного с клавиатуры числа ( в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово « рубль » в правильной форме. Например, 12 рублей, 21 рубль.