4.3
(8)
Примерное время на чтение статьи: 2 минут

Задача № 2 из ЕГЭ по информатике относится к разделу «Логика и алгоритмы» школьного курса «Информатика» и ориентирована на проверку умения строить таблицы истинности и логические схемы.

Данная задача не предполагает какого-то программного решения, однако, ее можно решить и программированием.

В последние версии PascalABC.NET разработчиками добавлен модуль School (англ. школа), который содержит реализацию алгоритмов, часто встречающихся в школьных задачах.

Рассмотрим конструкции языка, используемые при построении логических высказываний.

  1. Расширение a.Imp(b) возвращает результат операции импликации a → b, допускается запись a<=b;
  2. Функция TrueTable((a, …, e) -> f(a, …, e)) возвращает матрицу типа boolean, содержащую таблицу истинности для заданной функции n-аргументов (где n не больше 5);
  3. Процедура TrueTablePrint(a) выводит таблицу истинности, полученную посредством функции TrueTable;
  4. Процедура 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
000
01010
100

В ответе напишите буквы  x, y, z, w; в том порядке, в котором идут соответствующие им столбцы (сначала — буква, соответствующая первому столбцу; затем — буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.

Пример. Пусть задано выражение x → y, зависящее от двух переменных x и y, и фрагмент таблицы истинности:

Переменная 1Переменная 1Функция
??????F
010

Тогда первому столбцу соответствует переменная 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

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 4.3 / 5. Количество оценок: 8

Оценок пока нет. Поставьте оценку первым.