Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (x, y – действительные числа) и определяет принадлежность точки заштрихованной области, включая ее границы.
Программист торопился и написал программу неправильно.
ПРОГРАММА
НА ПАСКАЛЕ
var x,y: real;
begin
readln(x,y);
if y<=x*x then
if x<=1.5 then
if y>=0 then
write('принадлежит')
else
write('не принадлежит');
end.
ПРОГРАММА
НА БЕЙСИКЕ
INPUT x, y
IF y<=x*x THEN
IF x<=1.5 THEN
IF y>=0 THEN
PRINT "принадлежит"
ELSE
PRINT "не принадлежит"
ENDIF
ENDIF
ENDIF
END
ПРОГРАММА
НА СИ
void main(void)
{ float x,y;
scanf("% f % f",&x,&y);
if (y<=x*x)
if (x<=1.5)
if (y>=0)
printf("принадлежит");
else
printf("не принадлежит");
}
Последовательно выполните следующее:
1) Приведите пример таких чисел x, y, при которых программа неверно решает поставленную задачу.
2) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Примеры решений
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
ДА
Добавлено ли дополнительное условие, необходимое для правильного задания области?
ДА
Исправлена ли ошибка, связанная с отсутствием варианта ELSE в отдельных условиях?
НЕТ
Оцените представленную работу выпускника.
3 балла
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
ДА
Добавлено ли дополнительное условие, необходимое для правильного задания области?
ДА
Исправлена ли ошибка, связанная с отсутствием вариантов else у некоторых условий?
НЕТ
Оцените представленную работу выпускника.
2 (Исправлена ошибка, связанная с неверным заданием области и правильно указан пример чисел.)
В качестве ответа на первый вопрос выпускник указал три точки. Подходят ли все три точки в качестве примера, демонстрирующего, что программа неверно решает поставленную задачу?
ДА
Добавлено ли дополнительное условие, необходимое для правильного задания области?
ДА
Исправлена ли ошибка, связанная с отсутствием вариантов else у некоторых условий?
НЕТ
Оцените представленную работу выпускника.
2 (Исправлена ошибка, связанная с неверным заданием области и правильно указан пример чисел.)
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
НЕТ
Добавлено ли дополнительное условие, необходимое для правильного задания области?
НЕТ
Всегда ли программа выводит одно из двух сообщений - «Принадлежит» или «Не принадлежит»?
ДА (вывод сообщения «Не принадлежит» производится после всех условий if, а инструкция return приводит к завершению работы программы.)
Оцените представленную работу выпускника.
1 (Исправлена только одна ошибка, связанная с отсутствием варианта ELSE. Пример пары чисел X и Y — неверный, доработка программы, связанная с неверным заданием области не произведена.)
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
ДА
Добавлено ли дополнительное условие, необходимое для правильного задания области?
ДА
Исправлена ли ошибка, связанная с неверным использованием условной инструкции if?
ДА
Оцените представленную работу выпускника.
3 (Все задания выполнены верно и полностью, следует отметить нестандартный способ задания области при помощи квадратичного неравенства)
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
ДА
Добавлено ли дополнительное условие, необходимое для правильного задания области?
ДА
Исправлена ли ошибка, связанная с неверным использованием условной инструкции if?
НЕТ
Оцените представленную работу выпускника.
2 (Верно указаны числа X и Y и исправлена одна ошибка.)
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
НЕТ
Для всех ли точек плоскости программа выведет одно из двух сообщений «Принадлежит» или «Не принадлежит»?
ДА
Для всех ли точек плоскости программа выведет правильный ответ?
ДА (решение сильно отличается от того, которое приведено в критериях: фраза «Не принадлежит» выводится, если выполнено хотя бы одно из условий, перечисленных в инструкции if, а сами условия — заменены на противоположные.)
Доработка программы существенно отличается от решения, предлагаемого в критериях оценивания, нужно ли ставить баллы за такую доработку?
ДА
Оцените представленную работу выпускника.
2 алла
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
ДА
Для всех ли точек плоскости программа выведет одно из двух сообщений «Принадлежит» или «Не принадлежит»?
ДА
Правильно ли произведена доработка условий, задающих область, заданную в условии задачи?
НЕТ
Сократилось ли количество случаев, при которых программа неверно решала поставленную задачу?
ДА
Остались ли точки, для которых программа неверно решает поставленную задачу?
ДА
Оцените представленную работу выпускника.
1 (Пример чисел X и Y приведен неверно, доработка программы выполнена не полностью: остались точки, для которых программа неверно решает поставленную задачу, поэтому доработка оценивается неполным баллом.)
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
НЕТ
Для всех ли точек плоскости программа выведет одно из двух сообщений «Принадлежит» или «Не принадлежит»?
ДА
Правильно ли произведена доработка условий, задающих область, заданную в условии задачи?
НЕТ
Есть ли такие точки, для которых исходная программа неверно решала поставленную задачу, а доработанная — верно?
ДА
Есть ли такие точки, для которых исходная программа верно решала поставленную задачу, а доработанная стала работать неверно?
ДА
Оцените представленную работу выпускника.
0
1
Программа доработана неверно. Частичные баллы за неверную доработку начисляются только в том случае, если решение не стало работать «хуже», то есть если нет точек, для которых исходная программа работала верно, а доработанная стала работать неверно. В данном случае после доработки программа стала выводить сообщение «не принадлежит» для некоторых точек, на самом деле принадлежащих закрашенной области.
Правильно ли указаны числа X и Y, при которых программа неверно решает поставленную задачу?
НЕТ
Если точка принадлежит искомой области, будет ли выведено сообщение «Принадлежит»?
ДА (обратите внимание на переменную IsGood – она используется как признак того, принадлежит ли точка искомой области)
Если точка не принадлежит искомой области, будет ли выведено сообщение «Принадлежит»?
НЕТ ( Если точка не принадлежит искомой области, то будет выполнено одно из граничных условий и переменная IsGood получит значение, равное 0.)
Рассмотрим точку X= –1, Y= –1. Сколько раз для этой точки будет выведено сообщение «Не принадлежит»?
2 раза (для этой точки выполнено ДВА условия: X < 0 и Y < 0)
Является ли ошибкой то, что программа для некоторых точек выводит сообщение «Не принадлежит» несколько раз?
ДА (а если программа, управляющая банкоматом, дважды выдает запрошенную клиентом сумму денег, является ли это ошибкой в программе?)
Оцените представленную работу выпускника.
1 балл
Пример чисел X и Y приведен неверный. Программа тоже доработана неверно – в целом, выпускник понял, как нужно доработать программу, но сам допустил ошибки в доработке. В результате программа выводит слово «Принадлежит», если точка действительно принадлежит области, а если точка не принадлежит области, то программа выводит сообщение «Не принадлежит» один или несколько раз, что является ошибкой, поэтому доработка программы оценивается в частичный балл (1 из 2).
1 балл
Пара чисел X, Y, для которой программа неверно решает поставленную задачу, не указана. Исправлена только одна ошибка (добавлено условие x>=0)
2 балла
Пара чисел X, Y указана верно. Исправлена только одна ошибка (добавлено условие x>=0).
2 балла
Пара чисел X, Y не указана (не все числа, для которых X<0 являются верным ответом на первый вопрос). Доработка программы выполнена верно, но нестандартным образом (добавлено условие X*Y>=0).
2 балла
Пара чисел X, Y указана верно. Исправлена только одна ошибка (добавлено условие x>=0).
3 балла
2 балла
Пара чисел X, Y указана верно. Исправлена только одна ошибка (добавлено условие x>=0).
1 балл
Пара чисел X, Y указана неверно. В результате доработки исправлена ошибка, связанная с отсутствием вариантов ELSE, но область задана неверно. После доработки количество случаев, при которых программа неверно решает поставленную задачу уменьшилось, но остались точки, для которых программа работает неверно.
2 балла
Пара чисел X, Y указана верно. Идея доработки программы – правильная (условия заменены на противоположные, программа последовательно отбрасывает случаи, для которых точка не принадлежит области), но в реализации имеется ошибка: извлечение корня из отрицательного числа во втором условии: if x<0, поэтому такую доработку можно считать частичной и оценить в 1 балл. Если выпускник вместо условия x
1 балл
Пара чисел X, Y указана верно. При доработке программы условие X<=1.5 заменено на условие X<=1, поэтому программа стала выдавать неверный ответ для некоторых точек, для которых она ранее выдавала верный ответ, поэтому доработка программы оценивается в 0 баллов.
2 балла
Пара чисел X, Y указана верно. Исправлена только одна ошибка (добавлено условие x>=0).