Вложенные условные операторы

advertisement
Рассмотрены некоторые вопросы контрольной работы и ответы на них.
1. Чему равен результат операции “ / “ над целыми и над вещественными числами.
Объяснить и привести примеры.
Ответ
Результат операции “ / “ над целыми и над вещественными числами всегда имеет
вещественный тип.
Пример.
var a,b,c:integer;
x,y,z:real;
begin
x:=3.14; y:=0.5;
z:=x/y; // всегда верно, за исключением деления на ноль
a:=7; b:=6;
z:=a/b;//Нет ошибки. При делении двух целых получается результат вещественного типа
writeln( a/b);// нет ошибки, результат: 1.16666666666667
c:=a/b;
//ошибка: попытка присвоить переменной типа integer значение типа real
end.
2.Как проверить, делится ли целое число на 3. Объяснить и привести примеры
Ответ. Для проверки, делится ли целое число на 3, надо найти при целочисленном
делении остаток от деления числа на 3 и проверить равен ли он нулю.
1-й вариант
2-й вариант
var a:integer;
...
if a mod 3 = 0 then
writeln('yes')
else
writeln('no');
var a:integer;
b:Boolean;
...
b:=a mod 3=0;
writeln(b)
Следующее решение тоже правильное
a:=12;b:=6;
if a div b = a/b then // перед сравнением целого с вещественным
//целый операнд получает вещественное представление
writeln('yes’)
else
writeln('no');
Но первый вариант предпочтительнее
3. Как проверить, является ли целое число чётным. Объяснить и привести примеры
Ответ. При целочисленном делении числа на 2 остаток должен быть равен нулю.
Можно также использовать стандартную функцию odd
1-й вариант
2-й вариант
3-ий вариант
var a:integer;
var a:integer;
b:Boolean;
...
b:=a mod 3=0;
writeln(b)
var a:integer
...
if a mod 2 = 0 then
writeln('yes')
else
writeln('no');
4.
y=
max( a, b), ____ если ____ x  0
min( a, b), ____ если _____ x  1
a  b , ______ в _ остальных _ случаях
Ответ
var x,a,b,y:integer;
begin
writeln(‘a,b,x=?’);
readln(a,b,x);
if x=0 then
if a>b then
y:=a
else
y:=b
else if x=1 then
if a<b then
y: =a
else
y:=b
else
y:=abs(a+b);
writeln(‘y=’,y)
end.
...
if not odd(a) then
writeln('yes')
else
writeln('no');
min( 2 x , 0.95) ,

5. y0   x / 5 ,
 x / 25 ,

при x  1
при 1  x  25
при x  25
Ответ
var x,y0:integer;
begin
writeln(‘x=?’);
readln(x);
if x>25 then
y0:=x/25
else if x>1 then
y0:=x/5
else
if 2*x<0.95 then
y0:=2*x
else
y0:=0.95;
writeln(‘y0=’,y0)
end.
x 3  3x  4, ____ если ____ 0  x  1
6. y = ( x 3  3x  4) 2 , __ если ____ x  0
 4, __________ если _____ x  1
Ответ
var x,y:integer;
begin
writeln(‘x=?’);
readln(x);
if x>1 then
y:=-4
else
begin
y:=x*x*x+3*x+4;
if x<0 then
y:=y*y
end;
writeln(‘y=’,y)
end.
7. .Определите “полный условный оператор”. Когда он используется. Привести
примеры.
Ответ
Определение условного оператора:
if b then
оп1
else
оп2.
b – логическое выражение, истинность которого проверяется
оп1 – один любой оператор
оп2 – один любой оператор
Блок-схема:
Используется, когда нужно выбрать действие (действия) оп1 или оп2 в зависимости от
истинности или лжи проверяемого логического выражения B
Пример. Hайти min из a, b.
if b>a then
min:=a
else
min:=b;
Пример. (используется составной оператор)
Если a=b то вычислить x=a+b, y=a*b
Если a  b то вычислить x=sina –cos b, y= e
If a=b then
begin
x:=a+b;
y:=a*b
end
else
begin
x:=sin(a)-cos(b);
y:=exp(a-b)
end;
a b
Вложенные условные операторы
В качестве оператора по ветви if или else может быть другой условный оператор.
Пример. Дано x. Найти y, равное 2*x, при x>3, -x, при 1<x<=3 и x*x, при x<1.
if x>3 then
y:=2*x
else if x>1 then
y:=-x
else
y:=x*x;
8. Определите “неполный условный оператор”. Когда он используется. Привести
пример
Определение неполного условного оператора:
if b then
оп1
Блок-схема:
b – логическое выражение, истинность которого проверяется
оп1 – один любой оператор
оп2 – отсутствует
Используется, когда при истинности проверяемого логического выражения B
нужно выполнить действие (действия) оп1
Пример Hайти max из a, b.
max:=a;
if b>a then
max:=b
Пример. Упорядочить значения в a, b по возрастанию. (Используется составной оператор):
if a>b then
begin
v:=a;
a:=b;
b:=v;
end;
Помните правило: еlse относится к ближайшему одинокому if.
if B then
if C then
A1
else A2
Если в состав полного условного оператора по ветви then входит неполный условный
оператор, его нужно заключить в begin и end.
Пример.
if b1 then
begin
if b2 then
s1
end
else
s2
Download