Оператор выбора case презентация

Содержание

Для начала решим одну задачу уже известным способом Условие: по введенному 8-мизначному числу определить является ли это датой (в формате дд.мм.гггг), если такой даты не существует сообщить на экран

Слайд 1ОПЕРАТОР ВЫБОРА CASE
Долгих Н. 10 «з»


Слайд 2 Для начала решим одну задачу уже известным способом

Условие: по введенному

8-мизначному числу определить является ли это датой (в формате дд.мм.гггг), если такой даты не существует сообщить на экран

Слайд 3Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая

дата.

В решении необходимо учитывать число месяцев, количество дней в каждом месяце, а также високосные года.


Слайд 4Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая

дата.

Нам понадобятся переменные для самого числа (а), для дня(d), месяца(m), года(g).
Сначала определим, високосный ли год. Восьмизначное число записано в формате ДДММГГГГ, то есть последние 4 цифры – год (g).
Уберем из числа ДДММ, для этого воспользуемся
MOD – делением с выводом на экран остатка.
Разделим на 10 000. Запись в Паскале будет следующей: g:=m mod 10000;
Если остаток равен нулю – год високосный, во втором месяце года 29 дней, а не 28. Это нужно четко отразить в задаче.
vis:=g mod 4;
if (vis=0) and (m=2) and (d<30) then …


Слайд 5Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая

дата.

Итак, если год високосный, месяц второй, и число,
обозначающее день<30, можем вывести на экран дату:

if (vis=0) and (c1=2) and(d<30) then writeln(d,'.', m,'.', g,'.')
else …


Слайд 6Вводится восьмизначное число в формате ДДММГГГГ. Необходимо выяснить, существует ли такая

дата.

if (vis=0) and (m=2) and (d<30) then writeln(d,'.', m,'.', g,'.')
else …
Рассуждаем дальше. Если год не високосный, то есть какой то остаток от деления месяца(m),
число дней в феврале = 28, а остальные числа можно объединить группами, так, например,
31 день содержат 1, 3, 5, 7, 8, 10, 12 месяцы,
30 дней – 4, 6, 9, 11. В остальных случаях дата не существует. Используем IF:
if ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12)) and (d<32)
or (m=2) and (d<29)
or ((m=4) or (m=6) or (m=9) or (m=11)) and (d<31)
then writeln (d,'.', m,'.', g,'.')
else writeln ( ' такой даты не существует ' );


Слайд 7 РЕШЕНИЕ
var a, d, m,o1, vis,o2:integer;
BEGIN
read (a);
d:=a div 1000000; {день}
m:=a

mod 1000000; {ммгггг}
g:=m mod 10000; {гггг}
m:=m div 10000; {мм}
vis:=g mod 4;
if (vis=0) and (m=2) and(d<30) then writeln(d,'.', m,'.', g,'.')
else
if ((m=1) or (m=3) or (m=5) or (m=7) or (m=8) or (m=10) or (m=12)) and (d>0) and (d<32)
or (m=2) and (d>0) and (d<29)
or ((m=4) or (m=6) or (m=9) or (m=11)) and (d>0) and (d<31)
then writeln (d,'.', m,'.', g,'.')
else writeln ( 'такой даты не существует ' );
END.


Слайд 8Тестируем программу:










Программа работает вполне корректно.
Задача решена.


Слайд 9СЛОЖНО!!!
Можно проще!!!


Для этого сначала разберем
Оператор выбора case


Слайд 10СУТЬ ОПЕРАТОРА
Оператор выбора case является обобщением оператора if и позволяет сделать

выбор из произвольного числа имеющихся вариантов.

Как и в операторе if здесь может присутствовать слово else, имеющее тот же смысл


Слайд 11Оператор выбора выполняет одно действие из нескольких в зависимости от значения

некоторого выражения, называемого переключателем.

Он имеет следующий вид:
case переключатель of список выбора 1: оператор 1; список выбора 2: оператор 2; ... список выбора N: оператор N; else оператор 0 end;


Слайд 12 Переключатель представляет собой выражение целого, символьного типа или логического типа,
а

списки выбора содержат константы того же типа, что и переключатель.

Как и в операторе if, ветка else может отсутствовать.


Слайд 13 Если при выполнении условия действий больше одного, то вид оператора выбора

будет таким:


case переключатель of список выбора 1: begin группа действий 1; end; ... список выбора N: begin группа действий N; end; else begin группа действий 0; end end;

группа действий перечисляется через ;

Слайд 14 ПРАВИЛО РАБОТЫ ОПЕРАТОРА:
1.Вычисляется значение выражения.
2.Это значение сравнивается с константами, стоящими после

слова of
3.Если значение выражения равно какой-либо константе, то выполняется оператор, стоящий после этой константы.
4.Если значение выражения не совпадает ни с какой константой, то управление передается оператору, следующему после слова End;
5.Если используется 2-ой формат записи оператора, то управление передается оператору, следующему после слова Else.          Если вместо одного оператора в строке нужно использовать несколько, то используют операторные скобки Begin … End;

Слайд 15
Оператор case работает следующим образом.

Если в одном из списков

выбора найдено текущее значение переключателя, то выполняется оператор, соответствующий данному списку.
Если же значение переключателя не найдено ни в одном списке, то выполняется оператор по ветке else или, если ветка else отсутствует, оператор case не выполняет никаких действий.


Слайд 16БЛОК - СХЕМА


Слайд 17
Список выбора состоит
либо из одной константы,
либо из диапазона

значений вида a..b (константа a должна быть меньше константы b);
можно также перечислить несколько констант или диапазонов через запятую.
Например: 1..5 или 1,2,3,4,5 или 1, 2..5
Или так: ‘a’, ’b’, ’c’, ’d’ или ‘a’ .. ’d’
или ‘d’, ’a’ .. ’c’

Слайд 18Списки выбора не должны пересекаться. Например, следующий фрагмент приведет к ошибке

компиляции "Пересечение диапазонов меток в операторе case".
case i of 2,5: write(1); 4..6: write(2); end;
Здесь в обоих списках выбора содержится число 5

Слайд 19Задача
Нарисовать блок-схему и составить
программу, позволяющую получить
словесное описание школьных отметок
(1-плохо, 2-неудовлетворительно,
3-удовлитворительно,4-хорошо,5-отлично)
Если

число не находится в диапазоне , то вывести строку «ошибка».


Слайд 20Блок-схема


начало
Ввод N
N=1
N=2
N=3
N=4
N=5
ДА
ДА
ДА
ДА
ДА
НЕТ
НЕТ
НЕТ
НЕТ






ПЛОХО
НЕУДОВЛЕТВОРИТЕЛЬНО
УДОВЛЕТВОРИТЕЛЬНО
ХОРОШО
ОТЛИЧНО
НЕПР. ВВОД

конец


Слайд 21На Паскале
Program Zadacha;
var n:integer;
begin

writeln (‘Введите номер оценки’);
readln(n);
case n of
1:writeln (‘Плохо’);
2:writeln (‘Неудовлетворительно’);
3:writeln (‘Удовлетворительно’);
4:writeln (‘Хорошо’);
5:writeln (‘Отлично’);
else writeln (‘ошибка’);
end;
readln;
end.


Слайд 22 Вводиться число от 1 до 4, определяющее пору года. Дать название

этой поры года
(1 - зима, 2 - весна,
3 - лето, 4 - осень).


Слайд 23 Вводиться число от 1 до 4, определяющее пору года. Дать название

этой поры года (1 - зима, 2 - весна, 3 - лето, 4 - осень).

program zadacha2;
var n:byte;
BEGIN
writeln('Введите номер поры года');
readln(n);
case n of
1: writeln('зима');
2: writeln('весна');
3: writeln('лето');
4: writeln('осень');
Else writeln('неправильно ввели номер поры года');
end;
END.


Слайд 24
По номеру дня недели вывести соответствующее

ему название

Слайд 25program prim1;
var z: integer;
begin
writeln('введи номер дня недели');
readln(z);
case z of
1:writeln('понедельник');
2: writeln('вторник');
3: writeln('среда');
4:

writeln('четверг');
5: writeln('пятница');
6: writeln('суббота');
7: writeln('воскресенье');
else writeln('нет такого дня недели');
end;
readln;
end.

Слайд 26по введенному номеру дня недели определить рабочий день или будний, в

случае ошибки ввода сообщить на экран


Слайд 27ПРИМЕРЫ


Решение:
var n: integer;
BEGIN
Read(n);
case n of 1..5: writeln('Будний день'); 6,7: writeln('Выходной день'); else: writeln('Нет такого

дня'); end;
END.


Условие: по введенному номеру дня недели определить рабочий день или будний, в случае ошибки ввода сообщить на экран


Слайд 28Составить программу, которая после введенного с клавиатуры числа (в диапазоне от

1 до 99), обозначающего денежную единицу, дописывает слово «Копейка» в правильной форме.
Например, 5 копеек, 41 копейка и т. д.


Слайд 29program c;
var a: integer;
begin
writeln ('количество копеек = ');
readln (a);
case (a) of
1,21,31,41,51,61,71,81,91:

writeln ('копейка');
2..4,22..24,32..34,42..44,52..54,62..64,72..74,
82..84,92..94: writeln ('копейки');
else writeln ('копеек');
end;
end.

Программа:


Слайд 30В одной компьютерной игре не существует числительных. Потому фраза «у вас

семь чёрных драконов, а у вашего врага — сорок» будет выглядеть так: «у вас немного чёрных драконов, а у вашего врага — толпа». Необходима программа заменяющая число (вводится число от 1 до 2000) на существительное по следующей закономерности:
1 до 4 = несколько; от 5 до 9 = немного; от 10 до 19 = отряд; от 20 до 49 = толпа; от 50 до 99 = орда; от 100 до 249 = множество; от 250 до 499 = сонмище; от 500 до 999 = полчище; от 1000 = легион



Слайд 31var a:integer;
BEGIN
readln(a);
case a of
1..4 :writeln(‘несколько’);
5..9

:writeln(‘немного’);
10..19 :writeln(‘отряд’);
20..49 :writeln(‘толпа’);
50..99 :writeln(‘орда’);
100..249:writeln(‘множество’);
250..499:writeln(‘сонмище’);
500..999:writeln(‘полчище’);
else writeln(‘легион’);
end; END.

Слайд 32Найти наибольшее из двух действительных чисел, используя оператор выбора.


Слайд 33Program Usl1;
Var A, F : Real;
Begin
WriteLn('Введите действительное число:

'); ReadLn(A);
IF A <= 0 THEN
F = 0
ELSE
IF A <= 1 THEN
F = Sqr(A) - A
ELSE
F = Sqr(A) - SIN(Pi * Sqr(A));
WriteLn ('Значение функции F(x) при x = ', A:10:6, ' равно ', F:10:6);
END.

Где A:10:6 и F:10:6 это изменение формата числа

Найти наибольшее из двух действительных чисел, используя оператор выбора.
I способ


Слайд 34Найти наибольшее из двух действительных чисел, используя оператор выбора.
II способ
Var Max,

X, Y : Real;
BEGIN
Write('Введите два числа:');
ReadLn(X, Y);
Case X > Y Of
TRUE : Max := X;
FALSE : Max := Y;
End;
WriteLn(‘большее из двух:',Max)
END.



Слайд 35Дано действительное число a. Вычислить f(a), если


Слайд 36Program Usl1;
Var A, F : Real;
Begin
WriteLn('Введите действительное число:

'); ReadLn(A);
IF A <= 0 THEN
F = 0
ELSE
IF A <= 1 THEN
F = Sqr(A) - A
ELSE
F = Sqr(A) - SIN(Pi * Sqr(A));
WriteLn('Значение функции F(x) при x = ', A:10:6, ' равно ', F:10:6);
END.

Где A:10:6 и F:10:6 это изменение формата числа

Слайд 37Написать программу которая показывает чётное число или нет, если оно меньше

10. В случае, если 9

Слайд 38Примеры:
Программы показывает чётное число или нет, если оно меньше 10. В

случае, если 9 case Operator of plus: X := X+Y;
minus: X := X-Y;
times: X := X*Y;
end;
case I of 0, 2, 4, 6, 8: Writeln('Четная цифра');
1, 3, 5, 7, 9: Writeln('Нечетная цифра');
10..100: Writeln('Между 10 и 100');
end;

Слайд 39 В старояпонском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили

названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. Написать программу, которая позволяет ввести номер года и печатает его название по старояпонскому календарю. Справка: 1996 г. — год крысы — начало очередного цикла.

Слайд 40Поскольку цикл является двенадцатилетним, поставим название года в соответствие остатку от

деления номера этого года на 12.

Слайд 41Program Goroskop;
Var Year : Integer;
Begin
Write('Введите год '); ReadLn(Year);
CASE

Year MOD 12 OF
0 : WriteLn('Год Обезьяны');
1 : WriteLn('Год Петуха');
2 : WriteLn('Год Собаки');
3 : WriteLn('Год Свиньи');
4 : WriteLn('Год Крысы');
5 : WriteLn('Год Коровы');
6 : WriteLn('Год Тигра');
7 : WriteLn('Год Зайца');
8 : WriteLn('Год Дракона');
9 : WriteLn('Год Змеи');
10 : WriteLn('Год Лошади');
11 : WriteLn('Год Овцы')
END;
END.

Слайд 42Пример программы, которая по введённому числу вида nn.nn.nnnn выводит название месяца

и год по китайскому календарю

program mesyac;
var a:longint;
var b,c:integer;
begin
writeln (‘введите число');
readln(a);
b:=(a div 10000)mod 100 ;
write (‘число ', a div 1000000);
case b of
1 : write (' январь');
2 : write (' февраль');
3 : write (' март');
4 : write ('  апрель');
5 : write (' май');
6 : write (' июнь');
7 : write (' июль);
8 : write ('  август');
9 : write (' сентябрь');
10 : write (' октябрь');
11 : write (' ноябрь');
12 : write (' декабрь');
end;

c:= (a mod 10000) mod 12;
case c 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.


Слайд 43САМОСТОЯТЕЛЬНО!


Составить программу, которая по номеру месяца, введенного с клавиатуры, выводит количество

дней в нем. В программе учесть количество дней в феврале для високосного и не високосного годов.

Слайд 44Program first;
var n:integer;
begin
writeln('введите номер месяца');
readln(n);
case n of
1:writeln('январь');
2:writeln('Февраль');
3:writeln('март');
4:writeln('апрель');
5:writeln('май');
6:writeln('июнь');
7:writeln('июль');
8:writeln('август');
9:writeln('сентябрь');
10:writeln('октябрь');
11:writeln('ноябрь');
12:writeln('декабрь');
end;
case n of
1,3,5,7,8,10,12:writeln('31 день');
4,6,9,11:writeln('30 день');
2:write('в

невисокосном году 28, в високосном 29');
else writeln('нет такого месяца')
end;
end.

Слайд 45Теперь решим другим способом задачу решенную в самом начале

Условие: по введенному

8-мизначному числу определить является ли это датой (в формате дд.мм.гггг), если такой даты не существует сообщить на экран

Слайд 46var a,d,m,g,vis:integer;
BEGIN
read (a);
d:=a div 1000000;
m:=a mod 1000000;
g:=m mod 10000;
m:=m div 10000;
vis:=g

mod 4;
case vis of
0 : if ((m=2) and (d<30)) then writeln(d,'.',m,'.',g)
else writeln('error');
1..3: case m of
1,3,5,7,8,10,12: if d<32 then writeln(d,'.',m,'.',g)
else writeln('error');
4,6,9,11: if d<31 then writeln(d,'.',m,'.',g)
else writeln('error');
2: if d<29 then writeln(d,'.',m,'.',g)
else writeln('error');
else writeln('error');
end; end; END.

РЕШЕНИЕ


Слайд 47Эти задачи решите сами:
Дана точка (x;y) и круг радиуса R с

центром в точке (0;0). Определить, где находится точка: внутри, на границе, или за пределами круга.
Составить программу, которая по номеру месяца, введенного с клавиатуры, выводит количество дней в нем. В программе учесть количество дней в феврале для високосного и не високосного годов.
Даны два целых числа: D(день) и M(месяц),определяющую правильную дату. Вывести знак Зодиака, соответствующий этой дате:"Водолей(20,1-18,2) "Рыбы"(19,2-20,3) "Овен"(21,3-19,4) "Телец" (20,4 - 20,5) "Близнецы" (21,5 -21,6) "Рак"(22,6-22,7 ) "Лев" (23,7-22,8) "Дева"(23,8-22,9) "весы" (23,9-22,10) "Скорпион"(23,10,-22,11) "стрелец"(23,11-21,12) "козерог"(22,12,-19,1).
По введенной дате выдать все данные разных гороскопов
Китайский,
Друидов




Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


Для правообладателей

Яндекс.Метрика