Задания ЕГЭ. Исправление ошибок в программе

Содержание

Слайд 2

24-2 Требовалось на­пи­сать программу, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры вво­дит­ся по­сле­до­ва­тель­ность

24-2

Требовалось на­пи­сать программу, при вы­пол­не­нии ко­то­рой с кла­ви­а­ту­ры вво­дит­ся по­сле­до­ва­тель­ность из

шести не­от­ри­ца­тель­ных целых чисел, не пре­вы­ша­ю­щих 106, под­счи­ты­ва­ет­ся и вы­во­дит­ся сумма введённых чётных чисел или 0, если чётных чисел в по­сле­до­ва­тель­но­сти нет. Уче­ник на­пи­сал такую программу:
Слайд 3

24-2 программа var n, s: longint; i: integer; Begin s:=1; for

24-2 программа

var n, s: longint; i: integer;
Begin
s:=1;
for

i:=1 to 6 do
begin
readln(n);
if i mod 2 = 0 then s := s + n;
end;
write(s);
end.
Слайд 4

24-2 задание к программе Последовательно вы­пол­ни­те следующее. 1. Напишите, что вы­ве­дет

24-2 задание к программе

Последовательно вы­пол­ни­те следующее.
1. Напишите, что вы­ве­дет эта про­грам­ма

при вводе по­сле­до­ва­тель­но­сти 1, 1, 2, 3, 5, 8.
2. При­ве­ди­те при­мер последовательности, при вводе ко­то­рой про­грам­ма вы­даст вер­ный ответ.
3. Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или несколько).
Для каж­дой ошиб­ки вы­пи­ши­те строку, в ко­то­рой она допущена, и при­ве­ди­те эту же стро­ку в ис­прав­лен­ном виде. Об­ра­ти­те внимание: Вам нужно ис­пра­вить приведённую программу, а не на­пи­сать свою. Вы мо­же­те толь­ко за­ме­нять оши­боч­ные строки, но не мо­же­те уда­лять стро­ки или до­бав­лять новые. За­ме­нять сле­ду­ет толь­ко оши­боч­ные строки: за исправления, внесённые в строки, не со­дер­жа­щие ошибок, баллы будут снижаться.
Слайд 5

24-2 Решение Первая стро­ка с ошибкой: s:=1; Исправленная строка: s:=0; Вторая

24-2 Решение

Первая стро­ка с ошибкой:
s:=1;
Исправленная строка:
s:=0;
Вторая стро­ка с ошибкой:
if i mod

2 = 0 then
Исправленная строка:
if n mod 2 = 0 then
Слайд 6

24-3 Дано целое по­ло­жи­тель­ное число N. Не­об­хо­ди­мо опре­де­лить наи­мень­шее целое число

24-3

Дано целое по­ло­жи­тель­ное число N. Не­об­хо­ди­мо опре­де­лить наи­мень­шее целое число K, для ко­то­ро­го

вы­пол­ня­ет­ся неравенство:
1 + 2 + … + K > N.
Для ре­ше­ния этой за­да­чи уче­ник на­пи­сал программу, но, к сожалению, его про­грам­ма неправильная.
Слайд 7

24-3 Программа var n, k: integer; begin read(n); k := 1;

24-3 Программа

var n, k: integer;
begin   
read(n);
  k :=

1;  
 while n>0 do
begin
    n := n-k;     k := k+1;
  end;
  writeln(k)
end.
Слайд 8

24-3 Задание Последовательно вы­пол­ни­те следующее. 1. При­ве­ди­те при­мер числа N, при

24-3 Задание

Последовательно вы­пол­ни­те следующее.
1. При­ве­ди­те при­мер числа N, при вводе ко­то­ро­го про­грам­ма

вы­ве­дет не­вер­ный ответ. Ука­жи­те вер­ный ответ и ответ, ко­то­рый вы­ве­дет программа.
2. При­ве­ди­те при­мер числа N, при вводе ко­то­ро­го про­грам­ма вы­ве­дет вер­ный ответ. Ука­жи­те этот ответ.
3. Най­ди­те в про­грам­ме все ошиб­ки (их может быть одна или несколько). Для каж­дой ошиб­ки вы­пи­ши­те строку, в ко­то­рой она допущена, и при­ве­ди­те эту же стро­ку в ис­прав­лен­ном виде.
Достаточно ука­зать ошиб­ки и спо­соб их ис­прав­ле­ния для од­но­го языка программирования.
Обратите внимание: Вам нужно ис­пра­вить приведённую программу, а не на­пи­сать свою. Вы мо­же­те толь­ко за­ме­нять оши­боч­ные строки, но не мо­же­те уда­лять стро­ки или до­бав­лять новые. За­ме­нять сле­ду­ет толь­ко оши­боч­ные строки: за исправления, внесённые в строки, не со­дер­жа­щие ошибок, баллы будут снижаться.
Слайд 9

24-3 Решение 1. Примеры чисел, при вводе которых программа выводит неверный ответ:

24-3 Решение

1. Примеры чисел, при вводе которых программа выводит неверный ответ:

Слайд 10

24-3 Решение 2. Примеры чисел, при вводе которых программа выводит верный

24-3 Решение

2. Примеры чисел, при вводе которых программа выводит верный ответ:
Заметим,

что программа выдаёт верный ответ для тех значений N, которые можно представить в виде суммы 1 + 2 + … + K. При K = 1, 2, 3, 4 получим примеры, приведённые в таблице. Во всех остальных случаях программа выдаёт неверный ответ.
Слайд 11

24-3 Решение 3. Программа содержит две ошибки: 1) неверное условие цикла;

24-3 Решение

3. Программа содержит две ошибки:
1) неверное условие цикла;
2) неверный вывод

результата (выводится значение, на 1 превышающее верное).
Пример ис­прав­ле­ния для языка Паскаль:
Первая ошибка:
while n>0 do begin
Исправленная строка:
while n>=0 do begin
Вторая ошибка:
writeln(k)
Исправленная строка:
writeln(k-1)
Незначительной опиской, не вли­я­ю­щей на оценку, сле­ду­ет счи­тать от­сут­ствие слу­жеб­ных слов и зна­ков после со­дер­жа­тель­ной части исправления.
Слайд 12

24-1 На об­ра­бот­ку поступает по­сле­до­ва­тель­ность из четырёх не­от­ри­ца­тель­ных целых чисел (некоторые

24-1

На об­ра­бот­ку поступает по­сле­до­ва­тель­ность из четырёх не­от­ри­ца­тель­ных целых чисел (некоторые числа

могут быть одинаковыми). Нужно на­пи­сать программу, ко­то­рая выводит на экран ко­ли­че­ство чётных чисел в ис­ход­ной последовательности и мак­си­маль­ное чётное число. Если чётных чисел нет, тре­бу­ет­ся на экран вы­ве­сти «NO». Известно, что вво­ди­мые числа не пре­вы­ша­ют 1000. Про­грам­мист написал про­грам­му неправильно. Ниже эта на­пи­сан­ная им про­грам­ма для Ва­ше­го удобства при­ве­де­на на пяти язы­ках программирования.
Слайд 13

const n = 4; var i, x: integer; maximum, count: integer;

const n = 4;
var i, x: integer; maximum, count: integer;

begin   
count := 0;   maximum := 1000;   
for i := 1 to n do   
begin     
read(x);    
 if x mod 2 = 0 then    
 begin      
count := count + 1;
if x > maximum then maximum := i
    end   
end;  
 if count > 0 then   begin  
 writeln(count);     writeln(maximum)   
end  
 else     writeln('NO')
end.
Слайд 14

Последовательно вы­пол­ни­те следующее. 1. Напишите, что вы­ве­дет эта про­грам­ма при вводе

Последовательно вы­пол­ни­те следующее.
1. Напишите, что вы­ве­дет эта про­грам­ма при вводе последовательности:

2 9 4 3
2. При­ве­ди­те пример такой последовательности, со­дер­жа­щей хотя бы одно чётное число, что, не­смот­ря на ошибки, приведённая про­грам­ма печатает пра­виль­ный ответ.
3. Най­ди­те все ошиб­ки в этой про­грам­ме (их может быть одна или несколько). Известно, что каж­дая ошибка за­тра­ги­ва­ет только одну стро­ку и может быть ис­прав­ле­на без из­ме­не­ния других строк. Для каж­дой ошибки:
1) вы­пи­ши­те строку, в ко­то­рой сделана ошибка;
2) укажите, как ис­пра­вить ошибку, т.е. при­ве­ди­те правильный ва­ри­ант строки.
Достаточно ука­зать ошибки и спо­соб их ис­прав­ле­ния для од­но­го языка программирования.
Обратите внимание, что тре­бу­ет­ся найти ошиб­ки в име­ю­щей­ся программе, а не на­пи­сать свою, возможно, ис­поль­зу­ю­щую другой ал­го­ритм решения. Ис­прав­ле­ние ошибки долж­но затрагивать толь­ко строку, в ко­то­рой находится ошибка.
Примечание. 0 – чётное число.
Слайд 15

Решение 1. Программа вы­ве­дет 2 1000. 2. Например, набор 2 4

Решение

1. Программа вы­ве­дет 2 1000.
2. Например, набор 2 4 5 1000.
3.

Пример ис­прав­ле­ний для языка Паскаль
Первая ошибка: 
maximum := 1000; 
Исправленная строка: maximum := -1;
Вторая ошибка: maximum := i
Исправленная строка: maximum := x
Слайд 16

24-4 Для за­дан­но­го по­ло­жи­тель­но­го ве­ще­ствен­но­го числа A не­об­хо­ди­мо найти мак­си­маль­ное целое

24-4

Для за­дан­но­го по­ло­жи­тель­но­го ве­ще­ствен­но­го числа A не­об­хо­ди­мо найти мак­си­маль­ное целое число

K, при ко­то­ром вы­пол­ня­ет­ся неравенство
Для ре­ше­ния этой за­да­чи уче­ник на­пи­сал такую программу.
Слайд 17

24-4 Программа var a, s: real; k: integer; Begin read(a); k

24-4 Программа

var a, s: real; k: integer;
Begin
    read(a);
    k :=

24-4 Решение (продолжение) 3. Про­грам­ма со­дер­жит две ошибки. 1) Не­вер­ная инициализация.

S долж­но быть равно нулю.
В приведённом ва­ри­ан­те вы­чис­лен­ная сумма ока­зы­ва­ет­ся на 1 боль­ше пра­виль­но­го значения.
Строка с ошибкой:
        s := 1;
Правильная строка:
        s := 0;
2) Не­вер­ное опре­де­ле­ние ответа. Приведённая про­грам­ма на­хо­дит не мак­си­маль­ное K, при ко­то­ром вы­пол­ня­ет­ся неравенство, а минимальное, при ко­то­ром оно не выполняется, то есть уве­ли­чи­ва­ет вер­ное зна­че­ние на 1.
Кроме того, ис­поль­зо­ван­ный по­ря­док дей­ствий в цикле (увеличение K после уве­ли­че­ния S) при­во­дит к уве­ли­че­нию ещё на 1. Это можно было бы исправить, из­ме­нив по­ря­док дей­ствий в цикле и умень­шив K после за­вер­ше­ния цикла, но эти дей­ствия не раз­ре­ше­ны по усло­вию задачи.
Поэтому для ис­прав­ле­ния ошиб­ки можно про­сто скор­рек­ти­ро­вать зна­че­ние при выводе.
Строка с ошибкой:
        write(k);
Правильная строка:
        write(k-2);

27-1 Условие На спут­ни­ке «Фотон» уста­нов­лен прибор, пред­на­зна­чен­ный для из­ме­ре­ния энер­гии