Задание 6 ОГЭ по информатике: анализ программы с условным оператором
В задании №6 ОГЭ по информатике нужно понять, как работает небольшая программа. Чаще всего программа содержит условие
if, логические операцииand,or, иногда параметрA, а ученику нужно определить, сколько раз программа напечатаетYESилиNO.
Что проверяет задание 6 ОГЭ по информатике
В задании №6 проверяют, умеет ли ученик:
- читать простую программу;
- понимать условный оператор
if; - работать с логическими операциями
andиor; - подставлять входные данные в условие;
- определять, что напечатает программа;
- решать задачи с параметром
A; - проверять решение вручную и с помощью Python.
Обычно программа дана сразу на нескольких языках программирования, но удобнее всего смотреть на вариант на Python.
Как выглядит программа в Python
Пример программы:
s = int(input())
t = int(input())
if s < 10 or t < 10:
print("YES")
else:
print("NO")
Программа считывает два числа:
s
t
Затем проверяет условие:
s < 10 or t < 10
Если условие истинно, программа печатает:
YES
Иначе печатает:
NO
Что значит if
Оператор if означает "если".
if условие:
print("YES")
else:
print("NO")
Если условие выполняется, программа идёт в первую ветку и печатает YES.
Если условие не выполняется, программа идёт в else и печатает NO.
Логическая операция or
Операция or означает ИЛИ.
Условие:
s < 10 or t < 10
истинно, если выполняется хотя бы одна часть:
s < 10;t < 10.
То есть YES будет напечатано, если хотя бы одно из чисел меньше 10.
Таблица для or
| Первая часть | Вторая часть | Результат or |
|---|---|---|
| истина | истина | истина |
| истина | ложь | истина |
| ложь | истина | истина |
| ложь | ложь | ложь |
Операция or ложна только тогда, когда обе части ложны.
Логическая операция and
Операция and означает И.
Условие:
s > 5 and t > 5
истинно только тогда, когда выполняются обе части:
s > 5;t > 5.
Таблица для and
| Первая часть | Вторая часть | Результат and |
|---|---|---|
| истина | истина | истина |
| истина | ложь | ложь |
| ложь | истина | ложь |
| ложь | ложь | ложь |
Операция and истинна только тогда, когда обе части истинны.
Тип 1. Задание без параметра
В таких задачах дана программа и несколько пар входных данных.
Нужно определить, сколько раз программа напечатает YES или NO.
Пример 1. Программа без параметра
Условие
Дана программа:
s = int(input())
t = int(input())
if s < 10 or t < 10:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы.
В качестве значений переменных s и t вводились пары чисел:
(6, 4); (7, 8); (12, 10); (5, 6); (11, 10); (-5, 7); (-2, 2); (4, 5); (8, 6)
Сколько было запусков, при которых программа напечатала NO?
Ручное решение
Программа печатает YES, если:
s < 10 или t < 10
Значит, программа печатает NO, когда условие ложно.
Условие с or ложно только тогда, когда обе части ложны:
s < 10 — ложь
t < 10 — ложь
То есть для NO должно быть:
s >= 10 и t >= 10
Теперь проверим пары.
| Пара | Проверка | Ответ |
|---|---|---|
(6, 4) |
6 < 10, 4 < 10 | YES |
(7, 8) |
7 < 10, 8 < 10 | YES |
(12, 10) |
12 >= 10 и 10 >= 10 | NO |
(5, 6) |
5 < 10, 6 < 10 | YES |
(11, 10) |
11 >= 10 и 10 >= 10 | NO |
(-5, 7) |
-5 < 10 | YES |
(-2, 2) |
-2 < 10 | YES |
(4, 5) |
4 < 10 | YES |
(8, 6) |
8 < 10 | YES |
Программа напечатала NO только для двух пар:
(12, 10)
(11, 10)
Ответ
2
Решение на Python
Эту же задачу можно проверить программой.
data = [
(6, 4),
(7, 8),
(12, 10),
(5, 6),
(11, 10),
(-5, 7),
(-2, 2),
(4, 5),
(8, 6)
]
count = 0
for s, t in data:
if s < 10 or t < 10:
result = "YES"
else:
result = "NO"
if result == "NO":
count += 1
print(count)
Результат:
2
Более короткое решение на Python
Можно не создавать переменную result, а сразу считать случаи, когда программа напечатает NO.
data = [
(6, 4),
(7, 8),
(12, 10),
(5, 6),
(11, 10),
(-5, 7),
(-2, 2),
(4, 5),
(8, 6)
]
count = 0
for s, t in data:
if not (s < 10 or t < 10):
count += 1
print(count)
Ответ:
2
Как понимать not
Оператор not означает НЕ.
not (s < 10 or t < 10)
означает:
не выполняется условие s < 10 или t < 10
То есть обе части должны быть ложными:
s >= 10 и t >= 10
Тип 2. Задание с параметром A
В таких задачах в программе есть переменная A.
Обычно нужно найти:
- наименьшее значение
A; - наибольшее значение
A; - значение
A, при котором программа напечатаетYESнужное количество раз; - значение
A, при котором программа напечатаетNOнужное количество раз.
Пример 2. Задача с параметром A
Условие
Дана программа:
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 12:
print("YES")
else:
print("NO")
Было проведено 9 запусков программы.
В качестве значений переменных s и t вводились пары чисел:
(13, 2); (11, 12); (-12, 12); (2, -2); (-10, -10); (6, -5); (2, 8); (9, 10); (1, 13)
Укажите наименьшее целое значение параметра A, при котором для указанных входных данных программа напечатает YES ровно 8 раз.
Ручное решение
Программа печатает YES, если выполняется условие:
s > A или t > 12
Одна из пар:
(1, 13)
всегда даёт YES, потому что:
13 > 12
То есть один запуск уже точно даёт YES, независимо от значения A.
Нужно, чтобы всего было 8 ответов YES.
Значит, среди остальных 8 пар условие:
s > A
должно выполниться ровно 7 раз.
Выпишем значения s у первых восьми пар:
13, 11, -12, 2, -10, 6, 2, 9
Отсортируем:
-12, -10, 2, 2, 6, 9, 11, 13
Нам нужно, чтобы ровно 7 значений были больше A.
Это получится, если значение A равно самому маленькому числу из списка:
A = -12
Тогда больше A будут все числа, кроме -12.
Проверим:
13 > -12
11 > -12
-12 > -12 — нет
2 > -12
-10 > -12
6 > -12
2 > -12
9 > -12
Получилось 7 раз.
И ещё пара (1, 13) даёт YES из-за условия:
t > 12
Всего:
7 + 1 = 8
Ответ
-12
Решение задачи с параметром на Python
Такую задачу удобно проверить перебором.
data = [
(13, 2),
(11, 12),
(-12, 12),
(2, -2),
(-10, -10),
(6, -5),
(2, 8),
(9, 10),
(1, 13)
]
for A in range(-100, 101):
count = 0
for s, t in data:
if s > A or t > 12:
count += 1
if count == 8:
print(A)
break
Программа выведет:
-12
Почему перебор работает
Мы просто проверяем разные значения A.
Для каждого A считаем, сколько раз программа напечатает YES.
Если количество равно 8, выводим это значение.
Так как нам нужно наименьшее значение A, перебор идёт от маленьких чисел к большим:
for A in range(-100, 101):
Когда нашли первое подходящее значение, останавливаемся:
break
Тип 3. Найти количество запусков с YES
Иногда параметра нет, и нужно просто посчитать количество запусков, где программа напечатала YES.
Пример 3
Условие
Дана программа:
s = int(input())
t = int(input())
if s > 5 and t > 5:
print("YES")
else:
print("NO")
Входные данные:
(6, 7); (5, 8); (9, 1); (10, 10); (3, 4)
Сколько раз программа напечатает YES?
Ручное решение
Условие:
s > 5 и t > 5
Операция and требует, чтобы выполнялись обе части.
Проверим пары.
| Пара | Проверка | Ответ |
|---|---|---|
(6, 7) |
обе части истинны | YES |
(5, 8) |
5 > 5 — ложь | NO |
(9, 1) |
1 > 5 — ложь | NO |
(10, 10) |
обе части истинны | YES |
(3, 4) |
обе части ложны | NO |
YES напечатано 2 раза.
Ответ
2
Решение на Python
data = [
(6, 7),
(5, 8),
(9, 1),
(10, 10),
(3, 4)
]
count = 0
for s, t in data:
if s > 5 and t > 5:
count += 1
print(count)
Ответ:
2
Тип 4. Найти количество запусков с NO
Чтобы посчитать количество запусков с NO, можно действовать двумя способами.
Способ 1. Проверять результат программы
count = 0
for s, t in data:
if s > 5 and t > 5:
result = "YES"
else:
result = "NO"
if result == "NO":
count += 1
print(count)
Способ 2. Использовать not
Если программа печатает NO, значит условие внутри if не выполнилось.
count = 0
for s, t in data:
if not (s > 5 and t > 5):
count += 1
print(count)
Как решать задание 6 вручную
Используй такой алгоритм:
- Найди программу на Python.
- Выпиши условие из
if. - Пойми, когда печатается
YES. - Пойми, когда печатается
NO. - Проверь каждую пару входных данных.
- Если есть параметр
A, подумай, сколько раз условие должно быть истинным. - Если сложно, сделай перебор на Python.
Как решать задание 6 на Python
Если нужно посчитать количество YES, можно использовать шаблон:
data = [
# сюда записываем пары чисел
]
count = 0
for s, t in data:
if условие:
count += 1
print(count)
Если нужно посчитать количество NO, используем:
data = [
# сюда записываем пары чисел
]
count = 0
for s, t in data:
if not (условие):
count += 1
print(count)
Шаблон для задачи с параметром A
Если нужно найти параметр A, можно использовать такой шаблон:
data = [
# пары чисел
]
for A in range(-1000, 1001):
count = 0
for s, t in data:
if условие_с_A:
count += 1
if count == нужное_количество:
print(A)
break
Например:
if s > A or t > 12:
count += 1
Важные логические операции
| Операция | В Python | Что означает |
|---|---|---|
| И | and |
истинно, если обе части истинны |
| ИЛИ | or |
истинно, если хотя бы одна часть истинна |
| НЕ | not |
меняет истину на ложь, а ложь на истину |
Таблица истинности для and
| A | B | A and B |
|---|---|---|
| истина | истина | истина |
| истина | ложь | ложь |
| ложь | истина | ложь |
| ложь | ложь | ложь |
Таблица истинности для or
| A | B | A or B |
|---|---|---|
| истина | истина | истина |
| истина | ложь | истина |
| ложь | истина | истина |
| ложь | ложь | ложь |
Типичные ошибки
Ошибка 1. Путают and и or
Условие:
s < 10 or t < 10
истинно, если хотя бы одно число меньше 10.
А условие:
s < 10 and t < 10
истинно только тогда, когда оба числа меньше 10.
Ошибка 2. Неправильно считают NO
Если программа печатает NO, это значит, что условие в if ложно.
Например:
if s < 10 or t < 10:
print("YES")
else:
print("NO")
NO будет только тогда, когда:
s >= 10 и t >= 10
Ошибка 3. Не учитывают отрицательные числа
Отрицательные числа тоже сравниваются как обычные.
Например:
-5 < 10
Это истина.
Ошибка 4. В задаче с параметром проверяют только одно значение A
Если есть параметр A, нужно найти такое значение, при котором условие выполняется нужное количество раз.
Лучше проверять все подходящие значения или аккуратно рассуждать вручную.
Ошибка 5. Неверно выбирают наименьшее или наибольшее A
Если просят наименьшее значение A, перебор нужно вести от меньших значений к большим.
Если просят наибольшее значение A, удобнее идти от больших значений к меньшим.
Мини-практика
Задание 1
Дана программа:
s = int(input())
t = int(input())
if s > 3 or t > 3:
print("YES")
else:
print("NO")
Входные данные:
(1, 2); (4, 1); (2, 5); (3, 3); (6, 7)
Сколько раз программа напечатает YES?
Задание 2
Дана программа:
s = int(input())
t = int(input())
if s < 0 and t < 0:
print("YES")
else:
print("NO")
Входные данные:
(-1, -2); (-3, 5); (4, -6); (-7, -8); (0, -1)
Сколько раз программа напечатает NO?
Задание 3
Дана программа:
s = int(input())
t = int(input())
A = int(input())
if s > A or t > 10:
print("YES")
else:
print("NO")
Входные данные:
(5, 3); (8, 11); (2, 4); (10, 1); (7, 12)
Найдите наименьшее целое значение A, при котором программа напечатает YES ровно 4 раза.
Ответы
Ответ 1
Условие:
s > 3 или t > 3
Проверяем пары:
| Пара | Ответ |
|---|---|
(1, 2) |
NO |
(4, 1) |
YES |
(2, 5) |
YES |
(3, 3) |
NO |
(6, 7) |
YES |
Ответ:
3
Ответ 2
Условие:
s < 0 и t < 0
YES будет только тогда, когда оба числа отрицательные.
| Пара | Ответ |
|---|---|
(-1, -2) |
YES |
(-3, 5) |
NO |
(4, -6) |
NO |
(-7, -8) |
YES |
(0, -1) |
NO |
NO напечатано 3 раза.
Ответ:
3
Ответ 3
Условие:
s > A или t > 10
Пары с t > 10 уже дают YES:
(8, 11)
(7, 12)
Это 2 запуска.
Нужно всего 4 запуска с YES.
Значит, среди остальных трёх пар условие:
s > A
должно выполниться ещё 2 раза.
Остальные значения s:
5, 2, 10
Нужно, чтобы ровно два из них были больше A.
Отсортируем:
2, 5, 10
Если взять:
A = 5
то больше A только число 10 — это 1 раз.
Если взять:
A = 2
то больше A числа 5 и 10 — это 2 раза.
Наименьшее такое значение можно ещё уменьшать?
Если взять:
A = 1
то больше A будут 2, 5 и 10 — это уже 3 раза.
Значит, подходит только:
A = 2
Ответ:
2
Итог
Задание №6 ОГЭ по информатике проверяет умение анализировать простые программы.
Главное, что нужно уметь:
- понимать
if,else; - читать условия;
- различать
andиor; - считать, сколько раз программа выводит
YESилиNO; - решать задачи с параметром
A; - проверять решение перебором на Python.
Если внимательно подставлять входные данные и правильно работать с логическими условиями, задание №6 можно решать быстро и без ошибок.
Частые вопросы по теме
Что проверяет задание 6 ОГЭ по информатике?
Задание 6 проверяет умение анализировать небольшую программу, понимать условия if, логические операции and и or, а также определять, что выведет программа.
Как решать задание 6 ОГЭ по информатике?
Нужно прочитать условие в программе, подставить входные данные и посчитать, сколько раз программа напечатает YES или NO.
Что делать, если в задании есть параметр A?
Нужно подобрать такое значение A, при котором программа выведет YES или NO нужное количество раз. Это можно сделать вручную или перебором на Python.
Как посчитать количество выводов NO?
Нужно определить, когда условие в if ложно, или использовать not от условия.
Можно ли решать задание 6 на Python?
Да, удобно записать пары входных данных в список и перебрать их циклом, считая количество нужных ответов.