Рассмотрены некоторые вопросы контрольной работы и ответы на них. 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