10 класс_2 часа
Контрольная работа № 1 «Ветвление и циклы»
Вариант 1
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=4 и b=0 в следующем формате:
4+0=?
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 18;
b := 4;
b := a div b + b;
c := a mod b + a;
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 12; b := 5;
if (a 10) and (b a := a - 5;
Уровень B. (отметка «4»)
4. Запишите значение переменной s, полученное в результате работы следующей программы.
Var s,k: integer;
Begin
s := 0;
for k := 6 to 12 do
s := s+10;
writeln(s);
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 3;
s := 0;
while n s := s + n;
n := n + 1
end;
write(s)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Найти сумму чисел, которые делятся на 3 в промежутке [а, 100]. Число а вводится с клавиатуры.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 2
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
Z(5)=3
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 22;
b := 6;
c := a mod b + b;
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 1; b := 5;
if (a 1) and (a a := a - 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var s,k: integer;
Begin
s := 0;
for k := 4 to 8 do
s := s+7;
writeln(s);
End.
5.Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 4;
s := 0;
while n s := s + n;
n := n + 1
end;
write(s)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Найти сумму всех трехзначных чисел, кратных 5.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 3
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=6 и b=3 в следующем формате:
a=6;b=3;
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы: a := 25; b := 6; c := a div b + a; |
|
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 10; b := 5;
if (a 1) and (a = b) then
a := a - 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var k,i: integer;
Begin
k := 4;
For i := 1 to 3 do
k := 2*k + i;
Writeln(k);
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while s s:=s+1;
k:=k+1;
end;
write(k);
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Найти произведение нечетных чисел в промежутке [-90,а]. Число а вводится с клавиатуры.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 4
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
3+5=
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 26;
b := 8;
b := a div b;
c := a div b;
3. Какую логическую операцию нужно добавить в программу вместо многоточия, чтобы значение переменной «a» после выполнения фрагмента программы стало равно 3?
a := 10; b := 5;
if (a 1) ... (a a := a - 7
else
a := a + 7;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var s,k: integer;
Begin
s:=0;
for k:=1 to 11 do
s:=s+12;
write(s);
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while k s:=s+2*k;
k:=k+3;
end;
write(s);
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Дано натуральное число n. Найти сумму S = 1 + 4 + 9 + …+ n2.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 5
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
Z=F(3)
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 24;
b := 5;
c := a mod b + 1;
3. Какую логическую операцию нужно добавить в программу вместо многоточия, чтобы значение переменной «a» после выполнения фрагмента программы стало равно 2?
a := 10; b := 5;
if (a b) then
a := a - 8
else
a := a + 8;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
var s, k:integer;
begin
s := 0;
for k := 2 to 12 do
s := s + 11;
writeln (s);
end.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 0;
s := 0;
while s s := s + 2;
n := n + 1
end;
write(n)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
В семизначном числе найти и вывести на экран сумму всех цифр, стоящих на четных местах.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 6
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=2 и b=3 в следующем формате:
a=3,b=2;
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 22;
b := 4;
c := a mod (b + 1);
3. Какую логическую операцию нужно добавить в программу вместо многоточия, чтобы значение переменной «a» после выполнения фрагмента программы стало равно 5?
a := 10; b := 5;
if (a b) then
a := a - 5
else
a := a + 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var u,i: integer;
Begin
u := 26;
For i := 1 to 5 do
u := u – i;
Writeln(u);
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var k, s: integer;
begin
s:=0;
k:=0;
while s s:=s+2;
k:=k+4;
end;
write(s);
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Найти произведение чисел, оканчивающихся на 5, в промежутке от 1 до 100.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 7
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=30 в следующем формате:
5-30 равно
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 26;
b := 6;
c := a div (b + 1);
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 2; b := 5;
if not (a
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
var s, k:integer;
begin
s := 0 ;
for k:= 4 to 11 do
s := s + k ;
writeln (s);
end.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы: var k, s: integer; begin s:=1; k:=0; while k s:=s+2; k:=k+1; end; write(s); end. |
|
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
В семизначном числе найти и вывести на экран все цифры, меньше 5.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 8
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
Z(5)=F
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 22;
b := 4;
c := a mod b + a;
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 3; b := 2;
if (a 5) or (a a := a - 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
var s, n: integer;
begin
s := 1;
for n := 3 to 8 do
s := s * 2;
write(s);
end.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 1;
s := 0;
while n s := s + 7;
n := n + 1
end;
write(s)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Составить программу, которая печатает таблицу умножения на число х.
Число х вводится с клавиатуры.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 9
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
a-5 и b-3;
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 22;
b := 10;
c := a mod b - b;
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 10; b := 5;
if (a 1) and (a a := a - 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var у,і: integer;
Begin
У := 0;
For і := 1 to 3 do
у := у + 4*і;
Writeln(у);
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 2;
s := 35;
while n s := s + 20;
n := n + 2
end;
write(s)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Дано натуральное число n. Проверить, есть ли в записи числа три одинаковые цифры.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Контрольная работа № 1 «Ветвление и циклы»
Вариант 10
Уровень А. (отметка «3»)
1. Запишите оператор для вывода значений целых переменных a=5 и b=3 в следующем формате:
5*3=15.
В ответе не используйте пробелы.
2. Чему будет равна переменная «c» после выполнения этой программы:
a := 6;
b := 31;
c := b div a - a;
3. Определите значение переменной «a» после выполнения фрагмента программы:
a := 10; b := 5;
if (a 1) or (a = b) then
a := a - 5;
Уровень B. (отметка «4»)
4. Определите, что будет напечатано в результате работы следующей программы.
Var s,і:integer;
Begin
s := 3;
For і := 2 to 5 do
s := s + 2* і;
Writeln (s) ;
End.
5. Определите, что будет напечатано в результате работы следующего фрагмента программы:
var n, s: integer;
begin
n := 0;
s := 0;
while s n := n + 1;
s := s + 2
end;
write(n)
end.
Уровень C. (отметка «5»)
1. Выполнить уровни А и В полностью и написать программу на ПК:
Найти сумму нечетных чисел в промежутке [2, а]. Число а вводится с клавиатуры.
2. Только одно задание C1 ЕГЭ 2017 (спросить у учителя).
Уровень С
Вариант 1
1. Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (x – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Си | Паскаль |
void main(void) { float x; scanf("%f",&x); if(x if(x if(x=-1) printf("принадлежит"); else printf("не принадлежит"); } | var x: real; begin readln(x); if x if x if x=-1 then write('принадлежит') else write('не принадлежит') end. |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –1, 5, 11 и 17) принадлежат заштрихованным областям (B и D соответственно).
Область | Условие 1 (x | Условие 2 (x | Условие 3 (x= –1) | Программа выведет | Область обрабатывается верно |
A | | | | | |
B | | | | | |
C | | | | | |
D | | | | | |
E | | | | | |
В столбцах условий укажите «да», если условие выполнится; «нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Уровень С
Вариант 2
2. Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 4. То есть требуется определить, существует ли такое целое число К, что 4K = N, и вывести это число либо сообщение, что такого числа не существует. Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной.
var n, k: integer;
begin read(n);
k := 0;
while n mod 4 = 0 do begin
k := k + n div 4;
n := n div 4; end;
if n
else writeln('He существует')
end.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 16.
2. Приведите пример числа, при вводе которого приведённая программа напечатает то, что требуется.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Уровень С
Вариант 3
3. Дано целое положительное число N. Необходимо определить наименьшее целое число K, для которого выполняется неравенство:
1 + 2 + … + K N.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Паскаль | Си |
var n, k: integer; begin read(n); k := 1; while n0 do begin n := n- k; k := k + 1; end; writeln(k) end. | #include int main(){ int n, k; scanf("%d",&n); k = 1; while (n0) { n = n - k; k = k + 1; } printf("%d", k); return 0; } |
Последовательно выполните следующее.
1. Приведите пример числа N, при вводе которого программа выведет неверный ответ. Укажите верный ответ и ответ, который выведет программа.
2. Приведите пример числа N, при вводе которого программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Уровень С
Вариант 4
4. Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Си | Паскаль |
#include int main() { long int N; int digit, sum; scanf("%ld", &N); sum = 0; while (N = 9) { digit = N % 10; sum = sum + digit; N = N / 10; } printf("%d", sum); } | var N: longint; digit, sum: integer; begin readln(N); sum := 0; while N = 9 do begin digit := N mod 10; sum := sum + digit; N := N div 10; end; writeln(sum); end. |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 352.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
3. Укажите одно число для которого эта программа будет работать верно.
Уровень С
Вариант 5
5. На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, кратных трём. Если в числе нет таких цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Паскаль | Си |
var N, digit, sum: longint; begin readln(N); sum := N mod 10; while N 0 do begin digit := N mod 10; if digit mod 3 = 0 then sum := digit; N := N div 10; end; if sum 0 then writeln(sum) else writeln('NO') end. | #include int main() { int N, digit, sum; scanf("%d", &N); sum = N % 10; while (N 0) { digit = N % 10; if (digit % 3 == 0) sum = digit; N = N / 10; } if (sum 0) printf("%d", sum); else printf("NO"); return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 578.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Уровень С
Вариант 7
7. Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Си | Паскаль |
#include void main(){ float x,у; scanf("%f %f",&x,&y); if (y=x*x-2) if (y if (x=0) printf("принадлежит"); else printf("не принадлежит"); } | var х,у: real; begin readln(х,у); if у=х*х-2 then if у if x=0 then write('принадлежит') else write('не принадлежит' end. |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D, Е, F, G, Н). Точки, лежащие на границах областей, отдельно не рассматривать. Границами областей А и Н являются параболы и ось Оу. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (y = x*x-2) | Условие 2 (y | Условие 3 (x = 0) | Программа выведет | Область обрабатывается верно |
A | | | | | |
| | | | | |
| | | | | |
B | | | | | |
| | | | | |
| | | | | |
| | | | | |
C | | | | | |
| | | | | |
| | | | | |
| | | | | |
D | | | | | |
| | | | | |
| | | | | |
| | | | | |
E | | | | | |
| | | | | |
| | | | | |
| | | | | |
F | | | | | |
| | | | | |
| | | | | |
| | | | | |
G | | | | | |
| | | | | |
| | | | | |
| | | | | |
H | | | | | |
| | | | | |
| | | | | |
| | | | | |
Уровень С
Вариант 8
8. Требовалось написать программу, которая решает неравенство «(x - а) / (bx) 0» относительно x для любых ненулевых чисел а и b , введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
Паскаль | Си |
var a,b,x: real; begin readln(a,b,x); if b0 then write ('x ',a,' или x else if a 0 then write ('0 else write (a, ' end. | void main(void) { float a,b,x; scanf("%f%f%f", &a,&b,&x); if (b 0) printf("x %f или x else if (a0) printf("0 else printf("%f } |
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Уровень С Вариант 9
9. Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
Паскаль | Си |
var х, у: real; begin readln(х, у) ; if х у * у then if х = 0 then if у write('принадлежит') else write{'не принадлежит') end. | void main(void) { float х, у; scanf("%f%f", &x, &у); if (x if (x = 0) if (y printf("принадлежит"); else printf("не принадлежит"); } |
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (x | Условие 2 (x = 0) | Условие 3 (y | Программа выведет | Область обрабатывается верно |
A | | | | | |
В | | | | | |
С | | | | | |
D | | | | | |
Е | | | | | |
F | | | | | |
G | | | | | |
Н | | | | | |
Уровень С
Вариант 10
10. Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Си | Паскаль |
#include void main (void) { float x,y; scanf if (x*x + y*y if (x*x + y*y = 16) printf ("принадлежит"); else printf("не принадлежит"); } | var x, у: real; begin readln(x,y); if x*x + y*y if x*x + y*y = 16 then write{'принадлежит') else write{'не принадлежит') end. |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D). Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (х*х+у*у | Условие 2 (х*х+у*у = 16) | Программа выведет | Область обрабатывается верно |
A | | | | |
В | | | | |
С | | | | |
D | | | | |
Ответы на задания №№ 1-5
| № 1 | № 2 | № 3 | № 4 | № 5 |
1 вариант | Write(a, ‘+’, b, ‘=?’); | 20 | 7 | 70 | 25 |
2 вариант | Write(‘Z(‘, a, ‘)=’, b); | 10 | 1 | 35 | 39 |
3 вариант | Write(‘a=’, a, ’;b=’, b, ‘;’); | 29 | 10 | 43 | 4 |
4 вариант | Write(a, ‘+’, b, ‘=’); | 8 | or | 132 | 102 |
5 вариант | Write(‘Z=F(’, b, ‘)’); | 5 | or | 121 | 5 |
6 вариант | Write(‘a=’, b, ‘.b=’, a); | 2 | or | 11 | 24 |
7 вариант | Write(a, ‘-’, b, ‘равно’); | 3 | 2 | 60 | 9 |
8 вариант | Write(‘Z(‘, a, ‘)=F’); | 24 | 3 | 64 | 35 |
9 вариант | Write(‘a-‘, a, ‘ и b-’, b, ‘;’); | 8 | 10 | 24 | 95 |
10 вариант | Write(a, ‘*’, b, ‘=’, a*b); | -1 | 5 | 41 | 4 |
Проверка части С
Пожалуйста, оцените решения заданий части С самостоятельно, руководствуясь указанными критериями.
Начало формы
вариант 1
Критерии оценивания выполнения задания | Баллы |
Правильно выполнены оба пункта задания. Исправлены две ошибки, при этом никакие другие строки программы не отмечены как неверные. Программа после исправлений для всех натуральных чисел N, не превосходящих 109, верно получает и выводит преобразованное число. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. | 3 |
1. Правильно выполнены два действия из трёх (исправлены обе ошибки, но в первом пункте задания не приведён ответ или выполнен пункт 1 и верно исправлена только одна ошибка). Верное указание на ошибку при её неверном исправлении при этом не засчитывается. 2. Или выполнен пункт 1, а вместо указания на ошибки в программе и их исправления приведён новый верный текст решения, возможно, совершенно не похожий на исходный. | 2 |
Правильно выполнено только одно действие из трёх, то есть либо только выполнен пункт 1, либо он не выполнен или выполнен неверно и верно исправлена только одна ошибка программы путём её явного указания и исправления или в новом тексте программы. | 1 |
Все пункты задания выполнены неверно (ответ на пункт 1 не приведён или приведён неверно, ошибки не найдены или найдены, но не исправлены, или исправлены неверно). | 0 |
Максимальный балл | 3 |
Требовалось написать программу, при выполнении которой с клавиатуры считывается координата точки на прямой (x – действительное число) и определяется принадлежность этой точки одному из выделенных отрезков В и D (включая границы). Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бейсик | Паскаль |
INPUT x IF x17 THEN IF x5 THEN IF x=-1 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END | var x: real; begin readln(x); if x17 then if x5 then if x=-1 then write('принадлежит') else write('не принадлежит') end. |
Си | Алгоритмический |
void main(void) { float x; scanf("%f",&x); if(x17) if(x5) if(x=-1) printf("принадлежит"); else printf("не принадлежит"); } | алг нач вещ x ввод x если x17 то если x5 то если x=-1 то вывод 'принадлежит' иначе вывод 'не принадлежит' все все все кон |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D и E). Границы (точки –1, 5, 11 и 17) принадлежат заштрихованным областям (B и D соответственно).
Область | Условие 1 (x | Условие 2 (x | Условие 3 (x= –1) | Программа выведет | Область обрабатывается верно |
A | | | | | |
B | | | | | |
C | | | | | |
D | | | | | |
E | | | | | |
В столбцах условий укажите «да», если условие выполнится; «нет», если условие не выполнится; «—» (прочерк), если условие не будет проверяться; «не изв.», если программа ведёт себя по-разному для разных значений, принадлежащих данной области. В столбце «Программа выведет» укажите, что программа выведет на экран. Если программа ничего не выводит, поставьте «—» (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите «не изв.». В последнем столбце укажите «Да» или «Нет».
2. Укажите, как нужно доработать программу, чтобы не было случаев её неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Пояснение.
Область | Условие 1 (x | Условие 2 (x | Условие 3 (x= –1) | Программа выведет | Область обрабатывается верно |
A | Да | Да | Нет | Не принадлежит | Да |
B | Да | Да | Да | Принадлежит | Да |
C | Да | Нет | − | − | Нет |
D | Да | Нет | − | − | Нет |
E | Нет | − | − | − | Нет |
2) Заменим условный переход на такой:
if (x = -1) and (x = 11) and (x
write(‘принадлежит’)
else
write (‘не принадлежит);
Вариант 2
В задаче требуется выполнить три действия. 1. Указать ответ программы при данном вводе. Это действие считается выполненным, если указан верный результат работы программы при заданном входном значении. Экзаменуемый не обязан объяснять, как получен этот результат, достаточно указать верное число. 2. Указать пример верной работы программы. Это действие считается выполненным, если указано число, при вводе которого выводится верный результат, и сам этот результат. Экзаменуемый не обязан пояснять этот результат, описывать общую закономерность и объяснять механизм работы программы. 3. Найти и исправить ошибки в программе. Это действие считается выполненным, если верно указаны обе ошибки и предложены верные варианты исправления, при этом никакие верные строки программы не указаны в качестве неверных. В исправленной строке допускаются незначительные синтаксические ошибки (лишние или пропущенные знаки препинания, неточные написания служебных слов языка). Ошибка считается исправленной, если выполнены оба следующих условия: а) правильно указана строка с ошибкой; б) указан такой новый вариант строки, что при исправлении другой ошибки получается правильная программа.
Критерии оценивания выполнения задания | Баллы |
Выполнены все три необходимых действия, и ни одна верная строка не указана в качестве ошибочной. | 3 |
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций. 1. Выполнены два первых действия, найдена и исправлена одна ошибка в программе, ни одна верная строка не названа ошибочной. 2. Выполнены два первых действия, найдены и исправлены две ошибки в программе, одна верная строка названа ошибочной. 3. Выполнено одно из первых двух действий, найдены и исправлены две ошибки в программе, ни одна верная строка не названа ошибочной. | 2 |
Не выполнены условия, позволяющие поставить 2 или 3 балла. При этом имеет место один из следующих случаев. 1. Выполнены два первых действия. При этом несущественно, насколько правильно выполнено третье действие. 2. Найдены и исправлены две ошибки в программе, не более чем одна верная строка названа ошибочной. При этом несущественно, насколько правильно выполнены действия 1 и 2. 3. Выполнено одно из двух первых действий. Исправлена одна из двух ошибок. Не более чем одна верная строка названа ошибочной. | 1 |
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла. | 0 |
Максимальный балл | 3 |
Дано целое положительное число N, не превосходящее 1000. Необходимо определить, является ли это число степенью числа 4. То есть требуется определить, существует ли такое целое число К, что 4K = N, и вывести это число либо сообщение, что такого числа не существует. Для решения этой задачи ученик написал программу, но, к сожалению, его программа оказалась неверной.
var n, k: integer;
begin read(n);
k := 0;
while n mod 4 = 0 do begin
k := k + n div 4;
n := n div 4; end;
if n
else writeln('He существует')
end.
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 16.
2. Приведите пример числа, при вводе которого приведённая программа напечатает то, что требуется.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Пояснение.
1) Выведет 5.
2) 4
3) Ошибочно k:= k + n div 4;
исправлено k:= k + 1
ошибочно if n
исправлено if n = 1 then
вариант 3
Критерии оценивания выполнения задания | Баллы |
Выполнены все три необходимых действия, и ни одна верная строка не указана в качестве ошибочной. | 3 |
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций. 1. Выполнены два первых действия, найдена и исправлена одна ошибка в программе, ни одна верная строка не названа ошибочной. 2. Выполнены два первых действия, найдены и исправлены две ошибки в программе, одна верная строка названа ошибочной. 3. Выполнено одно из первых двух действий, найдены и исправлены две ошибки в программе, ни одна верная строка не названа ошибочной. | 2 |
Не выполнены условия, позволяющие поставить 2 или 3 балла. При этом имеет место один из следующих случаев. 1. Выполнены два первых действия. При этом несущественно, насколько правильно выполнено третье действие. 2. Найдены и исправлены две ошибки в программе, не более чем одна верная строка названа ошибочной. При этом несущественно, насколько правильно выполнены действия 1 и 2. 3. Выполнено одно из двух первых действий. Исправлена одна из двух ошибок. Не более чем одна верная строка названа ошибочной. | 1 |
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла. | 0 |
Максимальный балл | 3 |
Дано целое положительное число N. Необходимо определить наименьшее целое число K, для которого выполняется неравенство:
1 + 2 + … + K N.
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная.
Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
DIM N, K AS INTEGER INPUT N K = 1 WHILE N 0 N = N - K K = K + 1 WEND PRINT K END | n = int(input()) k = 1 while n0: n = n - k k = k + 1 print(k) |
Паскаль | Алгоритмический язык |
var n, k: integer; begin read(n); k := 1; while n0 do begin n := n- k; k := k + 1; end; writeln(k) end. | алг нач цел n, k ввод n k := 1 нц пока n0 n := n - k k := k + 1 кц вывод k кон |
Си |
#include int main(){ int n, k; scanf("%d",&n); k = 1; while (n0) { n = n - k; k = k + 1; } printf("%d", k); return 0; } |
Последовательно выполните следующее.
1. Приведите пример числа N, при вводе которого программа выведет неверный ответ. Укажите верный ответ и ответ, который выведет программа.
2. Приведите пример числа N, при вводе которого программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько). Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Пояснение.
1. Примеры чисел, при вводе которых программа выводит неверный ответ:
Значение N | Верный ответ | Ответ программы |
2 | 2 | 3 |
4 | 3 | 4 |
5 | 3 | 4 |
7 | 4 | 5 |
2. Примеры чисел, при вводе которых программа выводит верный ответ:
Значение N | Верный ответ | Ответ программы |
1 | 2 | 2 |
3 | 3 | 3 |
6 | 4 | 4 |
10 | 5 | 5 |
Заметим, что программа выдаёт верный ответ для тех значений N, которые можно представить в виде суммы 1 + 2 + … + K. При K = 1, 2, 3, 4 получим примеры, приведённые в таблице. Во всех остальных случаях программа выдаёт неверный ответ.
3. Программа содержит две ошибки:
1) неверное условие цикла;
2) неверный вывод результата (выводится значение, на 1 превышающее верное).
Пример исправления для языка Паскаль:
Первая ошибка:
while n0 do begin
Исправленная строка:
while n=0 do begin
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(k-1)
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.
Вариант 4
Критерии оценивания выполнения задания | Баллы |
Правильно выполнены все три действия. | 3 |
Правильно выполнены два действия из трех. | 2 |
Не выполнены условия, позволяющие поставить 2 или 3 балла, однако выполнено одно из следующих условий. 1. Выполнено одно действие из трёх. 2. Представлен новый верный текст программы, возможно, совершенно не похожий на исходный. | 1 |
Все пункты задания выполнены неверно или отсутствуют. | 0 |
Максимальный балл | 3 |
Требовалось написать программу, при выполнении которой с клавиатуры считывается натуральное число N, не превосходящее 109, и выводится сумма цифр этого числа. Программист торопился и написал программу неправильно. (Ниже для Вашего удобства программа представлена на четырёх языках программирования.)
Бэйсик | Паскаль |
DIM N AS LONG INPUT N sum = 0 WHILE N = 9 digit = N MOD 10 sum = sum + digit N = N \ 10 WEND PRINT sum END | var N: longint; digit, sum: integer; begin readln(N); sum := 0; while N = 9 do begin digit := N mod 10; sum := sum + digit; N := N div 10; end; writeln(sum); end. |
Си | Алгоритмический язык |
#include int main() { long int N; int digit, sum; scanf("%ld", &N); sum = 0; while (N = 9) { digit = N % 10; sum = sum + digit; N = N / 10; } printf("%d", sum); } | алг нач цел N, digit, sum ввод N sum := 0 нц пока N = 9 digit := mod(N, 10) sum := sum + digit N := div(N, 10) кц вывод sum кон |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 352.
2. Найдите все ошибки в этой программе (их может быть одна или несколько). Укажите все строки (одну или более), содержащие ошибки, и для каждой такой строки приведите правильный вариант. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
3. Укажите одно число для которого эта программа будет работать верно.
Пояснение.
1. Программа выведет число 7 (как сумму чисел 2 и 5).
2. В качестве ответа для остальных чисел программа выдаёт сумму всех цифр, кроме старшей. Возможный (не единственный) вариант исправления для языка Паскаль: исправление условия продолжения цикла на while (N = 1) do или while (N 0) do. При этом замена на while (N = 0) do корректной не является.
3. Программа работает верно для всех чисел, начинающихся на 9, в том числе для 9. [Достаточно указать любое такое число.]
Указания по оцениванию.
Обратите внимание! В задаче требовалось выполнить три действия.
Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия.
1. Верно указано, что именно выведет программа при указанных в условии входных данных.
2. Указано число, при котором программа работает верно.
3. Указаны все строки (одна или более), в которые нужно внести исправления, и эти исправления внесены, при этом получена верно работающая программа.
При выполнении действия 3 верное указание на ошибку при неверном её исправлении не засчитывается.
Обратите внимание! Выбор ошибочных строк может быть выполнен не единственным способом. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения.
Вариант 5
Критерии оценивания выполнения задания | Баллы |
Выполнены все четыре необходимых действия, и ни одна верная строка не указана в качестве ошибочной | 3 |
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций: а) выполнены три из четырёх необходимых действий. Ни одна верная строка не указана в качестве ошибочной; б) выполнены все четыре необходимых действия. Указано в качестве ошибочной не более одной верной строки | 2 |
Не выполнены условия, позволяющие поставить 2 или 3 балла. Выполнены два необходимых действия из четырёх | 1 |
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла | 0 |
Максимальный балл | 3 |
На обработку поступает натуральное число, не превышающее 109. Нужно написать программу, которая выводит на экран сумму цифр числа, кратных трём. Если в числе нет таких цифр, требуется на экран вывести «NO». Программист написал программу неправильно. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
DIM N, DIGIT, SUM AS LONG INPUT N SUM = N MOD 10 WHILE N 0 DIGIT = N MOD 10 IF DIGIT MOD 3 = 0 THEN SUM = DIGIT END IF N = N \ 10 WEND IF SUM 0 THEN PRINT SUM ELSE PRINT "NO" END IF | N = int(input()) sum = N % 10 while N 0: digit = N % 10 if digit % 3 == 0: sum = digit N = N // 10 if sum 0: print(sum) else: print("NO") |
Паскаль | Алгоритмический язык |
var N, digit, sum: longint; begin readln(N); sum := N mod 10; while N 0 do begin digit := N mod 10; if digit mod 3 = 0 then sum := digit; N := N div 10; end; if sum 0 then writeln(sum) else writeln('NO') end. | алг нач цел N, digit, sum ввод N sum := mod(N, 10) нц пока N 0 digit := mod(N,10) если mod(digit, 3) = 0 то sum := digit все N := div(N,10) кц если sum 0 то вывод sum иначе вывод "NO" все кон |
Си |
#include int main() { int N, digit, sum; scanf("%d", &N); sum = N % 10; while (N 0) { digit = N % 10; if (digit % 3 == 0) sum = digit; N = N / 10; } if (sum 0) printf("%d", sum); else printf("NO"); return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе числа 578.
2. Приведите пример такого трёхзначного числа, при вводе которого программа выдаёт верный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е. приведите правильный вариант строки. Достаточно указать ошибки и способ их исправления для одного языка программирования.
Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.
Пояснение.
Решение использует запись программы на Паскале. Допускается использование программы на любом из четырёх других языков программирования.
1. Программа выведет число 8.
2. Программа выдаёт правильный ответ, например, для числа 357.
Программа работает неправильно из-за неверной начальной инициализации суммы и неверного увеличения суммы. Соответственно, программа будет работать верно, если в числе ровно одна кратная 3 цифра или таких цифр вообще нет и при этом число заканчивается на 0.
3. В программе есть две ошибки.
Первая ошибка: неверная инициализация суммы (переменная sum).
Строка с ошибкой:
sum := N mod 10;
Верное исправление:
sum := 0;
Вторая ошибка: неверное увеличение суммы.
Строка с ошибкой:
sum := digit;
Верное исправление:
sum := sum + digit;
вариант 6
Критерии оценивания выполнения задания | Баллы |
Выполнены все три необходимых действия, и ни одна верная строка не указана в качестве ошибочной. | 3 |
Не выполнены условия, позволяющие поставить 3 балла. Имеет место одна из следующих ситуаций. 1. Выполнены два первых действия, найдена и исправлена одна ошибка в программе, ни одна верная строка не названа ошибочной. 2. Выполнены два первых действия, найдены и исправлены две ошибки в программе, одна верная строка названа ошибочной. 3. Выполнено одно из первых двух действий, найдены и исправлены две ошибки в программе, ни одна верная строка не названа ошибочной. | 2 |
Не выполнены условия, позволяющие поставить 2 или 3 балла. При этом имеет место один из следующих случаев. 1. Выполнены два первых действия. При этом несущественно, насколько правильно выполнено третье действие. 2. Найдены и исправлены две ошибки в программе, не более чем одна верная строка названа ошибочной. При этом несущественно, насколько правильно выполнены действия 1 и 2. 3. Выполнено одно из двух первых действий. Исправлена одна из двух ошибок. Не более чем одна верная строка названа ошибочной. | 1 |
Не выполнены условия, позволяющие поставить 1, 2 или 3 балла. | 0 |
Максимальный балл | 3 |
Даны целые положительные числа M и N. Необходимо определить количество таких целых чисел K, для которых выполняется неравенство
Для решения этой задачи ученик написал программу, но, к сожалению, его программа неправильная. Ниже эта программа для Вашего удобства приведена на пяти языках программирования.
Бейсик | Python |
DIM M, N, K, T AS INTEGER INPUT M, N K = 1 T = 1 WHILE K*K*K N IF K*K*K M THEN T = T + 1 K = K + 1 WEND PRINT T END | m = int(input()) n = int(input()) k = 1 t = 1 while k*k*k if k*k*k m: t = t+1 k = k + 1 print(t) |
Паскаль | Алгоритмический язык |
var m, n, k, t: integer; begin read(m, n); k := 1; t := 1; while k*k*k n do begin if k*k*k m then t := t + 1; k := k + 1; end; writeln(t) end. | алг нач цел m, n, k, t ввод m, n k := 1 t := 1 нц пока k*k*k n если k*k*k m то t := t+1 все k := k+1 кц вывод t кон |
Си |
#include int main(){ int m, n, k, t; scanf("%d %d", &m, &n); k = 1; t = 1; while (k*k*k n) { if (k*k*k m) t = t + 1; k = k + 1; } printf("%d", t); return 0; } |
Последовательно выполните следующее.
1. Напишите, что выведет эта программа при вводе M = 10 и N = 100.
2. Приведите пример таких чисел M и N, при вводе которых программа выведет верный ответ. Укажите этот ответ.
3. Найдите в программе все ошибки (их может быть одна или несколько).
Для каждой ошибки выпишите строку, в которой она допущена, и приведите эту же строку в исправленном виде.
Достаточно указать ошибки и способ их исправления для одного языка программирования. Обратите внимание: Вам нужно исправить приведённую программу, а не написать свою. Вы можете только заменять ошибочные строки, но не можете удалять строки или добавлять новые. Заменять следует только ошибочные строки: за исправления, внесённые в строки, не содержащие ошибок, баллы будут снижаться.
Пояснение.
1. При вводе M = 10 и N = 100 программа выведет число 3.
2. Примеры чисел, при вводе которых программа выводит верный ответ:
M и N | Верный ответ | Ответ программы |
1, 10 | 2 | 2 |
8, 64 | 3 | 3 |
Пример исправления для языка Паскаль
Первая ошибка: t := 1;
Исправленная строка: t := 0;
Вторая ошибка: if k*k*k m
Исправленная строка: if k*k*k = m
В программах на других языках ошибочные строки и их исправления аналогичны.
Незначительной опиской, не влияющей на оценку, следует считать отсутствие служебных слов и знаков после содержательной части исправления.
Вариант 7
Критерии оценивания выполнения задания | Баллы |
Обратите внимание! В задаче требовалось выполнить три действия: указать для каждой области, как будет работать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верное заполнение предложенной таблицы. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого условия программа не выдавала ничего (отсутствует ветвь ELSE). Исправлением этой ошибки может быть либо добавление ветви ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений «принадлежит» или «не принадлежит» для любых пар (x,y), при этом программа не стала работать хуже, чем раньше, то есть для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведенных трех ограничений не достаточно для описания двух областей (потеряно условие x*x + y*y | 3 |
1. Правильно выполнены два действия из трех (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «x*x + y*y | 2 |
Правильно выполнено только одно действие из трех, то есть, либо только приведена таблица, которая содержит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот). | 1 |
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки в двух и более строках, программа не приведена, либо ни одна из двух ошибок не исправлена). | 0 |
Максимальный балл | 3 |
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Бэйсик | Паскаль |
INPUT x, у IF y=x*x-2 THEN IF y4-x*x THEN IF x=0 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" END IF END IF END IF END | var х,у: real; begin readln(х,у); if у=х*х-2 then if у4-х*х then if x=0 then write('принадлежит') else write('не принадлежит' end. |
Си | Алгоритмический язык |
#include void main(){ float x,у; scanf("%f %f",&x,&y); if (y=x*x-2) if (y4-x*x) if (x=0) printf("принадлежит"); else printf("не принадлежит"); } | алг нач вещ х,у ввод х,у если у=х*х-2 то если у4-х*х то если х=0 то вывод 'принадлежит' иначе вывод 'не принадлежит' все все все кон |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (А, В, С, D, Е, F, G, Н). Точки, лежащие на границах областей, отдельно не рассматривать. Границами областей А и Н являются параболы и ось Оу. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (y = x*x-2) | Условие 2 (y | Условие 3 (x = 0) | Программа выведет | Область обрабатывается верно |
A | | | | | |
| | | | | |
| | | | | |
B | | | | | |
| | | | | |
| | | | | |
| | | | | |
C | | | | | |
| | | | | |
| | | | | |
| | | | | |
D | | | | | |
| | | | | |
| | | | | |
| | | | | |
E | | | | | |
| | | | | |
| | | | | |
| | | | | |
F | | | | | |
| | | | | |
| | | | | |
| | | | | |
G | | | | | |
| | | | | |
| | | | | |
| | | | | |
H | | | | | |
| | | | | |
| | | | | |
| | | | | |
Пояснение.
Содержание верного ответа и указания по оцениванию (допускаются иные формулировки ответа, не искажающие его смысла)
Элементы ответа:
1)
Область | Условие 1 (y=x*x-2) | Условие 2 (y | Условие 3 (x=0) | Программа выведет | Область обрабатывается верно |
A | да | нет | — | — | нет |
В | нет | — | — | — | нет |
С | да | да | нет | не принадлежит | нет |
D | да | да | нет | не принадлежит | да |
Е | да | да | да | принадлежит | да |
F | да | да | да | принадлежит | да |
G | нет | — | — | — | нет |
Н | нет | — | — | — | нет |
2) Возможная доработка (Паскаль):
if (y=0)and(x0)and(y=x*x-2)) then
write('принадлежит')
else
write('не принадлежит')
(могут быть и другие способы доработки).
Вариант 8
Критерии оценивания выполнения задания | Баллы |
Правильно выполнены три пункта задания. приведены примеры чисел для которых программа работает некорректно. Верно приведена лишняя часть. Приведена верная доработка. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. | 3 |
Правильно выполнены два действия из трёх. | 2 |
Правильно выполнено только одно действие из трёх, то есть либо только выполнен пункт 1, либо он не выполнен или выполнен неверно и приведена лишняя часть программы или возможная доработка. | 1 |
Все пункты задания выполнены неверно (ответ на пункт 1 не приведён или приведён неверно, ошибки не найдены или найдены, но не исправлены, или исправлены неверно). | 0 |
Максимальный балл | 3 |
Требовалось написать программу, которая решает неравенство «(x - а) / (bx) 0» относительно x для любых ненулевых чисел а и b , введенных с клавиатуры. Все числа считаются действительными. Программист торопился и написал программу неправильно.
Паскаль | Бейсик | Си |
var a,b,x: real; begin readln(a,b,x); if b0 then write ('x ',a,' или x else if a 0 then write ('0 else write (a, ' end. | INPUT a, b, x IF b 0 THEN PRINT "x ",a," или x ELSE IF a 0 THEN PRINT "0 ELSE PRINT a," ENDIF ENDIF END | void main(void) { float a,b,x; scanf("%f%f%f", &a,&b,&x); if (b 0) printf("x %f или x else if (a0) printf("0 else printf("%f } |
Последовательно выполните три задания:
1) Приведите пример таких чисел а, b, х, при которых программа неверно решает поставленную задачу.
2) Укажите, какая часть программы является лишней.
3) Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, поэтому можно указать любой способ доработки исходной программы).
Пояснение.
1) a = −11, b = 1, x = 0.
Значение x может быть не указано. Значение а может быть любым отрицательным числом, зна¬чение b — любым положительным. Также допустим ответ, что программа работает неправильно при любых положительных b и отрицательных а.
2) Лишняя часть:
не нужно вводить х с клавиатуры; верно: readln(a, b).
3) Возможная доработка:
readln(а, b);
if b 0 then
if а 0 then
write('х ', а, 'или х
else
write('х 0')
else
if а 0 then
write('0 х а)
else
write(а,' х
(могут быть и другие способы доработки).
Вариант 9
Критерии оценивания выполнения задания | Баллы |
Обратите внимание! В задаче требуется выполнить три следующих действия. 1. Указать для каждой области, как будет работать программа - заполнить таблицу. 2. Исправить ошибку, связанную с неверной расстановкой операторных скобок (отсутствуют случаи ELSE). Исправлением этой ошибки может быть либо добавление случая ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений «принадлежит» или «не принадлежит» для любых чисел x и y, при этом программа не стала работать хуже, чем раньше, то есть для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Исправить ошибку в проверяемых условиях. В сложных случаях это действие считается выполненным, если верно определена закрашенная область, то есть программа выводит сообщение «принадлежит» для всех точек закрашенной области и только для них, для точек вне закрашенной области программа выводит «не принадлежит» или не выводит ничего. В целом, критерий оценки работ такой: количество баллов равно количеству выполненных действий. Детально критерии для каждого случая рассмотрены ниже. Задание выполнено полностью: 1) Правильно заполнена вся таблица. 2) Написана правильно работающая программа(исправлены обе ошибки), т.е. программа для всех пар чисел x, y верно определяет принадлежность точки закрашенной области. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. | 3 |
Правильно выполнены два действия из трех. При этом: а) Действие по заполнению таблицы засчитывается, даже если ошибки есть, но не более, чем в одной строке. б) При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «y=-x» один раз используется «y-x». в) Если ученик написал программу, которая отличается от правильной программы (с учетом п.б) только расстановкой скобок в логических выражениях (например, неправильно учтены приоритеты операций), то считается, что выполнено одно действие по исправлению ошибок из двух. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. | 2 |
Правильно выполнено только одно действие из трех. При этом: а) Действие по заполнению таблицы засчитывается, если ошибки есть не более, чем в двух строках (в отличие от предыдущего пункта). б) При написании операций сравнения допускается любое количество неправильных использований строгих/нестрогих неравенств (т.е. не учитывается корректность работы программы на границах областей) в) Если ученик написал программу, которая отличается от правильной программы только расстановкой скобок в логических выражениях (например, неправильно учтены приоритеты операций), то считается, что выполнено одно действие по исправлению ошибок из двух. В работе (во фрагментах программ) допускается наличие отдельных синтаксических ошибок, не искажающих замысла автора решения. | 1 |
Ни один из пунктов задания не выполнен, т.е. не выполнены критерии, позволяющие поставить ученику 1 балл. | 0 |
Максимальный балл | 3 |
Требовалось написать программу, которая вводит с клавиатуры координаты точки на плоскости (х, у — действительные числа) и определяет принадлежность точки заштрихованной области. Программист торопился и написал программу неправильно.
Паскаль | Бейсик |
var х, у: real; begin readln(х, у) ; if х у * у then if х = 0 then if у 1 then write('принадлежит') else write{'не принадлежит') end. | INPUT x, у IF x у * y THEN IF x = 0 THEN IF у 1 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF ENDIF ENDIF END |
Си | Алгоритмический язык |
void main(void) { float х, у; scanf("%f%f", &x, &у); if (x у * у) if (x = 0) if (y 1) printf("принадлежит"); else printf("не принадлежит"); } | алг нач вещ х, у ввод х, у если х у * у то если х = 0 то если у 1 то вывод 'принадлежит' иначе вывод 'не принадлежит' все все все кон |
Последовательно выполните следующее:
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D, E, F, G и H).
Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (x | Условие 2 (x = 0) | Условие 3 (y | Программа выведет | Область обрабатывается верно |
A | | | | | |
В | | | | | |
С | | | | | |
D | | | | | |
Е | | | | | |
F | | | | | |
G | | | | | |
Н | | | | | |
Пояснение.
Элементы ответа:
1.
Область | Условие 1 (x | Условие 2 (x = 0) | Условие 3 (y | Программа выведет | Область обрабатывается верно |
A | да | нет | — | — | нет |
В | да | да | нет | не принадлежит | да |
С | нет | — | — | — | нет |
D | да | да | да | принадлежит | да |
Е | да | нет | — | — | нет |
F | да | да | да | принадлежит | нет |
G | нет | — | — | — | нет |
Н | нет | — | — | — | нет |
2. Возможная доработка (Паскаль):
if (х = 0) and (у = 0) then
write('принадлежит')
else
write('не принадлежит')
(могут быть и другие способы доработки).
Вариант 10
Указания по оцениванию. Обратите внимание! В задаче требовалось выполнить три действия: указать для каждой области, как будет работать программа, что она выведет на экран и правильно ли это (в виде таблицы), и исправить две ошибки. Баллы за данное задание начисляются как сумма баллов за верное выполнение каждого действия. 1. Верное заполнение предложенной таблицы. 2. Неправильное использование условного оператора, в результате чего при невыполнении первого условия программа не выдавала ничего (отсутствует ветвь ELSE). Исправлением этой ошибки может быть либо добавление ветви ELSE к каждому условию IF, либо объединение всех условий IF в одно при помощи конъюнкции. В сложных случаях это действие считается выполненным, если программа выдает одно из двух сообщений «принадлежит» или «не принадлежит» для любых пар (x,y), при этом программа не стала работать хуже, чем раньше, то есть для всех точек, для которых программа ранее выдавала верный ответ, доработанная программа также должна выдавать верный ответ. 3. Приведенных трех ограничений не достаточно для описания двух областей (потеряно условие x*x + y*y
Критерии оценивания выполнения задания | Баллы |
Правильно выполнены оба пункта задания. Исправлены две ошибки. Программа для всех пар (x,y) верно определяет принадлежность точки заштрихованной области. Допускается наличие ошибок в одной из строк таблицы. | 3 |
1. Правильно выполнены два действия из трех (исправлены обе ошибки, но в первом пункте задания не приведена таблица (либо таблица содержит ошибки в двух и более строках), либо приведена таблица (которая содержит ошибки не более чем в одной строке), но исправлена только одна ошибка программы). При написании операций сравнения допускается одно неправильное использование строгих/нестрогих неравенств (считается несущественной ошибкой, погрешностью записи). Например, вместо «x*x + y*y | 2 |
Правильно выполнено только одно действие из трех, то есть, либо только приведена таблица, которая содержит ошибки в не более чем одной строке, либо таблица не приведена (или приведена и содержит ошибки более чем в одной строке), но исправлена одна ошибка программы. При оценивании этого задания на 1 балл допускается не учитывать корректность работы программ на точках границ областей (вместо нестрогих неравенств в решении были использованы строгие неравенства или наоборот). | 1 |
Все пункты задания выполнены неверно (таблица анализа правильности алгоритма не приведена, либо содержит ошибки в двух и более строках, программа не приведена, либо ни одна из двух ошибок не исправлена). | 0 |
Максимальный балл | 3 |
Требовалось написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (х, у — действительные числа) и определяется принадлежность этой точки заданной закрашенной области (включая границы). Программист торопился и написал программу неправильно.
Бейсик | Паскаль |
INPUT х, у IF x*x + у*у 49 THEN IF x*x + у*у = 16 THEN PRINT "принадлежит" ELSE PRINT "не принадлежит" ENDIF END IF END | var x, у: real; begin readln(x,y); if x*x + y*y 49 then if x*x + y*y = 16 then write{'принадлежит') else write{'не принадлежит') end. |
Си | Алгоритмический |
#include void main (void) { float x,y; scanf "% f % f", &x, &y) ; if (x*x + y*y 49) if (x*x + y*y = 16) printf ("принадлежит"); else printf("не принадлежит"); } | алг нач вещ х,у ввод х,у если х*х + у*у 49 то если х*х + у* у = 16 то вывод 'принадлежит' иначе вывод 'не принадлежит' все все кон |
Последовательно выполните следующее.
1. Перерисуйте и заполните таблицу, которая показывает, как работает программа при аргументах, принадлежащих различным областям (A, B, C, D). Точки, лежащие на границах областей, отдельно не рассматривать. В столбцах условий укажите "да", если условие выполнится, "нет", если условие не выполнится, "—" (прочерк), если условие не будет проверяться, "не изв.", если программа ведет себя по-разному для разных значений, принадлежащих данной области. В столбце "Программа выведет" укажите, что программа выведет на экран. Если программа ничего не выводит, напишите "—" (прочерк). Если для разных значений, принадлежащих области, будут выведены разные тексты, напишите "не изв". В последнем столбце укажите "да" или "нет".
2. Укажите, как нужно доработать программу, чтобы не было случаев ее неправильной работы. (Это можно сделать несколькими способами, достаточно указать любой способ доработки исходной программы.)
Область | Условие 1 (х*х+у*у | Условие 2 (х*х+у*у = 16) | Программа выведет | Область обрабатывается верно |
A | | | | |
В | | | | |
С | | | | |
D | | | | |
Пояснение.
1.Таблица:
Область | Условие 1 (х*х+у*у | Условие 2 (х*х+у*у = 16) | Программа выведет | Область обрабатывается верно |
A | да | нет | не принадлежит | нет |
В | да | нет | не принадлежит | да |
С | да | да | принадлежит | да |
D | нет | — | — | нет |
2. Возможная доработка (Паскаль):
if (х*х+у*у = 16) and (х*х+у*у
write('принадлежит') else
write('не принадлежит')
Возможны и другие способы доработки. Пример:
if х*х + у*у = 16 then if x*x + у*у
write{'не принадлежит') else
if x*x + у*у
write('принадлежит')
else
write{'не принадлежит')
Конец формы