В задаче 20.2 из практической части ОГЭ по информатике учащемуся требуется написать программу, которая должна отработать на различных тестах и выдать верный ответ.
В данной статье систематизируются различные условия задач, рассматриваются стандартные алгоритмы, приводятся коды на Паскаль для различных условий, которые обычно встречаются в этих задачах.
Статья 20.2 ОГЭ.docx
Систематизация задач по информатике 20.2 ОГЭ
В задаче 20.2 учащемуся требуется написать программу, которая должна отработать
на различных тестах и выдать верный ответ.
В данной статье хочу систематизировать различные задачи, что, надеюсь, поможет
учащимся при подготовке к ОГЭ.
I
Итак, как правило, учащимся предлагается решить задачу, которая будет находить
сумму, количество, максимум или минимум среди вводимых элементов, удовлетворяющих
какомулибо условию.
Ввод данных осуществляется с помощью цикла с параметром (FOR), если по
условию известно количество вводимых чисел или с помощью цикла с предусловием
(WHILE), если количество вводимых чисел неизвестно, а их ввод заканчивается при вводе
нуля.
Стандартные алгоритмы выглядят так1:
Нахождение сумм:
FOR
WHILE
S:=0;
for i:=1 to N do begin
readln(x);
if <условие> then S:= S+x;
end;
writeln(S);
readln (x);
S:=0;
While x<>0 do begin
if <условие> then S:= S+x;
readln (x);
end;
writeln(S);
Нахождение количества:
FOR
WHILE
k:=0;
for i:=1 to N do begin
readln(x);
if <условие> then k:= k+1;
end;
writeln(k);
readln (x);
k:=0;
While x<>0 do begin
if <условие> then k:= k+1;
readln (x);
end;
writeln(k);
1 Здесь и далее будут приведены коды на ПаскалеНахождение минимума:
FOR
WHILE
min:= 10000;
for i:=1 to N do begin
readln(x);
if x0 do begin
if xmax then max:=x;
end;
writeln(max);
readln (x);
max:=10000;
While x<>0 do begin
if x>max then max:=x;
readln (x);
end;
writeln(max);
При решении данных задач надо не забыть вывести найденный результат и правильно
инициализировать переменные (при нахождении максимума или минимума обычно
ориентируемся на заданный по условию диапазон для исходных данных).
Ниже перечислим условия, которые чаще всего встречаются в заданиях №20.2.
Иногда по условию требуется использовать несколько условий, которые можно
группировать с помощью and/or, а сами условия заключать в скобки.
Условие (русский язык)
Условие (Паскаль)
Отобрать чётные элементы
if x mod 2 = 0 then…
Отобрать нечётные элементы
if x mod 2 <> 0 then…
Отобрать элементы, оканчивающиеся на y
if x mod 10 = y then…
Отобрать элементы, кратные y
if x mod y = 0 then…
Отобрать двузначные элементы
if (x > 9) and (x < 100) then…
Отобрать положительные элементы
if x > 0 then…
Отобрать элементы большие b, меньшие c
if (x > b) and (x < c) then…Итак, комбинируя различные условия и используя основные алгоритмы, можно
решить большинство заданий №20.2.
II
Иногда в задачах требуется вывести найденное значение или вывести «NO», если
такого значения не удалось найти среди введённых чисел последовательности.
FOR
Напишите программу, которая в последовательности натуральных чисел определяет коли
чество чисел, кратных 8 и оканчивающихся на 2 или определяет, что таких чисел нет. Про
грамма получает на вход количество чисел в последовательности, а затем сами числа. Ко
личество чисел не превышает 1000. Введённые числа по модулю не превышают 30 000. Про
грамма должна вывести количество чисел, кратных 8 и оканчивающихся на 2 или вывести
«NO», если таких чисел нет.
WHILE
Напишите программу, которая в последовательности натуральных чисел определяет сумму
всех чисел, кратных 8 и оканчивающихся на 2 или сообщает, что таких чисел нет. Програм
ма получает на вход натуральные числа, количество введённых чисел неизвестно, последо
вательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в
последовательность). Количество чисел не превышает 100. Введённые числа не превышают
300. Программа должна вывести сумму всех чисел, кратных 8 и оканчивающихся на 2 или
вывести «NO», если таких чисел нет.
В таких задачах в конце программы надо не просто вывести результат, а вывести его
исходя из условия, например:
If k=0 then writeln (‘NO’) else writeln (k);
Есть ещё одна разновидность задач, когда требуется вывести не только ответ на основной
вопрос, но и на дополнительный.
III
MIN/MAX
Напишите программу, которая в последовательности натуральных чисел определяет мини
мальное число, кратное 5. Программа получает на вход количество чисел в
последовательности, а затем сами числа. В последовательности всегда имеется число, крат
ное 5. Количество чисел не превышает 1000. Введённые числа не превышают 30 000. Про
грамма должна вывести минимальное число, кратное 5. Если в последовательности хотя бы
одно число было равным 15, выведите «YES», иначе выведите «N0».В таком случае рекомендуется ввести дополнительную переменную (так называемый
«флажок»), которая будет запоминать: встречались ли такие значения среди вводимых
чисел последовательности.
Решение для приведённой выше задачи:
Var i,x,min,N,F:integer;
begin
readln(N);
min:=30001;
F:=0; // флажок
for i:=1 to N do
begin
readln (x);
if (x
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с
договором-офертой сайта. Вы можете
сообщить о нарушении.