Задача № 2 из ЕГЭ по информатике относится к разделу «Логика и алгоритмы» школьного курса «Информатика» и ориентирована на проверку умения строить таблицы истинности и логические схемы.
Данная задача не предполагает какого-то программного решения, однако, ее можно решить и программированием.
В последние версии PascalABC.NET разработчиками добавлен модуль School
(англ. школа), который содержит реализацию алгоритмов, часто встречающихся в школьных задачах.
Рассмотрим конструкции языка, используемые при построении логических высказываний.
- Расширение
a.Imp(b)
возвращает результат операции импликацииa → b
, допускается записьa<=b;
- Функция
TrueTable((a, …, e) -> f(a, …, e))
возвращает матрицу типаboolean
, содержащую таблицу истинности для заданной функции n-аргументов (где n не больше 5); - Процедура
TrueTablePrint(a)
выводит таблицу истинности, полученную посредством функцииTrueTable;
- Процедура
TrueTablePrint(a, f)
выводит таблицу истинности, полученную посредством функцииTrueTable
. Параметрf
позволяет фильтровать выводимые строки: приf = 0
выводятся только строки, в которых значение функции равно False, приf = 1
– только строки, в которых оно равно True
Пример. Построим таблицу истинности для логического выражения
##
uses school;
var tt := TrueTable((a, b, c) → a and b or c);
TrueTablePrint(tt);
Результат работы программы:
a b c F
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
Использование параметра f
со значением 0 или 1 процедуры TrueTablePrint
позволит отфильтровать выводимые строки, пропустив на печать те из них, в которых значений функции совпадает со значением f
.
Рассмотрим решение задачи из ЕГЭ-2019 (досрочная волна)
Пример. Логическая функция F задаётся выражением (x ∧ ¬y) ∨ (y ≡ z) ∨ ¬w
. Дан частично заполненный фрагмент, содержащий неповторяющиеся строки таблицы истинности функции F
. Определите, какому столбцу таблицы истинности соответствует каждая из переменных x, y, z, w
.
Переменная 1 | Переменная 2 | Переменная 3 | Переменная 4 | Функция |
??? | ??? | ??? | ??? | F |
0 | 0 | 0 | ||
0 | 1 | 0 | 1 | 0 |
1 | 0 | 0 |
В ответе напишите буквы x, y, z, w
; в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.
Пример. Пусть задано выражение x → y
, зависящее от двух переменных x и y
, и фрагмент таблицы истинности:
Переменная 1 | Переменная 1 | Функция |
??? | ??? | F |
0 | 1 | 0 |
Тогда первому столбцу соответствует переменная y
, а второму столбцу соответствует переменная x
. В ответе нужно написать: yx
.
Поскольку пока не известно, в каком столбце заголовка стоит какая переменная, дадим им произвольные имена по порядку, например a, b, c, d
. После чего подставим их в функцию F
и отобразим только строки, соответствующие значению F=0
:
##
uses school;
var tt := TrueTable((a, b, c, d) → (a and not b) or (b = c) or not d);
TrueTablePrint(tt, 0);
Результат работы программы:
a b c d F
0 0 1 1 0
0 1 0 1 0
1 1 0 1 0
Сопоставляя выходную таблицу и до конца не заполненную по заданию, заключаем, что d=w, b=y, c=z, a=x
.
Ответ: xwzy
Свежие комментарии