Урок № 9
Тема: Оператор множественного выбора CASE
Цели:
Ход урока.
I.
Орг. Момент.
II. Мотивация учебной деятельности учеников
Достаточно часто при составлении программ необходимо сделать выбор из достаточно большого количества вариантов. Команду IF в данном случае использовать не рационально. И тут на помощь к программистам приходит команда множественного выбора CASE.
III. Объявление темы и ожидаемых результатов
После этого урока
ученики смогут:
· Рассказать о возможностях команды множественного выбора CASE;
· Объяснить правила записи значений в этой команде;
· Объяснить разницу между командой IF и CASE;
IV.
Объяснение
нового материала – презентация «Оператор множественного выбора». Во время объяснения сопровождать показ слайдов
демонстрацией работы в среде программирования Turbo Pascal;
· Назначение команды выбора;
Сегодня наша задача – познакомиться со способами организации в программах ветвления на три и более рукавов (или, как еще говорят, ветвей). Существует еще один способ составления программ с ветвлением на три и более рукава – с использованием оператора выбора:
1. Здесь селектор –
проверяемое целое арифметическое, логическое или символьное выражение. Причем
оно может принимать значения лишь некоторых типов, общим свойством для
которых является то, что их значения известны точно. Поэтому, в частности,
тип селектора не может быть вещественного типа (Real),
2. <Списки> представляют собой перечисления возможных значений
выражения селектор. При совпадении
значения выражения хотя бы с одним из значений <списка> будет
выполняться соответствующее <действие> и на этом выполнение
команды выбора завершается. |
<Списки> могут быть
заданы следующими способами:
Вид списка |
|
Список, состоящий из одного значения |
‘a’ 8 |
Список, содержащий перечисление значений |
1, 4, 5 ‘a’, ‘b’,’*’,’@’ |
Список, содержащий интервалы значений |
1..5, 20..30 ‘a’ ..’z’ |
Список, содержащий смешанную форму представления значений |
1 .. 5, 15, 55 ‘a’ ..’z’, ’A’, ’B’ |
Работу этого оператора
можно проиллюстрировать следующим примером:
Пример 1. Составить программу,
которая спрашивает у пользователя номер месяца и выводит соответствующее
названия времени года. В случае, если пользователь
укажет недопустимое число, программа должна вывести сообщение об ошибке «Ошибка
ввода данных».
Ниже приведен рекомендованный вид экрана во время работы программы:
Введите номер месяца (число от 1 до 12) и нажмите <Enter>
-> 12
Зима
Program Pr;
Var month: Integer;
Begin
Writeln
(‘Введите номер месяца (число от 1 до 12) и нажмите <Enter>’);
Read (month);
Case month
of
1,
2, 12: Writeln(‘Зима’);
3 ,4,5: Writeln(‘Весна’);
6 ,7,8: Writeln(‘Лето’);
9 ,10,11: Writeln (‘Осень’);
Else Writeln (‘Ошибка ввода
данных – число должно быть от 1 до
End;
End.
V.
Практическая
работа.
1. Задача. Составить программу,
вычисляющую стоимость междугородного телефонного разговора (цена одной минуты
определяется по таблице). Исходными данными для
программы являются код города и продолжительность разговора. Ниже представлен
рекомендуемый вид экрана во время работы программы:
Вычисление стоимости разговора по телефону.
Введите исходные данные:
Код города -> 812
Длительность (целое количество минут) -> 3
Город: Владивосток
Цена минуты:2.20 руб,
Стоимость разговора: 6.60 руб.
Город |
Код |
Цена минуты (руб.) |
Владивосток |
423 |
2,2 |
Москва |
095 |
1,0 |
Мурманск |
815 |
1,2 |
Самара |
846 |
1,4 |
Program Pr_2;
Var k,t,s,c: Integer;
Begin
Writeln ('Введите код города');
Read (k);
Writeln ('Введиде стоимость 1 минуты');
Read (c);
Writeln
('Сколько минут разговаривали?');
Read (t);
Case k of
423: Writeln('Стоимость разговора с Владивостоком=', c* t);
095:
Writeln(' Стоимость
разговора с Mосквой=', c* t);
815 : Writeln(' Стоимость разговора с Мурманском=', c* t);
846:
Writeln(' Стоимость
разговора с Самарой=', c* t);
Else Writeln
('Ошибка ввода данных – такой город не заказывали');
End;
End.
2. Самостоятельная работа.
Задача 2. Ввести возраст. Определение кол-ва лет.
program y;
uses Crt;
var k : integer ;
m : string ;
begin
clrscr;
write('‚введите ваш
возраст: ');
readln(k);
case k of
1,21,31,41,51,61,71,81,91: m:=' год';
2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94:
m:=' Года ';
5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..99:m:='
«лет';
end;
write('Мне ',k,m);
readkey;
end.
Задача 3.
Составить программу, которая
после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего
денежную единицу, дописывает слово «Копейка» в правильной форме. Например, 5
копеек, 41 копейка и т. д.
program
kopeyka;
uses Crt;
var k : integer ;
m : string ;
begin
clrscr;
write('‚Введите количество копеек:
');
readln(k);
case k of
1,21,31,41,51,61,71,81,91: m:=' копейка '; ( в интервале
пишет слово «копейка»)
2..4,22..24,32..34,42..44,52..54,62..64,72..74,82..84,92..94:
m:=' копейки';
5..20,25..30,35..40,45..50,55..60,65..70,75..80,85..90,95..99:m:=' копеек';
end;
write(' У Вас ',k,m);
readln;
end.
V. Итоги урока. Обсуждение пройденного
материала. Выставление оценок за сам.работу.
VI. Домашнее задание: выучить конспект .
Составить
программу, которая по номеру месяца, введенного с клавиатуры, выводит
количество дней в нем. В программе учесть количество дней в феврале для
високосного и не високосного годов.