ОГЭ Информатика: Разбор задания №6 (2022)

Методическая разработка для подготовки к ОГЭ по информатике.
Тема:
"Разбор различных вариантов задания №6 ОГЭ – информатика 2022"
Автор: Ковтун Евгения Валентиновна –
учитель математики и информатики первой
квалификационной категории, МБОУ СОШ №24
г. Уссурийска.
г. Уссурийск, 2022 год
Цель разработки: подготовка к ОГЭ по информатике; научиться решать задания
№6, различных видов.
Задачи:



Научиться выполнять заданный алгоритм в виде программы на языке
программирования;
Повторить логические связки в сложных условиях на языке
программирования;
Рассмотреть варианты заданий №6 представленных на экзамене в форме ОГЭ.
Ход занятия:
Небольшое отступление:
Решила это сделать, так как при подготовке учащихся к экзаменам, столкнулась
с тем, что в различных источниках в интернете, и в сборниках различных авторов
обычно приводятся однотипные задания, что очень неудобно при подготовке, и
отнимает много времени.
В этом материале, я постаралась подобрать различные варианты данного
задания. Всего получилось 10 заданий. Данный материал рекомендую использовать
на двух, трех или даже четырех занятиях, и подобрать примеры для тренировки.
(можно воспользоваться списком используемых мной источников)
Так как в этом задании приводится целых 5 языков программирования, то при
подготовке к решению данных заданий, я всегда говорю обучающимся, чтобы они
акцентировали свое внимание на одном виде языка программирования, максимум на
двух. Так как в нашей школе изучают язык Паскаль, то мы акцент делаем на
Алгоритмический язык или на язык Паскаль.
Так учащимся проще, тем более нужно учитывать, что ОГЭ по информатике
часто выбирают не потому, что хорошо знают предмет, а потому что нужно набрать
всего 5 проходных баллов!!! Надеюсь мой методический материал принесет много
пользы и педагогам и обучающимся.
Итак, рассмотрим различные варианты задания №6.
Задание 1 (начнем с простого, логическое сложение ИЛИ):
Паскаль
Алгоритмический язык
алг
var s, t: integer;
нач
цел s, t
begin
readln(s);
ввод s
readln(t);
ввод t
if (s > 10) or (t > 10) если s > 10 или t > 10
then writeln('YES') то вывод "YES"
else writeln('NO')
иначе вывод "NO"
end.
все
кон
Объявляются переменные s и t- тип целые (var s, t: integer), затем идет
присваивание значения для переменных s и t ( readln(s),readln(t)), далее условный
оператор Если(if) (s>10 или t>10) то печатаем YES, иначе печатаем NO.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и t вводились следующие пары чисел:
(1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12); (–12, 11); (10, 10); (10, 5).
Сколько было запусков, при которых программа напечатала «YES»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Так как стоит логическое сложение ИЛИ, то программа напечатает «YES» если
хотя бы одно условие выполняется или s>10 или t>10.
Проверяем условие: (для первого объяснения удобно использовать таблицу
и показать ее в презентации)
Пара чисел
s>10
результат
t>10
результат ИЛИ
(1, 2)
Нет
Нет
Нет
1>10
2>10
(11;2)
Нет
11>10
Да
2>10
Да
(1;12)
Нет
1>10
12>10
Да
Да
(11;12)
11>10
Да
12>10
Да
Да
(-11;-12)
Нет
Нет
Нет
-11>10
-12>10
(–11, 12)
Нет
-11>10
12>10
Да
Да
(–12, 11)
Нет
-12>10
11>10
Да
Да
(10;10)
Нет
Нет
Нет
10>10
10>10
(10;5)
Нет
Нет
Нет
10>10
5>10
В дальнейшем учащиеся легко привыкают проверять условия в уме:
(1, 2); (11, 2); (1, 12); (11, 12); (–11, –12); (–11, 12); (–12, 11); (10, 10); (10, 5).
Зачеркнули пары чисел, при которых программа выдаст «NO» (то есть ни одно из
чисел не удовлетворяет условию).
Значит, было 5 запусков, при которых программа напечатала «YES». В качестве
значений переменных s и t в этих случаях вводились следующие пары чисел:
(11, 2); (1, 12); (11, 12); (–11, 12); (–12, 11).
Ответ: 5
Задание 2 (начнем с простого, логическое умножение И):
Паскаль
Алгоритмический язык
алг
var s, t: integer;
нач
цел s, t
begin
readln(s);
ввод s
readln(t);
ввод t
if (s > 5) and (t > 5) если s > 5 и t > 5
then writeln('YES') то вывод "YES"
else writeln('NO')
иначе вывод "NO"
end.
все
кон
Объявляются переменные s и t- тип целые (var s, t: integer), затем идет
присваивание значения для переменных s и t ( readln(s),readln(t)), далее условный
оператор Если(if) (s>5 или t>5) то печатаем YES, иначе печатаем NO.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и t вводились следующие пары чисел:
(6, 8); (3, 5); (–7, 2); (7, 7); (9, 8); (–1, 3); (–4, 5); (6, 9); (2, –1).
Сколько было запусков, при которых программа напечатала «YES»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Так как стоит логическое умножение И, то программа напечатает «YES» если оба
условия выполняются и s>5 и t>5.
Проверяем условия:
(6, 8); (3, 5); (–7, 2); (7, 7); (9, 8); (–1, 3); (–4, 5); (6, 9); (2, –1)
Зачеркнули пары чисел, при которых программа выдаст «NO» (то есть хотя бы одно
из чисел не удовлетворяет условию).
Значит, было 4 запуска, при которых программа напечатала «YES». В качестве
значений переменных s и t в этих случаях вводились следующие пары чисел:
(6, 8); (7, 7); (9, 8); (6, 9).
Ответ: 4
Задание 3: (обычно не вызывает затруднений у учащихся)
Паскаль
Алгоритмический
язык
var s, k: integer;
алг
begin
нач
readln(s);
цел s, k
readln(k);
ввод s
if s >= 2 * k
ввод k
then
writeln если s >= 2 * k
('ДА')
то вывод "ДА"
else
writeln иначе вывод "НЕТ"
('НЕТ')
все
end.
кон
Объявляются переменные s и t- тип
целые (var s, t: integer), затем идет присваивание значения для переменных s и t
( readln(s),readln(t)), далее условный оператор Если(if) (s >= 2 * k) то печатаем
YES, иначе печатаем NO.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и k вводились следующие пары чисел:
(1, 2); (8, 4); (6, −12); (−5, −5); (3, 11); (—10, 12); (—10, −2); (4, 1); (2, 5).
Сколько было запусков, при которых программа напечатала «ДА»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Так как условие: если s >= 2 * k, то программа напечатает «ДА» если значение s
будет >= 2 * k
Проверяем условия:
1) s=1, 2 * k=2*2=4, 1 >= 4? НЕТ
2) s=8, 2 * k=2*4=8, 8 >= 8? ДА
3) s=6, 2 * k=2*(-12)=-24, 6 >= -24? ДА
4) s=-5, 2 * k=2*(-5)=-10, -5 >= -10? ДА
5) s=3, 2 * k=2*11=22, 3 >= 22? НЕТ
6) s=-10, 2 * k=2*12=24, -10 >= 24? НЕТ
7) s=-10, 2 * k=2*(-2)=-4, -10 >= -4? НЕТ
8) s=4, 2 * k=2*1=2, 4 >= 2? ДА
9) s=2, 2 * k=2*5=10, 2 >= 10? НЕТ
Значит, было 4 запуска, при которых программа напечатала «ДА». В качестве
значений переменных s и t в этих случаях вводились следующие пары чисел:
(8, 4); (6, −12); (−5, −5); (4, 1).
Ответ: 4
Задание 4: (задание с параметром А, вызывает сложности у учащихся, не у всех
получается с первого раза)
Паскаль
Алгоритмический язык
var s,t,A: integer;
алг
begin
нач
readln(s);
цел s, t, A
readln(t);
ввод s
readln(A);
ввод t
if (s > 10) or (t > A) ввод A
then
если s > 10 или t > A
writeln ('YES')
то вывод "YES"
else
иначе вывод "NO"
writeln ('NO')
все
end.
кон
Объявляются переменные s, t,
А- тип целые (var s, t, А: integer),
затем идет присваивание значения
для
переменных
s,
t,
А
( readln(s),readln(t), readln(A)),
далее условный оператор Если(if)
(s>10 или t>А) то печатаем YES,
иначе печатаем NO.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и t вводились следующие пары чисел:
(1, 2); (11, 2); (1, 12); (11, 12); (−11, −12); (−11, 12); (−12, 11); (10, 10); (10, 5).
Укажите количество целых значений параметра A, при которых для указанных
входных данных программа напечатает «NO» три раза.
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Проверяем условие:
Заметим, что программа напечатает «NO», если переменная s будет ≤ 10, а
переменная t будет ≤ А.
Из первой части условия если если s > 10 получаем, что при вводе
значений s и t (11, 2) и (11, 12) программа напечатает «YES» вне зависимости от
значения A. А нам нужно «NO». Значит вычеркиваем две пары:
(1, 2); (11, 2); (1, 12); (11, 12); (−11, −12); (−11, 12); (−12, 11); (10, 10); (10, 5).
Проверяем оставшиеся пары чисел: для начала берем А=1, смотрим сколько
получилось вариантов когда программа напечатает «NO», затем, берем
следующие целые числа, и ищем при каких программа напечатает «NO» три
раза.
Задание достаточно кропотливое, и учащийся должен быть очень
внимателен!!!
что при A = 1 программа напечатает «NO» один раз, это пара (−11, −12);
при А=2, 3, 4 программа напечатает «NO» два раза, это пары (1, 2); (−11, −12);
при А=5, 6, 7, 8, 9 программа напечатает «NO» три раза, это пары (1, 2);
(−11, −12); (10, 5).
а при A > 9 программа будет печатать «NO» четыре и более раз.
Таким образом, существует 5 целых значений параметра A, при которых «NO»
будет напечатано три раза, а именно 5, 6, 7, 8, 9.
Ответ: 5
Задание 5: (целочисленное деление div, остаток от деления mod)
Вспомним: Примеры использования функций DIV и MOD
Функции DIV и MOD являются функциями работы с целыми числами.
DIV(X,Y) - это целое частное от деления X на Y
MOD(X,Y) - это остаток от деления X на Y
Например:
DIV(13, 5) = 2 MOD(13, 5) = 3
DIV(7, 3) = 2
MOD(7, 3) = 1
DIV(6, 2) = 3
MOD(6, 2) = 0
DIV(3, 5) = 0
MOD(3, 5) = 3
DIV(4, 4) = 1
MOD(4, 4) = 0
DIV(13, 1) = 13
Рассмотрим задачу:(применение функции div)
Паскаль
Алгоритмический язык
алг
var s, k: integer;
нач
цел s, k
begin
readln(s);
ввод s
readln(k);
ввод k
if s div 2 = k
если div(s, 2) = k
then writeln ('ДА') то вывод "ДА"
else writeln ('НЕТ') иначе вывод "НЕТ"
end.
все
кон
Если записано условие
div (s, 2) = k, это означает, что
при делении числа s на 2 нужно
взять целую часть, это и будет
наше k.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и k вводились следующие пары чисел:
(1, 1); (8, 4); (14, 10); (20, 1); (7, 3); (10, 5); (10, 2); (4, 1); (1, 0).
Сколько было запусков, при которых программа напечатала «ДА»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Проверяем условие: (удобно использовать таблицу)
Пара чисел
(1, 1)
(8;4)
(14;10)
(20;1)
(7;3)
(10;5)
(10;2)
(4;1)
(1;0)
s/2
½=0,5
8/2=4
14/2=1,4
20/2=10
7/2=3,5
10/2=5
10/2=5
2/2=2
½=0,5
Целая часть
0
4
1
10
3
5
5
2
0
Значение k
1
4
10
1
3
5
2
1
0
Проверяем s/2=k ???
Нет
Да
Нет
Нет
Да
Да
Нет
Нет
Да
Значит, было 4 запуска, при которых программа напечатала «ДА». В качестве
значений переменных s и k в этих случаях вводились следующие пары чисел:
(8, 4); (7, 3); (10, 5); (1, 0).
О т ве т : 4.
Задание 6: (целочисленное деление div, остаток от деления mod)
Вспомним: Примеры использования функций DIV и MOD
Функции DIV и MOD являются функциями работы с целыми числами.
DIV(X,Y) - это целое частное от деления X на Y
MOD(X,Y) - это остаток от деления X на Y
Например:
DIV(13, 5) = 2 MOD(13, 5) = 3
DIV(7, 3) = 2
MOD(7, 3) = 1
DIV(6, 2) = 3
MOD(6, 2) = 0
DIV(3, 5) = 0
MOD(3, 5) = 3
DIV(4, 4) = 1
MOD(4, 4) = 0
DIV(13, 1) = 13
Рассмотрим задачу:(применение функции mod)
Ниже приведена программа, записанная на языках программирования.
Алгоритмический язык Паскаль
Если записано условие
алг
var s, k: integer;
mod (s, 7) = k, это означает,
нач
begin
что при делении числа s на 7
цел s, k
readln(s);
нужно взять остаток от
ввод s
readln(k);
деления, это и будет наше k.
ввод k
if s mod 7 = k
если mod(s, 7) = k
then writeln("YES")
то вывод "YES"
else writeln("NO")
иначе вывод "NO"
end.
все
кон
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и k вводились следующие пары чисел:
(2, 2); (7, 0); (14, 10); (22, 1); (10, 3); (12, 1); (9, 2); (5, 1); (2, 5).
Сколько было запусков, при которых программа напечатала «YES»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется выяснить?
Проверяем условие: (удобно использовать таблицу)
Пара чисел
(2, 2)
(7;0)
(14;10)
(22;1)
(10;3)
(12;1)
(9;2)
(5;1)
(2;5)
s/7
2/7=2/7
7/7=1
14/7=2
22/7=3 1/7
10/7=1 3/7
12/7=1 5/7
9/7=1 2/7
5/7=5/7
2/7=2/7
Остаток
2
0
0
1
3
5
2
5
2
Значение k
2
0
10
1
3
1
2
1
5
Проверяем s/2=k ???
Да
Да
Нет
Да
Да
Нет
Да
Нет
Нет
Значит, было 5 запусков, при которых программа напечатала «YES». В качестве
значений переменных s и k в этих случаях вводились следующие пары чисел:
(2, 2); (7, 0); (22, 1); (10, 3); (9, 2).
О т ве т : 5.
Задание 7: Встретились мне и вот такие задания из учебно-методического пособия
Л. Н. Евич
Определить, что будет напечатано в результате выполнения следующего алгоритма,
записанного на языках программирования:
Итак, рассмотрим задание:
Объявляются переменные s и k- тип целые (var s, k: integer), затем идет
присваивание начального значения для переменной S:=0, далее начинается цикл для
k от 4 до 13. Что же это значит? Это значит нужно посчитать сколько раз
выполнится в цикле действие s:=s+7. Чтобы не запутаться, просто перечислим эти
числа: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13- всего десять!!! То есть 10 раз выполним
действие s:=s+7.
1) s:=s+7=0+7=7
2) s:=s+7=7+7=14
3) s:=s+7=14+7=21
4) s:=s+7=21+7=28
5) s:=s+7=28+7=35
6) s:=s+7=35+7=42
7) s:=s+7=42+7=49
8) s:=s+7=49+7=56
9) s:=s+7=56+7=63
10) s:=s+7=63+7=70, ответ 70
Если дети разобрались с заданием, то можно выполнить его гораздо проще:
Если 10 раз выполняется операция s+7, то 10*7=70, и так как первоначально
значение S:=0, то число 70 и есть искомый ответ!!!
Ответ: 70
Задание 8: Еще один вид задания из учебно-методического пособия Л. Н. Евич
Определить, что будет напечатано в результате выполнения следующего алгоритма,
записанного на языках программирования:
Итак, рассмотрим задание:
Объявляются переменные s и k- тип целые (var s, k: integer), затем идет
присваивание начального значения для переменной S:=0, k:=0 далее начинается
цикл для пока S < 210. Далее идут команды присваивания S:=S+4, k:=k+1. А в
ответ нужно вывести значение переменной k после выполнения условия, как только
S станет > 210. Что же это значит? Это значит нужно просто посчитать.
Так как изначально S:=0, и к нему прибавляется число 4, то просто разделим 210
на 4, получим 210/4=52 остаток 2, так как есть остаток, то нужно прибавить еще
один раз 4, чтобы
S стало > 210. Итог, всего 53 раза прибавили 4, а так как изначально k:=0 и
каждый раз прибавляется 1,
то окончательное значение k:=53 – это ответ!!!
Ответ: 53
Задание 9: Еще один вид задания из учебно-методического пособия Л. Н. Евич
Объявляются переменные s и k- тип целые (var s, k: integer), затем идет
присваивание значения для переменных s и k ( readln(s),readln(k)), далее условный
оператор Если(if) (s <k и k > 10) то печатаем ДА, иначе печатаем НЕТ.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и k вводились следующие пары чисел:
(8, 11); (-3, -1); (9, 10); (15, 12); (6, 12); (11, 11); (-10, 11); (12, -3); (1, 11).
Сколько было запусков, при которых программа напечатала «ДА»?
Здесь уместно акцентировать внимание детей на ВОПРОС задачи!!! Что требуется
выяснить?
Итак, рассмотрим задание:
Напомню, что если оператор and (и) то должны выполняться оба условия!!!
Здесь уместно сказать учащимся, что мы обращаем внимание сначала на
переменную k!!! Так как k должно быть > 10.
Отбираем пары чисел где k> 10: (8, 11); (15, 12); (6, 12); (11, 11); (-10, 11); (1, 11),
таких пар 6.
Теперь выполняем условие s < k:
таких пар оказывается 4 – это (8, 11); (6, 12); (-10, 11); (1, 11).
Ответ: 4
Задание 10: Из открытого банка заданий ФИПИ
Ниже приведена программа, записанная на языках программирования.
Алгоритмический язык
Паскаль
алг
var s, t: integer;
нач
begin
цел s, t
readln(s);
ввод s
readln(t);
ввод t
if not((s <= 2) and (t < 3))
если не (s <= 2 и t < 3)
then writeln("YES")
то вывод "YES"
else writeln("NO")
иначе вывод "NO"
end.
все
кон
Объявляются переменные s и t- тип целые (var s, t: integer), затем идет
присваивание значения для переменных s и t ( readln(s),readln(t)), далее условный
оператор Если(if) не (s <= 2 и t < 3) то печатаем YES, иначе печатаем NO.
Было проведено 9 запусков программы, при которых в качестве значений
переменных s и t вводились следующие пары чисел:
(2, –2); (5, 3); (–4, 1); (–12, 5), (5, –7); (10, 3); (–8, 12); (3, 0); (2, 3).
Сколько было запусков, при которых программа напечатала «YES»?
Здесь уместно напомнить учащимся о последовательности выполнения операторов:
Логическое отрицание not (НЕ) выполняется в первую очередь, а так как
следующим стоит логическое умножение в скобках (s <= 2 и t < 3), то логическое
умножение И меняется на логическое сложение ИЛИ, и меняются знаки!!! (на
замене знаков нужно акцентировать внимание, где получается строгое
неравенство, где нестрогое)
Получаем условие если (s > 2 или t >= 3).
Используя новое условие проверяем пары:
Так как получили оператор ИЛИ, то программа напечатает «YES» если хотя бы
одно условие выполняется или s > 2 или t >= 3.
(2, –2); (5, 3); (–4, 1); (–12, 5), (5, –7); (10, 3); (–8, 12); (3, 0); (2, 3).
Всего две пары не удовлетворяют условию.
Значит программа напечатает «YES» 7 раз: (5, 3); (–12, 5), (5, –7); (10, 3); (–8, 12);
(3, 0); (2, 3).
Ответ: 7
Список источников:
В разработке были использованы свободно распространяемые в некоммерческих
целях материалы сети интернет:
1) ФИПИ Федеральный банк тестовых заданий / Информатика и ИКТ открытый
банк заданий ОГЭ Информатика и ИКТ
http://oge.fipi.ru/os/xmodules/qprint/index.php?proj_guid=74676951F093A0754D7
4F2D6E7955F06&theme_guid=4BE9873EF46DB209473CFCC27C95FA75&md=
qprint&groupno=16
2) Сдам ГИА: Решу ОГЭ, о бразовательный портал для подготовки к экзаменам
https://inf-oge.sdamgia.ru/
3) Учебно-методическое пособие Л. Н. Евич, «Информатика и ИКТ, подготовка к
ОГЭ-2021, 20 тренировочных вариантов».