Оператор выбора Позволяет программировать ветвления по
Оператор выбора Позволяет программировать ветвления по многим направлениям. Этот оператор организует переход на одну из нескольких ветвей в зависимости от значения заданного выражения ( селектора выбора).
Задача 1. «Старояпонский календарь» В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, быка, тигра, кролика, дракона, змеи, лошади, барана, обезьяны, петуха, собаки и кабана. Написать программу, которая по номеру года определяет его название в старояпонском календаре, если известно, что 1996 г. был годом крысы - началом очередного цикла.
Две формы представления алгоритма выбор (неполная) выбор – иначе (полная) Да Условие 1 Действие 1 Нет Да Действие 2 Да Условие 2 Действие 2 Нет . . . Да Действие N Условие N Да Действие N Нет Действие N+1
Оператор выбора в языке Паскаль CASE K OF Здесь K - выражение-селектор, A 1: Оператор1; которое может иметь только A 2: Oператор2; простой порядковый тип (целый, . . . символьный, логический) An: Оператор. N; END; CASE K OF A 1: Оператор1; А 1, …, А n - константы того A 2: Oператор2; же типа, что и селектор, . . . выполняющие роль меток An: Оператор. N; ветвей, которые могут быть ELSE заданы списком или Оператор N+1 интервалом END;
Задача 1. «Старояпонский календарь» Решение. Поскольку цикл является двенадцатилетним поставим в соответствие название года остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996 на 12 равен 4. Program Japan; Var year: integer; begin write('Ваш год рождения : '); readln(year); case year mod 12 of 0: write(’Год обезьяна'); 1: write('Год петуха'); 2: write('Год собаки'); 3: write('Год кабана'); 4: write('Год крысы'); 5: write('Год быка'); 6: write('Год тигра'); 7: write('Год кролика'); 8: write('Год дракона'); 9: write('Год змеи'); 10: write('Год лошади'); 11: write('Год овцы'); end; end.
Задача 2. «Большее среди двух» Найти наибольшее среди двух действительных чисел, используя оператор выбора Решение. Здесь селектором будет являться логическая величина Program Maximum; var Max, x, y: real; begin write (‘Введите два неравных числа ’); readln(x, y); case x > y of true: max: =x; false: max: =y; end; writeln (‘Максимальное из двух есть ’, max: 0: 2); readln; end.
Метки ветвей могут быть заданы списком или интервалом. Сформулируйте задачи к приведенным фрагментам программ (здесь переменная Ch должна быть объявлена как переменная типа Char, I - типа Integer) Пример1: Case Ch of 'A'. . 'Z', 'a'. . 'z': Write. Ln('Letter'); '0'. . '9': Write. Ln('Digit'); '+', '-', '*', '/': Write. Ln('Operator'); Else Write. Ln('Special character'); End; Пример2: Case I of 2, 3, 5, 7: Write. Ln(I, ’ - простое число'); 4, 6, 8. . 10: Write. Ln(I, ’ - составное число'); End;
Задачи для самостоятельной работы Написать программу, которая 1) по номеру дня недели (натуральному числу от 1 до 7) выдает в качестве результата его название и количество уроков в вашем классе в этот день. 2) по последней цифре заданного целого числа позволяет определить последнюю цифру его квадрата. 3) по введенному номеру времени года (1 - зима, 2 - весна, 3 - лето, 4 - осень) выдавала бы соответствующие этому времени года месяцы, количество дней в каждом из месяцев. 4) Пусть элементами круга являются радиус (первый элемент, диаметр (второй элемент) и длина окружности (третий элемент). Программа по номеру элемента запрашивает его значение и вычисляет площадь круга.
Оператор выбора.ppt
- Количество слайдов: 8

