Теория:
Характеристика задания
1. Тип ответа: запись правильной последовательности букв.
2. Структура содержания задания: дано логическое выражение и таблица истинности.
3. Уровень сложности задания: базовый.
4. Примерное время выполнения: \(3\) минуты.
5. Количество баллов: \(1\).
6. Требуется специальное программное обеспечение: не обязательно.
7. Задание проверяет умение работать с логическими переменными, выполнять логические операции, строить таблицы истинности.
Пример задания
Николай заполнял таблицу истинности логической функции \(F\)
,
но успел заполнить только фрагмент из трёх различных её строк, не указав, какому столбцу таблицы принадлежит каждая из переменных \(w\), \(x\), \(y\), \(z\).
\(F\) | ||||
\(1\) | \(1\) | \(1\) | ||
\(0\) | \(0\) | \(1\) | ||
\(0\) | \(1\) | \(0\) | \(1\) |
Определи, какому столбцу таблицы принадлежит каждая из переменных \(w\), \(x\), \(y\), \(z\).
В ответе напиши буквы \(w\), \(x\), \(y\), \(z\) в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т. д.). Буквы в ответе пиши подряд, никаких разделителей между буквами ставить не нужно.
Как решать задание?
Данное задание можно решать несколькими способами: путём логических рассуждений; использовать электронные таблицы \(+\) логические рассуждения; с помощью программирования.
Мы рассмотрим вариант решения с помощью языка программирования Python.
Вспомнить основные логические операции можно тут.
Правила построения таблиц истинности можно вспомнить тут.
Законы алгебры логики можно вспомнить тут.
Вспомним управляющие конструкции в Python:
цикл с параметром | for переменная in диапазон: тело цикла | for \(y\) in \(0\), \(1\): тело цикла |
условие | if условие then: действия, если условие истинно else: действия, если условие ложно | if \(C>D\): print ('истина') else: print ('ложь') |
Запись логических операций на Python
Название операции | Запись на Python |
конъюнкция | \(and\) |
дизъюнкция | \(or\) |
отрицание | \(not\) |
импликация | \(<=\) |
тождество | \(==\) |
Напишем программу
| Выведем на экран искомые значения для того, чтобы при выводе значений знать, где какая переменная | |
Для каждой переменной сформируем вложенный цикл, где будем перебирать все возможные значения (\(0\) и \(1\)) для каждой переменной; in range (\(2\)): перебор значений \(0\) и \(1\), можно записать по другому: in range (\(0\),\(2\)) | |
![]() | Вложенный цикл для переменной \(y\) |
![]() | Вложенный цикл для переменной \(z\) |
![]() | Вложенный цикл для переменной \(w\) |
![]() | Для всех циклов пропишем условие — нашу формулу, преобразовав её для Python |
![]() | Прописанное условие будет срабатывать только в том случае, если выражение будет истинно. Выведем значения на экран |
Запуск программы
![]() | Полученный результат необходимо сравнить с таблицей из условия |
Сопоставим полученную таблицу истинности с таблицей из условия. Нам необходимо сравнивать условие с результатами, как по строкам, так и по столбцам, отыскивая некоторые закономерности и невозможности. Заметим, что столбец \(y\) содержит в себе три единицы, что может быть только в третьем столбце таблицы из условия. Четвёртый столбик таблицы из условия также можем дополнить единицей, и к этому столбику подходят как \(z\), так и \(w\).
Теперь проанализируем строки. В первой строке получилось три единицы, что соответствует четвёртой строке результата программирования, дополняем нулём первую строку. В третьей строке у нас два нуля, поэтому добавляем единицу. Проверяем, чтобы сошлось по строке. Заполним второй столбец, допишем единицу. Этот столбец как раз и будет являться \(x\). Остаётся проанализировать столбцы \(1\) и \(4\).
Рассмотрим первую строку: \(x = 0\), \(y = 1\), \(z = 0\), следовательно, \(z\) — это четвёртый столбик, а \(w\) — первый.

Рис. \(1\). Ход решения
Ответ: \(wxyz\).
Источники:
Рис. 1. © ЯКласс.
Изображения. © ЯКласс.





