В программировании часто логика работы программы зависит от каких-то условий. Можно привести пример из обычной жизни - часть логики работы банкомата – если введённый пин-код верны –то надо продолжить работу, если пин-код не правильный – то сообщить об ошибке.
Для описания условий в программировании используется логический оператор.
ЕСЛИ –ТО – ИНАЧЕ
который еще называется условным оператором. Это конструкция, которая описывает условие, и что делать, если условие выполняется или не выполняется (отсюда и фрагмент ИНАЧЕ). На Python синтаксис условного оператора выглядит следующим образом:
Для проверки всех возможных условий используются операторы сравнения:
Символ | Смысл | Пример |
---|---|---|
> | больше | a > 5 |
< | меньше | a < 8 |
>= | больше или равно | a >= 7 |
<= | меньше или равно | a <= 9 |
== | равно | a == b |
!= | не равно | a != b |
and | конъюнкция | a > 5 and b < 5 |
or | дизъюнкция | a > 5 or b < 5 |
not | логическое отрицание | a > 5 and not(b < 5) |
Рассмотрим пример задания из экзамена.
Задание на анализ программы с ветвлением.
Ниже приведена программа, записанная на пяти языках программирования.
Было проведено 9 запусков программы, при которых в качестве значений переменных s и t вводились следующие пары чисел:
(13, 2); (11, 12); (–12, 12); (2, –2); (–10, –10); (6, –5); (2, 8); (9, 10); (1, 13).
Укажите наименьшее целое значение параметра A, при котором для указанных входных данных программа напечатает «NO» восемь раз.
Решение.
Посмотрим отдельно на часть программы с if.
Логика работы этой части следующая: если выполнится хотя бы одно из неравенств, то программа напечатает "YES".
Мы можем сразу отобрать входные данные, которые приведут к выводу "YES" вне зависимости от значения параметра А за счёт истинности неравенства t > 12.
Такая пара значений только одна - (1, 13), остальные могут стать истинными только за счёт первого неравенства в if.
Для того, чтобы программа напечатала "NO" оба неравенства должны не выполниться.
Получается, что условия для вывода "NO" можно описать системой:
\(\left\{ \begin{matrix} s \leq A \\ t \leq 12 \\ \end{matrix} \right.\ \)
На второе неравенство значение параметра А не влияет, и мы уже выше определили входные данные, которые не дадут нужный вывод из-за значения t.
Осталось как раз 8 наборов входных данных и, значит, все они должны привести к выводу "NO". Будем рассматривать только значения s.
s = 13; 11, 12; –12; 2; –10; 6; 2; 9;
Все эти значения должны оказаться меньше или равны значению параметра. Значит, минимальное подходящее значение А это 13.
Ответ: 13