Анализируем материалы ЕГЭ по
информатике, предложенные Федеральной службой по надзору в сфере образования
и науки Российской Федерации в демонстрационном варианте от 2009 г.
Попробуем предугадать оценку выпускника 2009 года, решившегося сдать информатику в формате ЕГЭ. Для этого проанализируем несколько заданий из «творческой части» демонстрационных материалов, опубликованных в Интернете Федеральной службой по надзору в сфере образования и науки Российской Федерации.
Часть 3. Задача С1. Чтобы не ошибиться в постановке условия задачи, взглянем на скриншот оригинала:
Предвидеть действия большей части экзаменующихся, столкнувшихся с такой постановкой задачи несложно, поскольку даже начинающий изучать Бейсик, не вникая в суть алгоритма, найдет сразу же три ошибки, так как он твердо знает, что ENDIF следует писать раздельно.
Выпускнику и невдомек, что «программист - торопыга»
желал «сделать всего две ошибки» согласно
рекомендациям по проверке, а допустил их - целых десять,
поэтому он (ученик), просидевший уже полтора часа над частью
А и Б, скорее всего, не заметит «подвоха»
и не станет анализировать алгоритм, а быстренько перепишет приведенный
выше код, исправив трижды ENDIF на END
IF, затем приведет пример чисел x,y, при которых программа
будет неверно решать поставленную задачу и перейдет ко второму
вопросу.
И что же при этом получит за «свою опрометчивость» наш испытуемый? Взглянем на критерии оценивания, откуда «ясно видно», что замеченные и исправленные им три ошибки не будут оценены никоим образом.
Получается, что итоговый бал за этот вопрос будет зависеть не от его знания языка и умения программировать, а от познаний курса математики и, если они будут высокими, ему, в лучшем случае, достанется все равно только 1 балл.
Возникает извечный вопрос: "Кто виноват?"
Ошибку можно было бы счесть за досадную опечатку, если бы она не повторялась, но, к сожалению, она же присутствует и в следующем вопросе, причем не в самой постановке задачи, а в качестве возможного варианта правильного ответа, да и не только она...
В данном случае ясно, что нужно проанализировать два интервала: 0<=X<=3,14/2 и SIN(X)<=Y<=1 которые можно записать однозначно: (0<=X) AND (X<=3.14/2) AND (SIN(X)<=Y) AND (Y<=1) откуда и вытекают сами собой правильные ответы на все поставленные вопросы, например:
явно видно, что программа не учитывает тот случай, когда X<=3.14/2 и, кроме того не выведет на печать, что точка "не принадлежит" для всех случаев кроме одного, когда Y>=SIN(X). Если структурировать программу (добавим для наглядности и цвет), то станет очевидным и отсутствие веток ELSE, и операторов печати и т.д. А самое интересное то, что вместо "обещанных в указаниях по оцениванию двух ошибок", их можно будет обнаружить - десять...
INPUT X,Y IF Y<=1 THEN
__IF X>=0 THEN
_____IF Y>=SIN(X) THEN
_________IF X <=3.14/2 THEN _________REM ошибка 1 пропущена проверка правой границы для Х
____________PRINT "принадлежит"
_________ELSE
____________PRINT "не принадлежит"
_________END IF
_____ELSE________________________REM ошибка 2 пропущен оператр ELSE
________PRINT "не принадлежит" ___REM ошибка 3 пропущен оператор печати
_____END IF ______________________ REM ошибка 4 ошибка написания ключевого слова
__ELSE __________________________ REM ошибка 5 пропущен оператор ELSE
_____PRINT "не принадлежит" ______REM ошибка 6 пропущен оператор печати
__END IF _________________________ REM ошибка 7 ошибка написания ключевого слова
ELSE ____________________________ REM ошибка 8 пропущен оператор ELSE
__PRINT "не принадлежит" _______ _ REM ошибка 9 пропущен оператор печати
END IF _________________________ __REM ошибка 10 ошибка написания ключевого слова
END
Да, уж! Но переходим к поиску правильных и лаконичных ответов, которыми могут оказаться и не совсем стандартные решения, например такие:
a$="принадлежит" INPUT X,Y
IF (0>X) AND (X>3.14/2) AND (SIN(X)>Y) AND (Y>1) THEN a$="не принадлежит"
PRINT a$
либо такое:
a$="принадлежит"
INPUT X,Y
IF (0>X) AND (X>3.14/2) AND (SIN(X)>Y) AND (Y>1) THEN a$="не "+a$
PRINT a$
или наоборот:
a$="не принадлежит"
INPUT X,Y
IF (0<=X) AND (X<=3.14/2) AND (SIN(X)<=Y) AND (Y<=1) THEN a$="принадлежит"
PRINT a$
и совсем банальное решение:
INPUT X,Y
IF (0<=X) AND (X<=3.14/2) AND (SIN(X)<=Y) AND (Y<=1) THEN
_____PRINT "принадлежит"
ELSE
_____PRINT "не принадлежит"
END IF
и алгоритм представленный ниже тоже отработает правильно
INPUT X,Y
S=3.14/2 Q=SIN(X)
IF 0>X AND X>S AND Q >Y AND Y>1 THEN
_____PRINT "не принадлежит"
ELSE
_____PRINT "принадлежит"
END IF
С первым вопросом вроде бы все понятно поэтому пойдем дальше и предложим экзаменуемому выступить
в роли эксперта по проверке работоспособности предложенного
алгоритма решения задачи С2, вот ее условие: - показать