Задание №2 ЕГЭ по информатике
Задание №2 ЕГЭ по информатике
Таблицы истинности и логические выражения
Тема: логика Что нужно сделать: определить, какой переменной соответствует каждый столбец таблицы истинности.
📌 Условие задачи
ВСТАВЬ СЮДА УСЛОВИЕ ЗАДАЧИ
🖼️ Картинка к задаче

1. Что проверяет задание №2
Во втором задании ЕГЭ по информатике нужно работать с логическими выражениями и таблицами истинности.
Обычно в задаче дана логическая функция, например:
F = (w ≡ z) ∨ ¬(y → w) ∨ ¬x
Также дана часть таблицы истинности.
Но есть важная сложность:
столбцы таблицы не подписаны
То есть неизвестно, какой столбец соответствует переменной w, какой — x, какой — y, а какой — z.
Нужно определить порядок переменных по столбцам.
2. Что такое таблица истинности
Таблица истинности показывает, при каких значениях переменных логическая функция равна 0 или 1.
В логике:
0 — ложь
1 — истина
Если переменных 4:
w, x, y, z
то всего возможных наборов значений:
2^4 = 16
Потому что каждая переменная может быть равна либо 0, либо 1.
3. Основные логические операции
Логическое НЕ
В математике:
¬x
В Python:
not x
Если x = 0, то not x = 1.
Если x = 1, то not x = 0.
Логическое ИЛИ
В математике:
A ∨ B
В Python:
A or B
Операция ИЛИ равна 0 только тогда, когда обе части равны 0.
Логическое И
В математике:
A ∧ B
В Python:
A and B
Операция И равна 1 только тогда, когда обе части равны 1.
Импликация
В математике:
A → B
Читается:
если A, то B
В Python импликацию записываем так:
(not A) or B
Например:
y → w
В Python:
(not y) or w
Импликация ложна только в одном случае:
A = 1, B = 0
Эквивалентность
В математике:
A ≡ B
Эквивалентность равна 1, когда значения одинаковые.
В Python:
A == B
Например:
w ≡ z
В Python:
w == z
4. Функция из задачи
В задаче дана функция:
F = (w ≡ z) ∨ ¬(y → w) ∨ ¬x
Переведём её на Python.
Первая часть
w ≡ z
В Python:
w == z
Вторая часть
¬(y → w)
Сначала запишем импликацию:
y → w
В Python:
(not y) or w
Теперь добавим отрицание:
not ((not y) or w)
Третья часть
¬x
В Python:
not x
Полная функция
(w == z) or (not ((not y) or w)) or (not x)
5. Важный момент про значение F
В таблице из условия во всех трёх строках указано:
F = 0
Значит, нам нужно вывести только те наборы значений переменных, при которых функция равна 0.
То есть в Python будем писать условие:
if not ((w == z) or (not ((not y) or w)) or (not x)):
print(w, x, y, z)
Почему именно not?
Потому что сама функция должна быть равна 0.
А если функция равна 0, то:
not F = 1
То есть условие сработает именно тогда, когда функция ложна.
6. Решение на Python обычным перебором
Решать задачу будем с помощью простого шаблона на Python.
print('w x y z')
for w in range(0, 2):
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
if not ((w == z) or (not ((not y) or w)) or (not x)):
print(w, x, y, z)
7. Что делает этот код
Разберём подробно.
Печатаем заголовок
print('w x y z')
Эта строка нужна, чтобы мы видели, в каком порядке выводятся переменные.
На экране сначала появится:
w x y z
Перебираем переменную w
for w in range(0, 2):
Переменная w принимает значения:
0
1
Перебираем переменную x
for x in range(0, 2):
Переменная x тоже принимает значения:
0
1
Перебираем переменную y
for y in range(0, 2):
Переменная y принимает значения:
0
1
Перебираем переменную z
for z in range(0, 2):
Переменная z принимает значения:
0
1
Зачем нужны 4 вложенных цикла
В задаче 4 переменные:
w, x, y, z
Поэтому мы делаем 4 вложенных цикла.
Каждый цикл перебирает два значения:
0 и 1
В итоге Python проверяет все возможные варианты:
2^4 = 16
То есть все строки полной таблицы истинности.
8. Условие внутри циклов
Внутри циклов записана наша функция:
if not ((w == z) or (not ((not y) or w)) or (not x)):
Она означает:
если F = 0, то вывести значения переменных
То есть программа печатает только те строки, которые подходят под условие задачи.
9. Результат работы программы
Если запустить программу, получится:
w x y z
0 1 0 1
0 1 1 1
1 1 0 0
Это означает, что функция равна 0 только при таких наборах:
| w | x | y | z |
|---|---|---|---|
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 0 |
10. Теперь сравниваем с таблицей из условия
В условии дана таблица, но столбцы не подписаны.
Обозначим столбцы просто так:
1-й столбец, 2-й столбец, 3-й столбец, 4-й столбец
Фрагмент таблицы из условия:
| 1-й столбец | 2-й столбец | 3-й столбец | 4-й столбец | F |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | |
| 1 | 1 | 0 | ||
| 0 | 0 | 0 |
Нужно понять, где находятся переменные:
w, x, y, z
11. Сравниваем с таблицей Python
Из Python получили строки:
| w | x | y | z |
|---|---|---|---|
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 0 |
Теперь будем сопоставлять.
12. Ищем переменную x
Посмотрим на столбец x в таблице Python:
| x |
|---|
| 1 |
| 1 |
| 1 |
Во всех строках, где F = 0, переменная x равна 1.
Теперь посмотрим на таблицу из условия.
В ней третий столбец имеет две заполненные единицы:
| 3-й столбец |
|---|
| 1 |
| 1 |
Значит, третий столбец очень хорошо подходит для переменной x.
Получаем:
3-й столбец = x
13. Ищем оставшиеся переменные
Теперь таблица из условия выглядит так:
| 1-й столбец | 2-й столбец | x | 4-й столбец | F |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | |
| 1 | 1 | 0 | ||
| 0 | 0 | 0 |
Остались переменные:
w, y, z
14. Смотрим на нули
В таблице из условия:
- во 2-м столбце есть значения
0и1; - в 4-м столбце стоят два нуля;
- в 1-м столбце есть один ноль.
Теперь сравним со строками Python.
Таблица Python:
| w | x | y | z |
|---|---|---|---|
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 0 |
Если убрать столбец x, останется:
| w | y | z |
|---|---|---|
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
15. Подбираем строки под фрагмент
Фрагмент из условия:
| 1-й | 2-й | x | 4-й |
|---|---|---|---|
| 0 | 1 | 0 | |
| 1 | 1 | ||
| 0 | 0 |
Мы уже знаем:
3-й столбец = x
Теперь нужно расставить w, y, z по столбцам 1, 2 и 4.
Попробуем соответствие:
1-й столбец = z
2-й столбец = w
4-й столбец = y
То есть порядок столбцов:
z w x y
Проверим.
16. Проверка соответствия zwxy
Таблица Python:
| w | x | y | z |
|---|---|---|---|
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 1 | 0 | 0 |
Если записать в порядке:
z w x y
получим:
| z | w | x | y |
|---|---|---|---|
| 1 | 0 | 1 | 0 |
| 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 |
Теперь сравним с таблицей из условия:
| 1-й | 2-й | 3-й | 4-й | F |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | |
| 1 | 1 | 0 | ||
| 0 | 0 | 0 |
Смотрим:
Первая строка условия
_ 0 1 0
В нашей таблице есть строка:
1 0 1 0
Подходит.
Вторая строка условия
_ 1 1 _
В нашей таблице есть строка:
0 1 1 0
Подходит.
Третья строка условия
0 _ _ 0
В нашей таблице есть строка:
0 1 1 0
Подходит.
Значит, порядок найден верно:
z w x y
17. Ответ
В ответ нужно записать буквы в том порядке, в котором идут столбцы таблицы.
Мы получили:
| Столбец | Переменная |
|---|---|
| 1-й | z |
| 2-й | w |
| 3-й | x |
| 4-й | y |
Ответ:
zwxy
18. Важное замечание
В получившейся таблице Python может быть больше строк, чем в условии.
Это нормально.
В условии дан только фрагмент таблицы, а Python выводит все строки, при которых функция принимает нужное значение.
Также нельзя опираться на порядок строк.
Строки в таблице из условия могут быть расположены в любом порядке.
Нужно сравнивать:
количество нулей и единиц
расположение значений по столбцам
совпадение строк с учётом пустых клеток
19. Универсальный шаблон для задания №2
Для похожих задач можно использовать такой шаблон:
print('x y z w')
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
for w in range(0, 2):
if ЛОГИЧЕСКОЕ_ВЫРАЖЕНИЕ:
print(x, y, z, w)
Если в условии нужно, чтобы функция была равна 1, то пишем:
if F:
print(...)
Если в условии нужно, чтобы функция была равна 0, то пишем:
if not F:
print(...)
20. Шаблон именно для нашей задачи
print('w x y z')
for w in range(0, 2):
for x in range(0, 2):
for y in range(0, 2):
for z in range(0, 2):
if not ((w == z) or (not ((not y) or w)) or (not x)):
print(w, x, y, z)
Результат:
w x y z
0 1 0 1
0 1 1 1
1 1 0 0
21. Частые ошибки
Ошибка 1. Забыть, что нужна функция F = 0
В нашей задаче во всех строках таблицы:
F = 0
Поэтому в Python нужно выводить строки, где функция ложна.
Правильно:
if not ((w == z) or (not ((not y) or w)) or (not x)):
Если написать без not, программа выведет строки, где F = 1.
Ошибка 2. Неправильно записать импликацию
Импликация:
y → w
В Python:
(not y) or w
Нельзя писать просто:
y or w
Ошибка 3. Перепутать порядок переменных в print
Если написали:
print('w x y z')
то выводить нужно именно:
print(w, x, y, z)
Если порядок в заголовке и в print будет разный, можно неправильно сравнить таблицы.
Ошибка 4. Считать пустую клетку нулём
Пустая клетка в таблице не означает 0.
Она означает:
значение не указано
То есть там может быть и 0, и 1.
Ошибка 5. Сравнивать строки только по порядку
Порядок строк в таблице из условия может отличаться от порядка строк, который вывел Python.
Поэтому нельзя говорить:
первая строка Python должна совпадать с первой строкой условия
Нужно искать подходящие строки в любом порядке.
22. Мини-шпаргалка
| Операция | В математике | В Python |
|---|---|---|
| НЕ | ¬x | not x |
| И | x ∧ y | x and y |
| ИЛИ | x ∨ y | x or y |
| Импликация | x → y | (not x) or y |
| Эквивалентность | x ≡ y | x == y |
23. Главное правило
1. Переводим логическое выражение в Python.
2. Выводим строки, где F равно нужному значению.
3. Сравниваем полученную таблицу с фрагментом из условия.
4. Помним, что столбцы в условии не подписаны.
5. Пишем переменные в порядке столбцов.
24. Итог
Для функции:
F = (w ≡ z) ∨ ¬(y → w) ∨ ¬x
Python выводит строки, где F = 0:
w x y z
0 1 0 1
0 1 1 1
1 1 0 0
После сравнения с таблицей из условия получаем порядок столбцов:
z w x y
Ответ:
zwxy