| До сих пор, изучая ветвление в алгоритмах, мы в основном рассматривали случаи ветвления на два рукава. Сегодня наша задача – познакомиться со способами организации в программах ветвления на три и более рукавов. Один из способов реализации ветвления на несколько рукавов – проверка условий до тех пор, пока одно из них не окажется истинным, выполнение предусмотренных этим условием действий и выход из ветвления. Структура оператора выбора такова: case of :; :; :; ……………………………………………………………………; else ; end; Оператор выбора работает следующим образом. В зависимости от того, какое значение принимает переменная, выполняется тот или иной блок действий. В случае если переменная не принимает ни одно из перечисленных значений, “работает” ветвь “ELSE” Но эта ветвь может и отсутствовать, в этом случае просто ничего не выполняется. У множественного ветвления есть ограничения; в роли переменной может выступать только переменная порядкового типа. Но есть и положительные стороны — в качестве значений можно указывать целый диапазон. Давайте рассмотрим на примере преимущества оператора case на примере следующей программы. Задача 1. Приведите введенное пользователем число от 0 до 9 к его словесному представлению. Сначала рассмотрим данную задачу с использованием оператора if: program chislo; var n : shortint; {-128..127} begin write('Введи число: '); readln(n); if n=0 then write('Нуль') else if n=1 then write('Один') else if n=2 then write('Два') else if n=3 then write('Три') else if n=4 then write('Четыре') else if n=5 then write('Пять') else if n=6 then write('Шесть') else if n=7 then write('Семь') else if n=8 then write('Восемь') else if n=9 then write('Девять') else write('Это не цифра'); end; Теперь с помощью оператора case: program chislo; var n : shortint; begin write('Введи число: '); readln(n); case n of 0: write('Нуль'); 1: write('Один'); 2: write('Два'); 3: write('Три'); 4: write('Четыре'); 5: write('Пять'); 6: write('Шесть'); 7: write('Семь'); 8: write('Восемь'); 9: write('Девять'); else write('Это не цифра'); end; end; Сделаем выводы. Как видно из приведённых примеров, использование оператора case очень эффективно. Он упрощает решение разветвляющихся задач, сокращает затраты на написание кода, и упрощает понимание его. Давайте разберем еще один пример. Задача 2. Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. Предусмотреть ошибку ввода. program nomermesaca; var x:byte; begin writeln(‘ введите номер месяца ‘); readln(x); Case x of 1,2,12:writeln (‘зима’); 3,4,5:writeln (‘весна’); 6,7,8:writeln (‘лето’); 9,10,11:writeln (‘осень’) else writeln (‘ошибка’); end; end. Я думаю до readln(x); всё понятно. Теперь разбираем непосредственно часть программы с оператором-”case”. Допустим, мы ввели число 5. Так вот программа берет нашу переменную x, которая в нашем случае равняется пяти, и ищет нашу пятёрку среди тех данных, которые мы ввели между “Case x of… и … Else writeln (‘ошибка’);”. Пройдя первую строку программа нужной пятёрки не нашла и, перейдя на вторую, нужная пятёрка была найдена и в соответствии с командой, которую мы задали в этом случае программа выводит на экран слово «Весна». Если бы мы ввели число большее, чем 12,то программа бы выдала нам следующее: «Ошибка» |