Найти в Дзене
ИнфоКод

Второе задание ЕГЭ по информатике с нуля! (обложка просто красивая)

В данный момент информатика является одним из самых популярных предметов по выбору для сдачи ЕГЭ. Виной всему, конечно же, бум айти-специальностей и повышенный интерес к информационным технологиям.

Стоит сказать, что ЕГЭ по информатике ещё и очень необычный экзамен. Он проводится ПОЛНОСТЬЮ за компьютером, от тебя, как от участника экзамена, не требуют решений. Твое дело — любым способом решить поставленную задачу и написать ТОЛЬКО ответ.

И, конечно же, никуда в информатике без программирования. Почти все задачи можно решать с помощью самого популярного и, наверное, простого (как минимум для сдачи экзамена) языка программирования PYTHON. У меня в планах есть выпуск курса по Python для ЕГЭ и не только (с 0). Если интересно, напишите, пожалуйста, об этом в комментариях.

Сейчас о другом: первая задача, которую я советую решать исключительно программированием — это вторая задача экзамена. Её можно решать аналитически (руками на бумажке) или Excel'ем. Но, поверьте, оно того просто не стоит. Задание с помощью Python решается настолько просто и быстро, что после изучения этого способа пробовать что-то другое, ну, просто не захочется.

Суть задания и теоретическая справка(много букв).

Вторая задача из ЕГЭ по информатике связана с построением таблицы истинности по логическому выражению.

Немного напомню (если в школе ну, хотя бы раз, слышали такое выражение, как "Таблица истинности").

Таблица истинности — это такая структура (в виде таблицы, конечно же), которая показывает все возможные значения истинности логического выражения. Она строится с помощью бинарного кода (1 и 0), где 1 считается истиной, а 0, соответственно, ложью.

Логическое выражение здесь стоит рассматривать как некую последовательность переменных (буквы) и логических операций между ними. Называется это алгеброй логики, но конкретно здесь нам не нужно о ней почти ничего знать. Но некоторые основы я всё таки дам.

Выделю 3 основных операции:

1. Инверсия: меняет значения переменной на противоположное. Обозначается: ¬переменная или ¬(выражение). Так как у нас значением переменной является либо 1, либо 0, то поменять на противоположное какое-то данное трудным не представится.

Подумайте, что на что будет меняться при инверсии, если каждая переменная может равняться либо 1, либо 0?

Таблица истинности для этой операции и при применении инверсии к одной переменной выглядит вот так:

Я рисую таблицу в Экселе просто для наглядности примеров (инверсия)
Я рисую таблицу в Экселе просто для наглядности примеров (инверсия)

2. Конъюнкция: не вдаваясь в теорию информатики вообще, скажу, что операция бинарная (работает уже с двумя переменными или выражениями) и, по своей сути, полностью повторяет операцию "умножение". Её так и называют, иногда. В общем, истину (1) она выдает только в том случае, если и первая, и вторая переменная одновременно являются истинами (тут же это сходство в математическим умножением и прослеживается - если в произведении есть хотя бы один 0, то все произведение равняется 0).

Обозначается в алгебре логики эта операция вот так: ∧ (как пересечение в геометрии, только угловатое) (знак стоит между двумя переменными или выражениями).

Таблица истинности для этой операции выглядит вот так:

Таблица истинности для конъюнкции
Таблица истинности для конъюнкции

Обратите внимание, как выглядят первые два столбца. Для двух переменных они всегда будут выглядеть именно так. Количество строк в таблице истинности определяется формулой: 2^n (2 в степени n), где n - количество переменных (разных букв) в логическом выражении. В данном случае переменных две: A и B. Соответственно, строк будет 4. А заполняются они всегда подобным образом.

3. Дизъюнкция: совсем просто скажу — логическое сложение. Выдает истину в тех случаях, если хотя бы одна из переменных равняется истине (1). Обозначается: ∨ (как объединение в геометрии, только угловатое).

Выглядит таблица истинности для дизъюнкции вот так:

Таблица истинности для дизъюнкции
Таблица истинности для дизъюнкции

В заданиях также встречаются импликация и эквивалентность, но конкретно в этой статье рассматривать это не имеет смысла. Если интересно, я сделаю отдельную статью по алгебре логики. Дайте знать в комментариях!

Поэтому, не буду тянуть, и перейду к самому заданию. Задание я возьму с сайте КЕГЭ:

Номер: 17856 (Демоверсия 2025).

№17856 КЕГЭ
№17856 КЕГЭ

В демоверсии нам предложили самый базовый вариант задания №2 из всех возможных.

Определимся: у нас есть выражение, состоящее из 4 переменных. Само выражение записано в функцию F (то есть всё это большое выражение обозначено буквой F). По данному выражению кто-то строил таблицу истинности, но потерял часть -> наша задача помочь понять, какой столбец таблицы к какой переменной относится.

Для решения данной задачи будем использовать Python (да, я уже писал выше об этом). Вам необходимо его себе скачать. Сделать это можно с официального сайта: скачать питончик. Скачав последнюю версию, в комплекте будет идти программка под названием: IDLE Python. Это простейшее окружение для написания кода. Писать весь код мы будем в ней (на ЕГЭ, скорее всего, вы тоже будете работать именной с этой программой).

На будущее: каждая программа должна находиться в новом файле. Открыв IDLE, надо нажимать file -> new file. В данном пустом листике мы пишем код, после, запускаем его (сохранив куда-то, куда удобно). Запустить код: run -> run module.

Программа в меню Пуск.
Программа в меню Пуск.
Создание нового файла в IDLE
Создание нового файла в IDLE
Запуск программы после её написания.
Запуск программы после её написания.

Теперь, наконец, к задаче. Информация, которую я дам сейчас, нужно выучить и понять.

1. Как переписать выражение на Python?:

Наша первая задача понять, каким образом выражение выглядит на питонячем (питоновском) языке. Мы просто выучим, как обозначаются операции:

Обозначение операций из задания на Python
Обозначение операций из задания на Python

Очень важно: возьмите за привычку писать отрицание в скобках на Python. То есть (not(A)), например.

Напомню задание: мы видим, что последний столбец (F) равен 0. Это значит, что нас интересует только тот случай, когда вся формула равна 0.

№17856 КЕГЭ
№17856 КЕГЭ

1. Первым делом в коде нам нужно сделать так, чтобы каждая переменная принимала значение от 0 до 1 включительно. Переменных у нас 4. Делается это с помощью цикла for (напоминаю про курс "Основы Python" — если нужен, пишите).

Каждой переменная меняет своё значение из выборки, состоящей из двух элементов: 0 и 1.
Каждой переменная меняет своё значение из выборки, состоящей из двух элементов: 0 и 1.

2. Предлагаю после всех этих циклов создаться переменную F, в которой будет наша формула. Важно: ставьте общие скобки для всей формулы (от себя, в задании их нет) и в них уже переписываем формулу из задания.

Переписали формулу в переменную F.
Переписали формулу в переменную F.

Обратите внимание на скобки. Я взял всё выражение в скобки, которые я добавил от себя. И not тоже обособил скобками. То есть, скобки есть у самой операции, и ещё она сама берется в них.

Проверяйте себя так: количество скобок открывающихся должно совпадать с количество скобок закрывающихся. И их всегда будет больше, чем в самом задании. Как минимум на одну конструкцию.

3. Говорим программе, что нам интересны только те случаи, когда F = 0. Буквально: "если F = 0 выведи нам значения x,y,z,w):

Код с проверкой условия
Код с проверкой условия

Обратите внимание на отступы. Они показывают, что находится внутри какой конструкции. Выводить мы будем (print) только при выполнении условия.

Добавим ещё один штрих для того, чтобы вывелась таблица так, как она должна выглядеть.

Добавляем последний штрих
Добавляем последний штрих

Print сверху нужен для того, чтобы в таблице, которая выведется, было название столбцов.

Запускаем программу(run -> run module). Если все написано верно, то выведется таблица (такая, какой она должна быть).

Таблица истинности с названиями столбцов.
Таблица истинности с названиями столбцов.

Но это ещё не всё. Далее нам нужно сопоставить готовую (из Python) таблицу с недостроенной таблицей из задания. Поделать разные логические выводы и записать в ответ полученную последовательность букв по столбцам. Ваша задача заскринить таблицу из кода и таблицу из задания, и вставить это всё в paint.

Для удобства и наглядности делаем так
Для удобства и наглядности делаем так

Логические выводы:

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

1. Обратим внимание, что в недостроенной таблице, в каждом столбце присутствует 0, кроме крайнего левого столбца. В нормальной таблице без единого 0 столбец z. Несложно сделать вывод, что он-то и будет соответствовать левому столбцу таблицы в задании.

Смело делаем вывод
Смело делаем вывод

2. Попробуйте сами за что-то зацепиться. Нашли?

На самом деле, теперь получается такая ситуация: у нас в оригинальной таблице (таблице из Python) есть столбец, состоящий полностью из нулей. В недостроенной таблице из задания такой столбец нигде не поставить, кроме самого правого. Заметили? Во всех остальных хотя бы одна единица есть. То есть трех нулей там уже, в принципе, быть не может, физически.

Также смело делаем второй вывод.
Также смело делаем второй вывод.

3. Далее вывод по столбцам сделать очень сложно. Зато обращу внимание, что у нас открыта целая строка (последняя). В оригинальной таблице есть строка, состоящая из двух единиц и двух нулей, и как раз-таки подобная-то у нас и открыта.

Одна единица в этой строке уже найдена — это по столбцу z. С ноликов та же ситуация — по столбцу x. Ещё одна единица в этой строке попадается по столбцу y. Ну, а по остаточному принципу 0 — w.

Не так смело, но вывод сделали.
Не так смело, но вывод сделали.

Ответ: zywx

В ответ без пробелов и других знаков записываем получившуюся у нас последовательность названий переменных у столбцов.

Пара выводов о задании:

1. Код шаблонный, отличается только формула в задании.

2. В таблице и порядок строк, и порядок столбцов спутан, поэтому, исходя из порядка ВЫВОДЫ НЕ ДЕЛАЕМ. Делаем только по количеству 1 и 0 в строках и столбцах.

3. Вы пишите ЕГЭ за компом. Пользуйтесь всем, чем можно. (Paint, ножницы - можно).

4. Следим за скобками.

5. F всегда чему-то равняется, либо единицам, либо нулям. В условии пляшем от этого.

6. Название переменных тоже может отличаться.

На этом всё! Отвечу на вопросы в комментариях (наверное). Что рассмотреть далее — пишите.

Спасибо за прочтение!

-19