АЛГОРИТМЫ СО СТРУКТУРОЙ ВЫБОРУРОК 31
Цель: научить применять еще один оператор ветвления – структуру «выбор»
Что делать, если в задаче необходимо проверить множество условий? В этом случае, кроме оператора if в языке программирования Паскаль, предусмотрен оператор ветвления по ряду условий - case. Данный оператор используется реже из-за существующих ограничений для него.
Оператор case служит для выбора одного из возможных вариантов в ситуации, которая может иметь несколько (более двух) возможных исходов. В зависимости от значения переменой (селектора) выполняется оператор, помеченный соответствующей константой. Если же ни одна константа не подходит, выполняется оператор, записанный после else.
Оператор case имеет вид: Case порядковая_переменная of константа_1: оператор_1; константа_2: оператор_2; константа n: оператор n; Else оператор; End;
Возможно использование сокращенной формы оператора case, в которой строка else отсутствует. В этом случае, если ни одна константа не совпадает со значением порядковой переменой, управление передается оператору, следующему за end. Например:Case n of1: writeln ('кpacный'); 2: writeln ('зеленый'); 3: writeln ('белый'); End;
Запись типа 'a'...'z' включает диапазон значений от символа 'а' до символа 'z' включительно. Для решения задач на эту тему нам понадобится еще один тип переменных: char — простой тип данных, предназначенный для хранения одного символа в определенной кодировке.
Практическая работаЗадание 1. Напишите программу, по которой выводится название школьного звена в зависимости от класса.
Решение: var n: integer; beginwrite('Введите класс школы: ');readln(n);case n of1..4: writeln('Младшие классы.');5..8: writeln('Средняя школа.');9,11: writeln(' Cтаршие классы. Выпускной.');10: writeln('Старшие классы.');else writeln(‘Error’);end;end.
Задание 2. С помощью конструкции case сравните значение переменной ch с различными диапазонами значений. В случае совпадения выводится соответствующая надпись (цифра, английская буква, русская буква).
Решение: Var ch: char; beginwrite('Введите символ:');readln (ch);case ch of'0'..'9': write('Это число');'a'..'z','A'..'Z': write('Это английская буква');'а'..'я','А'..'Я': write('Это русская буква')end;end.Примечание. Символы перечисления помещаются в апострофы.
Задание 3. В зависимости от введенного символа L, S, V, пpoграмма должна вычислять длину окружности; площадь круга; объем цилиндра.
Решение:Var L, S, V, r, h: real; n: char; beginwrite('Задайте радиус круга'); readln(r);write('Высоту цилиндра'); readln(h);write('Введите символ:'); readln(n);case ch ofL: write('Длина окружности L=', 2*3.14*r);S: write('Плoщaдь круга S=', 3.14*sqr(r)); V: write('Объем цилиндра V=’, 3.14*sqr(r)*h); end; end.
Задание 4. Напишите программу преобразования цифр в слова
Решение:Program Number4; Var a: integer; BeginWriteln (‘Введите цифру’);readln(a);case a of0: writeln('ноль'); 1: writeln('один'); 2: writeln('двa'); 3: writeln('три'); 4: writeln('четыре'); 5: writeln('пять'); 6: writeln('шесть'); 7: writeln('ceмь'); 8: writeln('вoceмь'); 9: writeln('девять')else writeln('Это число не является цифрой');end;End.
ВыводКак применяется оператор выбора?Когда он особенно необходим?
Домашнее задание1. По номеру дня недели вывести его название.2. Написать программу, которая по введенному числу из промежутка [0,24] выдает время суток.
Ответы:Var a: integer; Beginwriteln('Введите номер дня недели');readln(a);case a of1: writeln ('понедельник'); 2: writeln ('вторник'); 3: writeln('cpeда'); 4: writeln('четверг'); 5: writeln('пятница'); 6: writeln ('суббота'); 7: writeln ('воскресенье');else writeln ('Это число не является номером дня недели');end;End.
2. Var a: real; Beginwriteln('Введите время суток');readln(a);case a of8,01..12,00: writeln (‘Утро’); 12,01-17,00: writeln('День'); 17,01..23,00: writeln (‘Вечер');23,01..24,00: writeln('Hoчь'); 1,00-8,00: writeln ('Hoчь');else writeln('Это число выходит за пределы интервала [0,24]');end;End.