Учебник MAXIMUM Education

Интернет-энциклопедия по школьным предметам от Maximum Education. Учебник поможет решить домашнее задание, подготовиться к контрольной и вспомнить прошлые темы.

9 класс
Информатика

Анализ программ с ветвлением

В программировании часто логика работы программы зависит от каких-то условий. Можно привести пример из обычной жизни - часть логики работы банкомата – если введённый пин-код верны –то надо продолжить работу, если пин-код не правильный – то сообщить об ошибке.

Для описания условий в программировании используется логический оператор.

ЕСЛИ –ТО – ИНАЧЕ

который еще называется условным оператором. Это конструкция, которая описывает условие, и что делать, если условие выполняется или не выполняется (отсюда и фрагмент ИНАЧЕ). На 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)

Пускай нам надо написать программу, которая считает, хватит ли пользователю денег на Rolls-Royce (в вымышленной стране Rolls-Royce стоит 100 единиц). Программа будет выглядеть следующим образом:

Рассмотрим пример задания из экзамена.

Задание на анализ программы с ветвлением.

Ниже приведена программа, записанная на пяти языках программирования.

Было проведено 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