Главная → Материалы → Задание 2

ЕГЭ по информатике · задание 2

Логика для ЕГЭ по информатике: операции, законы и задание №2

Логика — одна из базовых тем ЕГЭ по информатике. Хорошая новость в том, что для ЕГЭ не нужно изучать математическую логику целиком. Достаточно уверенно понимать несколько операций, знать порядок их выполнения и уметь переводить выражение в Python. Разберём всё на простых примерах.

4 просмотров

Что такое логическая переменная

Обычная переменная может хранить разные числа:
x = 5
Логическая переменная имеет только два возможных значения:
1 — истина
0 — ложь

Например, утверждение:

Число 8 является чётным.

истинно, поэтому его логическое значение — 1.


А утверждение:

8 больше 10

ложно, поэтому его значение — 0.

Из таких значений и строятся логические выражения.

Основные логические операции

Инверсия

Инверсия

Конъюнкция

Конъюнкция

Дизъюнкция

Дизъюнкция

Импликация

Импликация

Тождество/Эквиваленция

Тождество/Эквиваленция

Приоритет логических операций

Если в выражении нет скобок, операции выполняются не слева направо.

Обычно используется порядок:

1. ¬       НЕ
2. ∧       И
3. ∨       ИЛИ
4. →       импликация
5. ≡       эквивалентность

Например:

¬x ∨ y ∧ z

сначала:

¬x

и:

y ∧ z

а уже потом выполняется ИЛИ.


Но на ЕГЭ я рекомендую простой принцип:

Если переводишь выражение в Python — ставь скобки.

Не пытайся каждый раз вспоминать приоритет всех операторов языка.

Например:

(not x) or (y and z)

читается гораздо надёжнее.

Самые полезные законы логики для ЕГЭ

Не нужно учить десятки формул.

Вот несколько действительно полезных.

Двойное отрицание

¬¬A = A

Законы де Моргана

Очень важны:

¬(A ∧ B) = ¬A ∨ ¬B

и:

¬(A ∨ B) = ¬A ∧ ¬B

Простой способ запомнить:

отрицание заходит внутрь скобок и меняет И ↔ ИЛИ.

Например:

НЕ (идёт дождь И холодно)

равносильно:

НЕ идёт дождь ИЛИ НЕ холодно

Импликация

Обязательно нужно знать и использовать:

A → B = ¬A ∨ B

Эта формула особенно полезна в заданиях №2 и №15.

Как логика записывается в Python

Приоритет операций
Это практически всё, что понадобится для программного решения задания №2.

Как устроено задание №2 ЕГЭ по информатике

В современном задании №2 даётся:

  1. логическая функция;
  2. несколько строк таблицы истинности;
  3. неизвестный порядок переменных в столбцах.

Нужно определить:

какая переменная соответствует каждому столбцу.

ФИПИ отдельно рекомендует для этого задания повторить логические операции и таблицы истинности; одна из характерных ошибок — забыть требование, что приведённые строки таблицы должны быть различными.

Рассмотрим пример современного типа задания.


Пример задания №2

Миша заполнял таблицу истинности логической функции F=((x≡¬y)→¬(w→x))∨¬z, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

    F
 0100
0  00
 11 0

Определите, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

Как решить аналитически

Сначала посмотрим на функцию:
F=((x≡¬y)→¬(w→x))∨¬z

Заметим, что её можно упростить и привести к виду (преобразование импликации в дизъюнкцию):
F=(¬(x≡¬y) ⋁ ¬(w→x))∨¬z 

Получаем, что три скобки соединяются через дизъюнкцию и (по таблице) всегда дают значение 0 - ложь!

А мы знаем, что:
        дизъюнкция ложна только тогда, когда нет ни одной истины

То есть одновременно получаем:
    ¬(x≡¬y) = 0
    ¬(w→x) = 0
    ¬z = 0

Ещё немного упрощений:
    x≡¬y = 1
    w→x = 1
    z = 1

Делаем вывод:
 - z всегда 1;
 - x соответствует не y (или можно сказать что x не соответствует y);
 - w→x не может быть 1 → 0

Строим свою таблицу истинности по данным знаниям 👇🏼
xyzwF
01100
10110
10100

Соотносим с данной из условия задачи
yxzwF
10100
01100
01110

ОТВЕТ: yxzw

Решение задания №2 на Python

Но есть ещё очень надёжный способ — перебрать все варианты.

Для четырёх переменных существует всего:

2⁴ = 16 наборов значений.

Поэтому Python может быстро построить нужные строки таблицы истинности.


Например:

PYTHONCODE
  1. for x in 0, 1:
  2. for y in 0, 1:
  3. for z in 0, 1:
  4. for w in 0, 1:
  5. F = ((x == (not y)) <= (not(w <= x))) or (not z)
  6. if F == 0:
  7. print(x, y, z, w)
Программа перебирает все комбинации:
0000
0001
0010
...
1111

и выводит только те, для которых:

F = 0 (заменяйте в программе на 0, если в условии дана 1)

После этого остаётся сопоставить найденные строки с фрагментом из условия.

Либо, что мне нравится больше для обучения, не использовать <= внутри такого сложного выражения, а явно раскрыть импликации:
PYTHONCODE
  1. for x in 0, 1:
  2. for y in 0, 1:
  3. for z in 0, 1:
  4. for w in 0, 1:
  5. xy = x == (not y)
  6. wx = (not w) or x
  7. F = (xy <= (not(wx))) or (not z)
  8. if F == 0:
  9. print(x, y, z, w)

Универсальный шаблон Python для задания №2

PYTHONCODE
  1. for x in 0, 1:
  2. for y in 0, 1:
  3. for z in 0, 1:
  4. for w in 0, 1:
  5. F = ...
  6. if F:
  7. print(x, y, z, w)

Что лучше: аналитика или Python?

Для задания №2 полезно уметь оба способа.

Аналитическое решение

Хорошо, когда выражение легко упрощается.

Например:

A ∧ B ∧ C = 1

сразу означает:

A = 1
B = 1
C = 1

Такое решение часто занимает меньше минуты.


Python

Универсальнее.

Если выражение большое и глазами легко запутаться, программа построит нужные строки таблицы автоматически.

Лучший вариант на экзамене:

понимать логику аналитически, но уметь быстро проверить себя кодом.


Частые ошибки

Перепутать И и ИЛИ

И → нужны все единицы
ИЛИ → достаточно одной

Неверно записать импликацию

Правильно:

A <= B

Забыть про скобки

Лучше написать:

((not x) or y) and z

чем надеяться на приоритет операций.


Использовать одинаковые строки таблицы

Если в условии сказано, что строки различны, один и тот же набор нельзя использовать дважды. Это одна из типичных ошибок, отмечаемых в методических материалах ФИПИ.


Главное

Не стоит учить таблицы истинности как набор случайных нулей и единиц.

Намного полезнее понимать смысл операций:

НЕ — наоборот.
И — должны выполниться оба условия.
ИЛИ — достаточно одного.
Импликация — запрещён вариант 1 → 0.
Эквивалентность — одинаковые значения.
XOR — разные значения.

После этого и задание №2, и более сложная логика в других заданиях ЕГЭ становятся значительно понятнее.


FAQ

Что нужно знать по логике для ЕГЭ по информатике?
Основные операции: отрицание, конъюнкцию, дизъюнкцию, импликацию, эквивалентность и их запись на Python.


Как запомнить импликацию?
Она ложна только в одном случае: 1 → 0.


Нужно ли решать задание №2 программой?
Нет. Многие задачи удобно решаются аналитически, но Python даёт универсальный способ проверки.


Тренировка на реальных заданиях ЕГЭ №2

INTERACTIVE_TASKПопробуйте сами

Пересдача 08.07.26

Миша заполнял таблицу истинности логической функции F=(z→¬(y→x))∨w, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

    F
 1  0
  000
 01 0

Определите, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

INTERACTIVE_TASKПопробуйте сами

Основная волна 19.06.26

Миша заполнял таблицу истинности логической функции F=¬(z→x)∨(y→w)∨¬y, но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

    F
01  0
 0  0
1 0 0

Определите, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

INTERACTIVE_TASKПопробуйте сами

ЕГКР 18.04.26

Миша заполнял таблицу истинности логической функции F=(x∧¬z∧¬w)∨(x∧¬z∧y) , но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

    F
1   1
0 1 1
  001

Определите, какому столбцу таблицы соответствует каждая из переменных w,x,y,z.

PRACTICE_CONTINUE

Хотите решить ещё?

Откройте бесплатный банк заданий №2 ЕГЭ по информатике и продолжайте практику без регистрации.

Перейти в банк заданий →