СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
Информатика
Cайты, меню, вход, новости


Задания
Версия для печати и копирования в MS Word
Задание 24 № 4568

Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (x — действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно.

 

БейсикПаскаль

INPUT x

IF x>=-3 THEN

IF x<=9 THEN

IF x>1 THEN

PRINT "не принадлежит"

ELSE

PRINT "принадлежит"

ENDIF

ENDIF

ENDIF

END

var x: real;

begin

readln(x);

if x>=-3 then

if x<=9 then

if x>1 then

write('не принадлежит')

else

write('принадлежит')

end.

Си++Алгоритмический язык

int main(void)

{

float x;

cin >> x;

if(x>=-3)

if(x<=9)

if(x>1)

cout << "не принадлежит";

else

cout << "принадлежит";

}

алг

нач

вещ x

ввод x

если x>=-3 то

если x<=9 то

если x>1 то

вывод 'не принадлежит'

иначе

вывод 'принадлежит'

все

все

все

кон

Python

x = float(input())

if x >= -3:

    if x <= 9:

        if x > 1:

            print("не принадлежит")

        else:

            print("принадлежит")

 

 

Последовательно выполните следующее.

1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –3, 1, 5 и 9) принадлежат заштрихованным областям (B и D соответственно).

В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».

2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)

 

ОбластьУсловие 1
(x >= –3)
Условие 2
(x <= 9)
Условие 3
(x > 1)
Программа выведетОбласть обрабатывается верно
A
B
C
D
E

Решение.

Элементы ответа:

1.

ОбластьУсловие 1 (x >= –3)Условие 2 (x <= 9)Условие 3 (x > 1)Программа выведетОбласть обрабатывается верно
AНет---Нет
BДаДаНет ПринадлежитДа
CДаДаДаНе принадлежитДа
DДаДаДаНе принадлежитНет
EДаНет--Нет

2. Возможная доработка (Паскаль):

if (x>=-3) and (x<=1) or (x>=5) and (x<=9) then

write('принадлежит')

else

write('не принадлежит')

Возможны и другие способы доработки.

Например:

if x>=-3 then

if x<=1 then

write('принадлежит')

else

if x>=5 then

if x<=9 then

write('принадлежит')

else

write('не принадлежит')

else

write('не принадлежит')

else

write('не принадлежит')

Другой пример:

if abs(abs(x-3)-4)<=2 then

write('принадлежит')

else

write('не принадлежит')

 

Обратите внимание! В задаче требуется выполнить три действия.

1. Заполнить таблицу.

2. Исправить ошибку в условном операторе.

3. Исправить ошибку, связанную с неправильным набором условий.

Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие.

1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присутствуют только в одной строке.

2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции.

В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений: «принадлежит» или «не принадлежит» – для любых чисел x, при этом программа не стала работать хуже, чем раньше, т.е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ.

3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие x>=5). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной (для выведения) математической конструкции (||x–3|–4|≤2), либо использование сложной комбинации каскадных условий.

В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т.е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для точек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.

Источник: Демонстрационная версия ЕГЭ—2013 по информатике.