Связь логики с условиями if в программировании — это одно и то же?
На информатике проходим логику (И, ИЛИ, НЕ, таблицы истинности), а на программировании пишем if. Это вообще связано? Когда в коде пишу if a and b: — это та самая конъюнкция из таблиц истинности или что-то другое? Хочу понять, как теория переходит в практику.
2 ответа
Это ровно одно и то же! Логика из информатики — это фундамент условий в коде. Когда ты пишешь if, ты вычисляешь логическое выражение, и оно подчиняется тем же таблицам истинности.
Соответствие операций (на примере Python):
| Логика | Python | C/C++/Java/JS |
|---|---|---|
| И (∧) | and |
&& |
| ИЛИ (∨) | or |
|| |
| НЕ (¬) | not |
! |
Пример: if age >= 14 and has_ticket: — это конъюнкция. Тело if выполнится только когда оба условия истинны — точно как A∧B в таблице.
И приоритет тот же: not сильнее and, and сильнее or. Поэтому if not a or b: читается как if (not a) or b:.
И де Моргана прямо в коде работает: not (a and b) можно переписать как not a or not b — иногда так читается понятнее.
Так что таблицы истинности — это не абстракция «для контрольной», а буквально то, как процессор решает, заходить в if или нет.
Добавлю про ленивые вычисления — это где практика чуть богаче теории. В коде a and b: если a уже ложно, b даже не проверяется (результат и так False). Это используют для защиты: if user is not None and user.active: — если user None, до .active дело не дойдёт и ошибки не будет. В чистой таблице истинности такого нюанса нет, а в программировании очень помогает.