Слайд 1Оператор выбора
Готовимся к олимпиадам по программированию
Оператор выбора — это конструкция языка,
позволяющая сделать выбор из произвольного числа вариантов и выполнить в соответствии с этим выбором определенные действия, т. е. оператор выбора позволяет обойтись без использования нескольких операторов if.
Case
Слайд 2Общий вид
Case Of
:
<оператор1>;
: <оператор2>;
…
: <операторN>;
Else <оператор>;
End;
Оператор выбора работает следующим образом. Сначала вычисляется значение выражения, стоящее после зарезервированного слова Сase, а затем выполняется оператор (или составной оператор), соответствующий результату вычисления выражения.
Может случиться, что в списке выбора не окажется константы равной вычисленному значению. В этом случае управление передается оператору, стоящему за словом Else.
Слайд 3Задача 1
С клавиатуры вводится число, являющееся школьной отметкой (от 1 до
5). Составить программу выводящую на экран одно из следующих сообщений, в зависимости от введённого числа:
1, 2 – «неудовлетворительно»;
3 – «удовлетворительно»;
4 – «хорошо»;
5 – «отлично».
Все остальные – «введённое число не является отметкой».
Слайд 4Program P1;
Var x: Byte;
Begin
WriteLn ('Введите целое число от 1
до 5:');
ReadLn(x);
Case x Of
1,2: WriteLn('неудовлетворительно');
3: WriteLn('удовлетворительно');
4: WriteLn('хорошо');
5: WriteLn('отлично');
Else WriteLn('введённое число не является отметкой');
End;
End.
Слайд 5Задача 2
Составить программу, позволяющую по введённому номеру месяца вывести на экран
соответствующее время года:
12,1,2 – «Зима»;
3,4,5 – «Весна»;
6,7,8 – «Лето»;
9,10,11 – «Осень».
Слайд 6Program P1;
Var x: Byte;
Begin
WriteLn ('Введите целое число от 1
до 12:');
ReadLn(x);
Case x Of
12,1,2: WriteLn('Зима');
3,4,5: WriteLn('Весна');
6,7,8: WriteLn('Лето');
9,10,11: WriteLn('Осень');
Else WriteLn('Внимательно читайте инструкцию');
End;
End.
Слайд 7Задача 3
С клавиатуры вводится число, показывающее, сколько вам лет (от 1
до 100).
Составить программу, выводящую на экран сообщение, в зависимости от введённого числа, например:
«Вам 21 год» или
«Вам 22 года» или
«Вам 12 лет».
Слайд 9Program P1;
Var x: Byte;
Begin
WriteLn ('Введите целое число от 1
до 100:');
ReadLn(x);
If (x>1) And (x<100)
Then If (x=11) Or (x=12) Or (x=13) Or (x=14)
Then WriteLn('Вам', х, 'лет' );
Else Case x Mod 10 Of
1: WriteLn('Вам', х, 'год' );
2,3,4: WriteLn('Вам', х, 'года' );
5,6,7,8,9,0: WriteLn('Вам', х, 'лет ');
End;
Else WriteLn('Внимательно читайте инструкцию');
End.
Слайд 10Program P1;
Var x: Byte;
Begin
WriteLn ('Введите целое число от 1
до 100:');
ReadLn(x);
If (x=11) Or (x=12) Or (x=13) Or (x=14)
Then WriteLn('Вам', х, 'лет' );
Else Case x Mod 10 Of
1: WriteLn('Вам', х, 'год' );
2,3,4: WriteLn('Вам', х, 'года' );
5,6,7,8,9,0: WriteLn('Вам', х, 'лет' );
End;
End.
Слайд 11var Y: integer;
S: string;
begin
write('Сколько лет? ');Readln(Y);
case Y of
11:S:='лет';
12:S:='лет';
13:S:='лет';
14:S:='лет';
else case Y mod 10 of
1:S:='год';
2:S:='года';
3:S:='года';
4:S:='года';
else S:='лет';
end;
end;
writeln ('Вам ',Y,' '+S);
end.
Слайд 12Задача 4
Следующая программа, содержащая, по крайней мере, одну ошибку, после устранения
ошибок должна определять день недели для произвольного дня месяца. В ней считается, что первое число данного месяца — понедельник. Укажите все ошибки.
Взяв эту программу за основу, напишите программу, которая будет решать ту же задачу при условии, что z— день недели для первого числа месяца. Значение z (целое число от 1 до 7) должно запрашиваться программой. Интересующее нас число месяца d (от 1 до 31) также должно запрашиваться. Предполагается, что ввод данных будет корректным.
Слайд 13Var d, w: integer;
begin
readln(d)
;
w:=d div 7;
case w of
1 : writeln ('понедельник') ;
2 : writeln ('вторник') ;
3 : writeln ('среда') ;
4 : writeln ('четверг') ;
5 : writeln ( 'пятница') ;
6 : writeln ('суббота') ;
7 : writeln ('воскресенье')
end
end.
Слайд 14Var d, w: integer;
begin
readln(d)
;
w:=d mod 7;
case w of
1 : writeln ('понедельник') ;
2 : writeln ('вторник') ;
3 : writeln ('среда') ;
4 : writeln ('четверг') ;
5 : writeln ('пятница') ;
6 : writeln ('суббота') ;
0 : writeln ('воскресенье')
end
end.
Слайд 17Var d, w, z: integer;
begin
readln(z,d) ;
w:=(d+z-1) mod 7; (d-z+3)
case w of
1 : writeln ('понедельник') ;
2 : writeln ('вторник') ;
3 : writeln ('среда') ;
4 : writeln ('четверг') ;
5 : writeln ('пятница') ;
6 : writeln ('суббота') ;
0 : writeln ('воскресенье')
end
end.
Слайд 18Источники
http://www.pascaler.ru/pascal/constructions/uslovie/4/
http://infoegehelp.ru/index.php?option=com_content&view=article&id=290&Itemid=77
http://lyceum-2.ru/base/ege/08_%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%B0%20CASE.pdf
http://docplayer.ru/35052367-Pesni-o-paskale-otvety-na-nekotorye-zadaniya-iz-sekcii-a-slabo.html