занятие по теме "Основы математической логики"

  • Документация
  • pdf
  • 04.02.2025
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Разбор задания №2 ЕГЭ по информатике (фрагмент урока)
Иконка файла материала Мероприятие №2 Егэ информатика.pdf

Мероприятие «Подготовка к ЕГЭ» (фрагмент).

Цель мероприятия:

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

 

 

1.      Организационный момент:

Разбор задания базового уровня №2 ЕГЭ (демоверсия 2023 года) по информатике. Оценивается в 1 балл, время на решение от 3 до 5 минут.

 

2.      Новый материал:

                Задание:                             

Миша заполнял таблицу истинности логической функции F: ¬(y → x) \/ (z → w) \/ ¬z

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

 

 

 

 

 

F  

 

0

 

 

0  

0

1

 

 

0  

 

 

0  

 

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

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

Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.  

 

 

F  

0  

В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx

  Это задание выполняется в языке программирования, пишется программа. Но до этого вспоминается некоторый материал. а)      for x in range(2):

                        print (x)

В результате выполнения данной программы выводится:

0

1 (проговариваем цикл с отступами) б)     for x in range(2):

                        for y in range(2):                      print (x,y)

В результате выполнения данной программы выводится:

0 0

0 1

1 0

1 1 (проговаривается)

в)         for x in range(2):

                        for y in range(2):

                        for w in range(2):                                 print (x,y,w) 0 0 0

0 0 1

0 1 0

0 1 1

1 0 0

1 0 1

1 1 0

1 1 1

г) Для 4-х элементов программ выдаст 16 строк перебора нулей и единиц. Решение задания:

Приступаем к заданию.  Необходимо для 4-х переменных отобрать те значения этих переменных, при которых данная формула даёт ложь, а для этого используется условие в последнем цикле. for x in range(2):     for y in range(2):         for w in range(2):             for z in range(2):

                if (not(y<=x) or (z<=w) or not(z))==False:

                    print (x,y,w,z) (программа проговаривается) В результате выполнения данной программы выводится:

0  0 0 1

1  0 0 1

1 1 0 1

То есть:

X Y W Z   F

0    0   0  1   0

1    0   0  1   0

1  1   0  1   0 

Теперь переходим к анализу программы и таблицы из задания:

 

 

Что полу

чилось:

 

 

Таблица

задания:

 

X

F  

 

Y

X

Z

W

F  

0

0

0

1

0  

0

0

1

0

0  

1

0

0

1

0  

0

1

1

0

0  

1

1

0

1

0  

1

1

1

0

0  

 

 

  

 

 

 

 

 

Анализируем:

Ответ: YXZW

 

3. Закрепление:

а)  Для детей со средними способностями рассматриваем задание из Яндекс учебника по

ссылке (https://education.yandex.ru/ege)  «Пробный вариант ЕГЭ №2 (февраль 2024). Антон заполнял таблицу истинности логической функции F:

((a /\ b) → c) /\ ((b /\ c) → d), 

но успел заполнить лишь фрагмент из трёх различных её строк, даже не указав, какому столбцу таблицы соответствует каждая из переменных a, b, c, d.  

 

Определите, какому столбцу таблицы соответствует каждая из переменных a, b, c, d. 

В ответе напишите буквы a, b, c, d в том порядке, в котором идут соответствующие им столбцы (сначала буква, соответствующая первому столбцу; затем буква, соответствующая второму столбцу, и т.д.). Буквы в ответе пишите подряд, никаких разделителей между буквами ставить не нужно.  Решение: for a in range(2):     for b in range(2):         for c in range(2):             for d in range(2):                 if (((a and b)<=c) and ((b and c) <= d))==False:                     print (a,b,c,d)

В результате выполнения данной программы выводится:

0  1 1 0

1  1 0 0 

1 1 0 1

1 1 1 0

То есть:

a  b   c  d   F 0  1   1  0   0

1  1   0  0   0

1  1   0  1   0  1  1   1  0   0

Теперь переходим к анализу программы и таблицы из задания:

 

 

Что полу

чилось:

 

 

Таблица

задания:

a

F  

 

d

b

a

c

F  

0

1

1

0

0  

0

1

1

1

0  

1

1

0

0

0  

0

1

0

1

0  

1

1

0

1

0  

1

1

1

0

0  

1

1

1

0

  

0

0

1

1

0

0

 

 

 

 

Анализируем: Ответ: dbac

б)  Для детей с сильными способностями рассматриваем задание из Яндекс учебника по

ссылке (https://education.yandex.ru/ege)  «Пробный вариант ЕГЭ №3 (март 2024). Сергей заполнял таблицу истинности логической функции F:

((1 ≡ w) ≡ (¬((w /\ x) \/ y))) → z), 

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

 

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

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

Пример. Функция F задана выражением ¬x \/ y, зависящим от двух переменных, а фрагмент таблицы имеет следующий вид.  

 

 

F  

0  

В этом случае первому столбцу соответствует переменная y, а второму столбцу – переменная x. В ответе следует написать: yx

Решение: Рассматриваем сначала ложность данной формулы, для этого программа выглядит так: for x in range(2):     for y in range(2):         for w in range(2):             for z in range(2):                 if (((1==w) == (not((w and x) or y))) <=z)==False:                     print (x,y,w,z)

 

0 0 1 0

0  1 0 0

1  1 0 0

 

for x in range(2):     for y in range(2):         for w in range(2):             for z in range(2):                 if (((1==w) == (not((w and x) or y))) <=z)==True:                     print (x,y,w,z)

 

 

0 0 0 0

0 0 0 1

0 0 1 1

0 1 0 1

0 1 1 0

0  1 1 1

1  0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 1

1 1 1 0

1 1 1 1

После получения данных результатов, видно, что анализировать ребёнку довольно тяжело, поэтому здесь можно использовать второй шаблон прогрммы на Python.

from itertools import* def f(x,y,w,z):

    return (((1==w) == (not((w and x) or y))) <=z)

 

for a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 in product ([0,1], repeat=10):     t=[(a1,a2,1,a3),(1,a4,1,a5),(0,1,0,0),(1,a6,1,a7),(a8,a9,1,a10)]     if len(set(t))==5:

        for p in permutations ('xywz'):

            if [f(**dict(zip(p,r))) for r in t]==[0,0,1,1,1]:                 print (*p)

Ответ: x z y w После написания данной программы выходит ответ (ребёнку не надо самому анализировать). Рефлексия:

Посмотрите также