Реализация алгоритмов с ветвлениями
Повторим
- ветвление – часть алгоритма, в которой, в зависимости от результата проверки условия («да» или «нет»), предусмотрено выполнение одной из двух последовательностей действий (ветвей)
- простое ветвление в Python организуется с помощью условного оператора (запись в полной форме)
if Условие:
Блок инструкций 1
else:
Блок инструкций 2 - вложенное (каскадное) ветвление в Python строится так:
if условие 1:
Блок инструкций 1
elif условие 2:
Блок инструкций 2
...
elif условие N:
Блок инструкций N
else:
Блок инструкций для остальных случаев - указанные блоки инструкций в Python являются вложенными в соответствующие ветви, поэтому при написании программы нужно строго отслеживать отступы таких блоков
Задание-разминка
Чем отличаются следующие фрагменты программ:
- if a > b: a = b
a = c
и
if a > b: a = b
else: a = c - if a > b: a = b
if a > c: a = c
и
if a > b: a = b
elif a > c: a = c
Для каких исходных данных результаты выполнения обеих программ (значение переменной a) будут одинаковыми, а для каких – различными?
Требуется записать в переменную М максимальное из трёх чисел, хранящихся в переменных a, b и c. Решает ли эту задачу такая программа?
if a > b: M = a
else: M = b
if c > b: M = c
else: M = b
При каких значениях переменных в переменной M будет получен неправильный ответ? Как нужно изменить программу, чтобы она всегда работала правильно?
Задачи для урока
Среда программирования Repl.It (авторизация через Google-аккаунт)
- Вкладчик хочет положить некоторую сумму в банк на несколько лет.
Альфа-банк принимает вклад под простые проценты, исходя из 15% годовых, Бета-банк - под сложные проценты с 13% годовых и ежегодной капитализацией.
Составьте программу, которая порекомендует вкладчику один из банков, исходя из суммы, которой он обладает.
Формулы для расчета суммы S через N лет, если S1 – начальная сумма, P - процентная ставка (внимание! она – разная в этих банках):
Альфа-банк S=S1(1+P/100*N)
Бета-банк S=S1(1+P/100)**N
(обсуждение алгоритма) - Известны количество этажей в многоквартирном доме и количество квартир на этаже. Определить по номеру квартиры ее расположение: подъезд, этаж (модель задачи)
- На одном маленьком квадратном необитаемом острове со стороной А м жили К потерпевших кораблекрушение Робинзонов. Не нарушены ли их права на жилье, если на каждого Робинзона должно приходиться не менее В квадратных метров острова? Скольким Робинзонам еще хватит места на острове, если поблизости случится новое крушение? (модель задачи)
Самостоятельное задание
Выполнить в среде программирования или записать на листке программу решения
- задачи, рассмотренной на синхронном уроке
- другой из задач (на выбор)
Сдать работу в Классе.