Условный переход
Оператор выбора
Для организации меню, т. е. выбора из нескольких возможностей, применяется оператор выбора, который позволяет, в зависимости от значения переменной, делать те или иные действия.
Конструкция оператора несколько тяжеловесна, но ничего страшного в ней нет.
Она выполняет один из нескольких блоков операторов в зависимости от значения выражения.
SELECT CASE тест_выражение CASE список_выражений1 [блок_ операторов_1] [CASE список_выражений2 [блок операторов_2]} [CASE ELSE [блок_операторов_n]} END SELECT
Здесь тест_выражение – любое числовое или строковое выражение; список_выражений1, список_выражений2 – ОДНО ИЛИ несколько выражений для сравнения с параметром тест_выражение.
В выражении ключевое слово is должно стоять перед любым знаком отношения. блок_операторов_1, блок_операторов_2, блок_ операторов_n – один или несколько операторов в одной или нескольких строках.
Аргументы списка выражений могут принимать любую из следующих форм или их комбинацию и должны разделяться запятыми:
- выражение [, выражение]…
- выражение ТО выражение
- IS оператор_отношения выражение
Здесь выражение – любое числовое или строковое выражение, совместимое с параметром тест_выражение\ знак_отношения – один из знаков отношения <, <=, >, >=, <> или =.
Рассмотрим пример:
CLS INPUT "Введите уровень риска (1-5): "; RISK SELECT CASE RISK CASE IS >= 5 PRINT "Максимальный риск, шансов на возвращение практически нет." PRINT "Пишите завещание." CASE 2 ТО 4 PRINT "Высокий риск, шансов на возвращение немного." PRINT "Проверьте снаряжение, оружие и припасы." CASE 1 PRINT "Риск отсутствует, возврат гарантирован." PRINT "В Вас отсутствует дух авантюризма, это слишком скучно." END SELECT
Еще пример. По заданному номеру дня недели требуется напечатать его название:
CLS INPUT "Введите номер дня недели"; N SELECT CASE N CASE 1 ? "Понедельник" CASE 2 ? "Вторник" END SELECT
Ну что ж, теория без практики суха. Задания.
134. Напишите программу, которая выводит на экран меню, содержащее список трех поэтов под номерами, затем запрашивает у пользователя номер поэта и выводит на экран какое-нибудь его четверостишие, после чего возвращается в меню. Последним пунктом меню предусмотреть выход из программы.
135. В восточных календарях принят 60-летний цикл, состоящий, в свою очередь, из пяти 12-летних подциклов. Под-циклы обозначались цветом: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крысы, быка, тигра, кролика (зайца или кота), дракона, змеи, лошади, овцы (барана или козы), обезьяны, петуха, собаки и свиньи. Создайте программу с использованием операторов выбора, запрашивающую номер года нашей эры и печатающую его название по восточному календарю. Для проверки: 1966 г. – год красной лошади, 1984 г. – зеленой крысы.
136. Усложненный вариант предыдущего задания. Теперь требуется определить не только название введенного с клавиатуры года, но и год наступления "светлого будущего", до которого вы, безусловно, доживете! Делаем это поэтапно. Вот примерный словесный алгоритм. После введения исходного четырехзначного года с клавиатуры вам необходимо выделить составляющие его цифры и записать их в переменные А1, А2, аз и А4. (Если в номере года есть нули, то в соответствующие переменные записать 4.) Затем необходимо взять от них синусы по модулю.
Из полученных значений выделить по две цифры после запятой и сложить их. Если сумма больше либо равна 10, то сложить еще раз. Должно получиться 4 цифры, из которых надо составить четырехзначное число. Это и будет номер года наступления светлого будущего. Осталось определить его название по восточному календарю и вывести результаты на экран. Для проверки: при исходном годе 1986 годом светлого будущего будет 3589.