1. Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x, y – действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
var x,y: real;begin
readln(x,y);
if y>=x then
if y>=0 then
if y write(‘принадлежит’)
else
write(‘не принадлежит’)
end.
INPUT x, yIF y>=x THEN
IF y>=0 THEN
IF y PRINT «принадлежит»
ELSE
PRINT «не принадлежит»
ENDIF
ENDIF
ENDIF
END
алгнач
вещ x,y
ввод x,y
если y>=x то
если y>=0 то
если y вывод ‘принадлежит’
иначе
вывод ‘не принадлежит’
все
все
все
кон
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области.
В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (y>=x) | Условие 2 (y>=0) | Условие 3 (y<=2–x*x) | Программа выведет | Область обрабатываетсяверно |
A | |||||
В | |||||
С | |||||
D | |||||
Е | |||||
F | |||||
G | |||||
Н |
2. Требовалось написать программу, которая решает неравенство «(x — а) / (bx) > 0» относительно x для любых ненулевых чисел а и b , введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
IF b > 0 THEN
PRINT «x > «,a,» или x<0″
IF a > 0 THEN
PRINT «0 < x < «,a
PRINT a,» < x < 0″
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
3. Дано целое неотрицательное число N. Необходимо вывести два неотрицательных целых числа, которые при возведении к квадрат дадут результаты, наиболее близкие к N. Например, для N = 2016 нужно вывести числа 44 и 45 (442 = 1936, 452 = 2025), а для N = 9 нужно вывести числа 2 и 3. Для решения этой задачи ученик написал программу, но, к сожалению, его программа — неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
DIM N, K AS INTEGER
INPUT N
K = 1
WHILE K*K K = K + 1
WEND
PRINT (K-1)*(K-1), K*K
END
n = int(input())
k = 1
while k*k k = k + 1
print((k-1)*(k-1),k*k)
алг
нач
цел n, k
ввод n
k := 1
нц пока k*k k := k + 1
кц
вывод (k-1)*(k-1), » «, k*k
кон
var n, k: integer;
begin
read(n);
k := 1;
while k*k k := k + 1;
writeln((k-1)*(k-1),» «,k*k)
end.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе N = 2016.
2. Назовите значение N, при вводе которого программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
4. Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x, y – действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
var x,y: real;begin
if y if y>=0 then
if y>=x*x then
write(‘принадлежит’)
else
write(‘не принадлежит’)
end.
INPUT x, yIF y IF y>=0 THEN
IF y>=x*x THEN
PRINT «принадлежит»
ELSE
PRINT «не принадлежит»
ENDIF
ENDIF
ENDIF
END
нач
вещ x,y
ввод x,y
если y если y>=0 то
если y>=x*x то
вывод ‘принадлежит’
иначе
вывод ‘не принадлежит’
все
все
все
кон
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области.
В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (y<=2+x) | Условие 2 (y>=0) | Условие 3 (y>=x*x) | Программа выведет | Область обрабатываетсяверно |
A | |||||
В | |||||
С | |||||
D | |||||
Е | |||||
F | |||||
G | |||||
Н |
5. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
var х, у: real;
begin
readln(x, у);
if у if у >= 1 − x then
if у >= 0 then
write(‘принадлежит’)
else
write(‘не принадлежит’)
end.
INPUT x, уIF у <= SIN(x) THEN
IF у >= 1 − x THEN
IF у >= 0 THEN
PRINT «принадлежит»
ELSE
PRINT «не принадлежит»
ENDIF
ENDIF
ENDIF
END
void main(void) <
float x, у;
scanf(«%f%f», y);
if (y if (у >= 1 − x)
if (y >= 0)
printf(«принадлежит»);
else
printf(«не принадлежит»);
>
алгнач
вещ х, у
ввод X, у
если у если у >= 1 − х то
если у >= 0 то
вывод ‘ принадлежит ‘
иначе
вывод ‘не принадлежит’
все
все
все
кон
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите «да», если условие выполнится, «нет», если условие не выполнится, «—» (прочерк), если условие не будет проверяться, «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области.
В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв». В последнем столбце укажите «да» или «нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Источник: mif69.blogspot.com
Требовалось написать программу при выполнении которой с клавиатуры вводится
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой ( – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков и (включая границы). Программист торопился и написал программу неправильно.
Алгоритмический язык
INPUT x IF x>=-3 THEN IF x9 THEN IF x>1 THEN PRINT «не принадлежит» ELSE PRINT «принадлежит» ENDIF ENDIF ENDIF END
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям ( и ). Границы (точки и ) принадлежат заштрихованным областям ( и соответственно).
Область | Условие | Условие | Условие | Программа выведет | Область обрабатывается верно |
В столбцах условий укажите «Да», если условие выполнится; «Нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, напишите «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Показать разбор
(допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
Область | Условие | Условие | Условие | Программа выведет | Область обрабатывается верно |
Нет | — | — | — | Нет | |
Да | Да | Нет | Принадлежит | Да | |
Да | Да | Да | Не принадлежит | Да | |
Да | Да | Да | Не принадлежит | Нет | |
Да | Нет | — | — | Нет |
2. Возможная доработка (Паскаль):
if (x>=-3) and (x1) or (x>=5) and (x9) then write(‘принадлежит’) else write(‘не принадлежит’)
Возможны и другие способы доработки.
if x>=-3 then if x1 then write(‘принадлежит’) else if x>=5 then if x9 then write(‘принадлежит’) else write(‘не принадлежит’) else write(‘не принадлежит’) else write(‘не принадлежит’)
Другой пример:
if abs(abs(x-3)-4)2 then write(‘принадлежит’) else write(‘не принадлежит’)
Указания по оцениванию
Обратите внимание! В задаче требуется выполнить три действия.
- Заполнить таблицу.
- Исправить ошибку в условном операторе.
- Исправить ошибку, связанную с неправильным набором условий.
Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. Рассмотрим отдельно каждое действие.
1. Действие по заполнению таблицы считается выполненным, если в таблице нет ошибок или ошибки присутствуют только в одной строке.
2. Неправильное использование условного оператора, в результате чего при невыполнении первого или второго условия программа не выдавала ничего (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции.
В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений: «принадлежит» или «не принадлежит» – для любых чисел при этом программа не стала работать хуже, чем раньше, т.е. для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ.
3. Приведённых трёх ограничений недостаточно для описания двух областей (потеряно условие ). Кроме того, необходимо учесть, что области не соединены. Исправлением этой ошибки может быть разбиение области на две части и использование дизъюнкции, либо использование сложной (для выведения) математической конструкции ( ), либо использование сложной комбинации каскадных условий.
В сложных случаях это действие считается выполненным, если верно определены заштрихованные области, т.е. программа выводит сообщение «принадлежит» для всех точек закрашенных областей, и только для них, для точек вне заштрихованных областей программа выводит «не принадлежит» или не выводит ничего.
В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
Критерии оценки
3 балла Выполнены все три действия.
2 балла Правильно выполнены два действия из трёх (исправлены обе ошибки, но в пункте задания не приведена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы).
При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо « » используется « ».
1 балл Правильно выполнено только одно действие из трёх, т.е. либо только приведена таблица, которая содержит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот).
0 баллов Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена либо содержит ошибки в двух и более строках, программа не приведена либо ни одна из двух ошибок не исправлена).
Источник: yandex.ru
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное числ…
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 10^9, и выводится количество цифр этого числа. Программист торопился и написал программу неправильно:
while N > 1 do begin
count := count + 1;
Последовательно выполните следующее:
Определите, что выведет программа при вводе числа 123.
Укажите одно число, для которого программа выводит неверный результат.
Найдите все ошибки в этой программе (их может быть одна или несколько). Для каждой ошибки:
а) выпишите строку, в которой сделана ошибка;
б) укажите, как надо исправить ошибку — приведите правильный вариант строки.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, имеющую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Василиса Зайниева Вопрос задан 27 июня 2019 в 10 — 11 классы, true»> Поделиться
Секреты телефона #39. ♣♦ Скрытые символы на клавиатуре ♥♠
Печатаются цифры вместо букв на ноутбуке — что делать и как исправить ввод с клавиатуры
Источник: matfaq.ru