Модуль School в PascalABC.net

PascalABC.NET – современный диалект языка программирования Паскаль, позволяющий записывать код компактно и понятно, используя современные языковые возможности. Это делает программу яснее и как следствие сокращает число возможных ошибок на ЕГЭ по информатике, связанных с волнением и другими субъективными причинами. 

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

Модуль School (англ. «школа») содержит реализацию алгоритмов, часто встречающихся в школьных задачах. Каждая реализация в основном имеет два формата – для вызова в виде функции и для записи в точечной нотации.

Решение заданий № 2 ЕГЭ.

Построение таблиц истинности (Осипов А."Выбор школьника. - часть 3")

– расширение a.Imp(b) возвращает результат операции импликации a → b;

функция TrueTable((a, b) -> f(a, b)) возвращает матрицу типа boolean, содержашую таблицу истинности для заданной функции двух аргументов;

функция TrueTable((a, b, с) -> f(a, b, c)) возвращает матрицу типа boolean, содержашую таблицу истинности для заданной функции трех аргументов;

функция TrueTable((a, b, c, d) -> f(a, b, c, d)) возвращает матрицу типа boolean, содержашую таблицу истинности для заданной функции четырех аргументов;

функция TrueTable((a, b, c, d, e) -> f(a, b, c, d, e)) возвращает матрицу типа boolean, содержащую таблицу истинности для заданной функции пяти аргументов;

процедура TrueTablePrint(a) выводит таблицу истинности, полученную посредством функции TrueTable;

процедура TrueTablePrint(a, f) выводит таблицу истинности, полученную посредством функции TrueTable. При f = 0 выводятся только строки, в которых значение функции равно False, при f = 1 – только строки, в которых оно равно True.

Рассмотрим следующий пример (ЕГЭ-2024): Миша заполнял таблицу истинности логической функции F:

(x  ¬y)  (y ≡ z)  ¬w,

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

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

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

Код программы:

uses school;

begin

  var lv:=TrueTable((x,y,z,w) → (x and not(y)) or (y = z) or not(w));

  TrueTablePrint(lv,0,'xyzw');

end.

Итак, стравним две таблицы: ТИ, построенную с помощью я.п. и таблицу, заполненную Мишей.

Две первых строки таблицы, построенной учащимся, содержат по два нулевых значения. Следовательно, третьи строки ТИ и таблицы учащегося совпадают. "0" (отмечен красным цветом) стоит в ячейке с именем Z. Далее, первый столбец не содержит "0" - будем считать, что этот столбец соответствует столбцу W ТИ. Итак, имена первых двух столбцов таблицы учащихся стали известны - "WZ".

Второй 0 строки 2 ТИ находится в ячейке с именем X (отмечены синим цветом в двух таблицах). Следовательно, последний столбец таблицы учащегося соответствует X. И, последний (необозначенный) столбец в таблице учащегося соответствует Y.

Итак, ответ: WZYX