Алгоритм разветвленной структуры
Как мы уже говорили, любой алгоритм можно составить из нескольких базовых структур. Простейшая из них — линейная (следование). В ней команды выполняются однократно в той последовательности, как они записаны. Однако далеко не всегда для решения задачи последовательность действий одна и та же при любых исходных данных. Если на каком-то этапе исполнитель должен выбирать один вариант из нескольких, в алгоритме используют ветвление.
В алгоритме разветвленной структуры (ветвлении) в зависимости от истинности или ложности некоторого условия выбирается одна из двух серий команд.
Пример программы разветвленной структуры
Блок-схема
Программа на языке Python
# разветвленный алгоритм
a = float(input('a='))
b = float(input('b='))
c = float(input('c='))
d = b * b - 4 * a * c
if d < 0 :
print('корней нет')
else :
print('корни есть')
Обратите внимание, что операторы в каждой части условного оператора if...else...
сдвинуты вправо. Именно по этому смещению — оно должно быть одинаковым для всех строк в блоке — транслятор языка Python и определяет, какие операторы входят в этот блок. Принято делать отступ величиной в 4 пробела.
В том случае, если при ложности условия никаких действий не выполняется, на блок-схеме на стрелке «НЕТ» не чертят никаких блоков, а в записи условного оператора пропускают часть «else». Если же, напротив, при невыполнении первого условия нужно выбирать еще из нескольких вариантов, возможно использование сокращения «elif» (от «else if» — «иначе, если»). Например:
if d < 0 :
print('корней нет')
elif d == 0 :
print('один корень')
else :
print('два корня')
Если d меньше 0, то
вывести на экран «корней нет».
Иначе, если d равен 0, то
вывести на экран «один корень».
Иначе [то есть, когда не выполнено ни одно из условий]
вывести на экран «два корня».
Если в программе есть ветвление, нужно…
- Определить, какие существуют варианты действий и сколько их всего. Количество условий будет на одно меньше, чем число вариантов.
- Выяснить, при каких условиях должен выполняться каждый из вариантов.
- Если вариантов больше двух, выбрать последовательность проверки условий. При необходимости построить блок-схему.
- Записать алгоритм на языке программирования.
- Подобрать данные для тестирования программы (предусмотреть наборы данных, позволяющие проверить каждый вариант действий).
Операции сравнения
При записи условий в языке Python можно использовать следующие операции сравнения:
Операция | Обозначение | Пример записи |
Равно? | == | d == 0 |
Больше? | > | x + y > 100 |
Меньше? | < | z < 5 * x |
Больше либо равно? | >= | math.sin(a) >= 0.5 |
Меньше либо равно? | <= | v <= 60 |
Не равно? | != | y != 0 |
Результатом операции сравнения всегда будет логическое значение — либо False (ложь), либо True (истина).
Логические операции
Нередко условие, требующее проверки, нельзя выразить с помощью единственного сравнения. Тогда используют составные условия, образующиеся с помощью логических операций. В языке программирования Python их три:
Операция | Обозначение | Результат | Пример записи |
«И» (конъюнкция) | and | «истина», если истинны оба операнда (и первый, и второй) | (x > -2) and (x < 2) |
«Или» (дизъюнкция) | or | «истина», если истинен хотя бы один операнд (первый или второй) | (x < -2) or (x > 2) |
«Не» (инверсия) | not | «истина», если операнд ложен | not (a > b) |
Задания
- Определите значение следующего выражения при x=1, y=2:
(x >= 0) or (y * y != 4)
(x * y != 0) and (x < y)
(not(x * y > 0)) and (y > x)
- Запишите по правилам Python следующие выражения:
- a меньше 8 или b больше -10;
- d меньше либо равно 0 или w больше d;
- 0 < y ≤ 100.
- Составьте на языке Python программу, определяющую, какой из двух мешков тяжелее при условии, что масса первого из них (m1) вводится в килограммах, а второго (m2) — в пудах.
Для справки:
1 пуд = 16,38 кг