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

Содержание

Слайд 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

РЕШЕНИЕ

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

СЛОЖНО!!!

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

Слайд 10

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

СУТЬ ОПЕРАТОРА

Оператор выбора 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.Это значение сравнивается с

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

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

Оператор case работает следующим образом. Если в одном из списков


Оператор 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 ДА

Блок-схема

начало

Ввод N

N=1

N=2

N=3

N=4

N=5

ДА

ДА

ДА

ДА

ДА

НЕТ

НЕТ

НЕТ

НЕТ

ПЛОХО

НЕУДОВЛЕТВОРИТЕЛЬНО

УДОВЛЕТВОРИТЕЛЬНО

ХОРОШО

ОТЛИЧНО

НЕПР. ВВОД

конец

Слайд 21

На Паскале Program Zadacha; var n:integer; begin writeln (‘Введите номер

На Паскале

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 до 4, определяющее пору года. Дать название

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

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

Вводиться число от 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

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


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

Слайд 25

program prim1; var z: integer; begin writeln('введи номер дня недели');

program 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

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

дня'); end;
END.

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

Слайд 28

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

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

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

program c; var a: integer; begin writeln ('количество копеек =

program 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 = легион


Слайд 31

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

var 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

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

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

Слайд 33

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

Program 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

Найти наибольшее из двух действительных чисел, используя оператор выбора.
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), если

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

Слайд 36

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

Program 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

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

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.
Слайд 41

Program Goroskop; Var Year : Integer; Begin Write('Введите год ');

Program 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 выводит название

Пример программы, которая по введённому числу вида 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

САМОСТОЯТЕЛЬНО! Составить программу, которая по номеру месяца, введенного с клавиатуры,

САМОСТОЯТЕЛЬНО!
Составить программу, которая по номеру месяца, введенного с клавиатуры, выводит количество

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

Program first; var n:integer; begin writeln('введите номер месяца'); readln(n); case

Program 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-мизначному числу определить является ли это датой (в формате дд.мм.гггг), если такой даты не существует сообщить на экран
Слайд 46

var a,d,m,g,vis:integer; BEGIN read (a); d:=a div 1000000; m:=a mod

var 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.

РЕШЕНИЕ

Имя файла: Оператор-выбора-case.pptx
Количество просмотров: 34
Количество скачиваний: 0