Конспект "Оператор выбора" содержит всю необходимую теоретическую информацию по теме и разбор задач. Этот материал поможет учителю при объяснении темы, ученику при написании конспекта, а также можно распечатать как памятку.
Условный оператор IF и СASE
1. Оператор выбора
Оператор выбора case является обобщением оператора if - он
дает возможность выполнить одно из нескольких действий в зависимости от значения переключателя.
Конструкция case.. of является идеальным средством для обработки ситуаций с несколькими исходами, когда условие может принимать более двух значений.
2. Структура оператора.
А) В качестве переключателя используется выражение, которое располагается между ключевыми словами СASE и OF. Результатом этого выражения может быть только значение порядкового типа, общее количество элементов которого не превышает 65535.
Б) Переключатель должен иметь перечисляемый тип и перечисляемые значения верхней и нижней границы этого типа должны лежать в диапазоне от -32768 до 32767. Таким образом, строковый тип и длинный целый тип являются недопустимыми типами переключателя.
В) Все константы выбора должны быть уникальными и иметь перечисляемый тип, совместимый с типом переключателя.
1) casе выражение оf список констант1: оператор1; список констант2: оператор2;
. . .
список константN: операторN; end;
2) case выражение of
список констант1: оператор1; список констант2: оператор2;
. . .
список константN: операторN-1; else операторN end;
Где операторы, стоящие после двоеточия могут быть как простыми, так и структурными. Список констант может состоять из одного, двух и более констант, которые перечисляются через запятую или если они идут подряд, можно указать два крайних значения, разделив их двумя точками.
3) case выражение of const1, const2: begin операторы
end;
min..max: begin операторы
end; end;
3. Как работает оператор.
Выполнение оператора выбора начинается с вычисления выражения, которое должно принимать значение порядкового типа. В случае, если результат вычисления равен одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после Else, если он есть, либо управление передается на оператор, следующий за End.
4. Примечание
1. Тип константы должен совпадать с типом выражения.
2. Ветвь Else - эта часть оператора выбора необязательна.
3. В конструкции выбора, в отличие от условного оператора, перед Else ставится точка с запятой.
4. В качестве операторов могут использоваться и составные операторы.
5. Можно задавать не только одну константу, но и список и диапазон констант. Соответствующие примеры приведены далее.
5. Разбор задач
Задача 1. Дано натуральное число до 100, определяющее возраст человека (в годах). Дать для этого числа наименования "год", "года" или "лет", например, 1 год, 42 года, 26 лет и т.д.
Проанализируем в каких случаях мы добавляем эти слова:
- если это числа 11, 12,13 , 14 то - "лет"
- если 1, 21,31, т.е. последняя 1, то - "год"
- если 2,3,4,22,23,24,32,33,34...,т.е. последние цифры 2..4, то - "года"
- если 10,20...,5,6,7,8,9,15,16,17,18,19,25...29. т.е. последние цифры 0, 5...9, то - "лет"
Программа решения:
Var n: 1..100;
Begin
Writeln(' Введите возраст человека '); Readln(n);
If (n>10) and (n<15) then writeln(n,' лет')
Else
Case n mod 10 of
1: writeln(n, ' год');
2 . .4: writeln(n, ' года'); 0, 5 . . 9 : writeln(n, ' лет'); end; end.
Задача 2. Вычислить a2(d c), y 10; где y=a+x+sin2a, x=cos(a/b)-sin(b/a).
z y11ac, y 10;
2 a
y ( 2c), y 10.
b
Идея решения:
Что бы вычислить Z необходимо знать значения a,d,c и вычислить предварительно y, а у зависит от значений а и х, которое также нужно предварительно вычислить, запросив значения a и b, учитывая, что они не равны 0. Алгоритм решения:
1) Ввести значения a, b, c, d;
2) проверить a,b ( они не должны быть равными 0);
3) вычислить Х; 4) вычислить У;
5) если y< 10 то z:=a2(d-c)
иначе если y= 10 то z:= y+11ac иначе z:= y2((a/b-2c) все все
6) вывести Z
Программа
Program task1;
var a, b, c, y, z : real;
begin writeln(‘Ввести значения a, b’); readln(a,b); if (a=0) or (b=0) then begin writeln(‘ введены значения
равные 0’);
Halt;{ прерывается выполнение программы} end;
writeln(‘Ввести значения d, c’); readln(d,c); x:=cos(a/b)-sin(b/a); y:=a+x+sqr(sin(a)); if y< 10 then z:=sqr(a)*(d-c)
else if y= 10 then z:= y+11*a*c else z:= sqr(y2)*(a/b-2*c); writeln(z); end.
Задача 3. Вычислить y=-Xmax, где x1=(1-а)2*(2+аc)3, x2=cos|x1|+a2,
x1
cos x2 ,x1 x2; x3=
3ca,x1 x2;
a a,x1 x2.
Идея решения:
Что бы вычислить y необходимо знать наибольшее из значений Х1, Х2 и Х3, значение Х1 зависит от а и с, которые вводим с клавиатуры;
Х2 вычисляется после нахождения Х1 , а Х3 зависит от взаимоотношений Х1 и Х2 , учитывая, что Х2 не равно 0 и а>0. Алгоритм решения:
1) ввести а, с;
2) проверить значений а;
3) вычислить Х1;
4) вычислить Х2;
5) если Х1 >Х2 и Х2 не 0 то Х3:=сos(Х1/ Х2)
иначе если Х1 =Х2 то Х3:=3с+а иначе Х3:=а a ;
6) если Х1 >Х2 и Х1 >Х3
то Xmax:= Х1 иначе если Х2 >Х3 то Xmax := Х2 иначе Xmax:= Х3
7) вычислить у; 8) вывести у.
Программа решения:
Program task2;
var a, b, x1, x2, x3, max, y : real; begin writeln(‘Ввести значения a, b’); readln(a,b); if a<0 then begin writeln(‘значение отрицательное’); Halt;{ прерывается выполнение программы} end;
x1: = sqr((1-а))*(2+а*c)*sqr(2+a*c); x2: =cos(abs(x1))+a*a;
if (x1>x2) and (x2<>0) then x3 : =cos(x1/x2) else if x1= x2 then x3 : = 3c+a else x3 : = a*sqrt(a); if (x1>x2) and (x1>x3) then max : =x1 else if x2> x3 then max : = x2 else max : = x3;
y := - max; writeln(y); end.
6.Вопросы для самопроверки.
1.Как записывается и исполняется команда выбор?
2. Какими должны быть величины, используемые в команде выбора?
3. Что нужно учитывать при записи, чтобы не допускать логических ошибок? 4. Какие моменты необходимо учитывать при записи команды выбор?