Цель урока: изучить алгоритмическую конструкцию «ветвление», команду ветвления и составные условия.
Ветвление — алгоритмическая конструкция, в которой в зависимости от условия выполняется та или иная последовательность действий.
Ветвление может изображаться на блок-схеме следующим образом:
Полная форма

Сокращенная форма

Для записи конструкции ветвления в языке программирования Python программирования используется команда if.
Строка if <условие>: является заголовком ветвления. Эту строку можно прочитать следующим образом: «Если условие верно».
Двоеточие (:) в конце заголовка сообщает что дальше находится блок команд 1 которые выполнятся если условие истинно.
После слова else записывается блок команд 2, которые выполнится, если условие ложно.
Блок команд, следующих после заголовка ветвления if и после else , записываются с отступом
Полная форма оператора «ветвление»

Сокращенная форма оператора «ветвление»

В языке Python для записи вложенных ветвлений (в случае, ложности первого условия) можно применять конструкцию elif.
Ключевое слово elif в записи команды по существу заменяет два других: else и if. Блоков elif может быть несколько, в том случае, если необходимо проверить не два условия, а больше.

Использование составных условий
Система условий исполнителя Робот
| wall_left() | Истинно, если слева от Робота стена |
| wall_right() | Истинно, если справа от Робота стена |
| wall_up() | Истинно, если сверху от Робота стена |
| wall_down() | Истинно, если снизу от Робота стена |
| cell_is_filled() | Истинно, если ячейка, в которой находится Робот, закрашена |
Команды-условия в цикле while и конструкции if можно соединять с помощью слов and (и), not (не), or (или) и получая составные условия.

Например, так:

Пример 1.

Робот должен закрасить клетку, которая находится за стеной. В зависимости от обстановки обход стены может осуществляться по-разному.
Обстановка заранее неизвестна.
from pyrob.api import *
@task
def prim_15_6():
move_right()
if wall_down():
move_up()
move_right()
move_down()
else:
move_down()
move_right()
move_up()
fill_cell()
run_tasks()
Пример 2.

Робот находится на произвольной, не прилежащей к границе, клетке поля.
Вокруг клетки сверху или снизу могут быть стены. Он должен закрасить клетку, на которой находится, если у неё есть хоть одна стена, иначе Робот должен сдвинуться влево.
Программа для решения этой задачи может быть записана двумя способами:
- с использованием конструкции elif;
- с использованием составного
условия.
Первый вариант решения, используя конструкцию elif
from pyrob.api import *
@task
def prim_15_8():
if wall_up():
fill_cell()
elif wall_down():
fill_cell()
else:
move_left()
run_tasks()
Второй вариант решения, используя составное условие
from pyrob.api import *
@task
def prim_15_8():
if wall_up() or wall_down():
fill_cell()
else:
move_left()
run_tasks()

Задания по теме урока
Ссылка на установщик программы (скачать)
Портабельная версия (скачать)
Архив распаковать, запустить файл thonny.exe
Задание 1. В системе программирования Thonny выполните задание у13_з1.py для исполнителя Робот: если клетка поля закрашена, то Робот должен перейти вправо.

Задание 2. В системе программирования Thonny выполните задание у13_з2.py для исполнителя Робот: закрасить клетку, если внизу нет стены. Положение Робота заранее неизвестно.

Задание 3. В системе программирования Thonny выполните задание у13_з3.py для исполнителя Робот.
Начальное положение: Робот может находится как в левом, так и в правом углу «коридора». Длина «коридора» — 5 клеток. В середине «коридора» есть «проход». Робот должен закрасить клетки сверху и снизу «прохода».

Задание 4. В системе программирования Thonny выполните задание у13_з4.py для исполнителя Робот: закрасить клетку в противоположном по диагонали углу. Положение Робота заранее неизвестно.
Примечание: используйте составное условие.

Задание 5. В системе программирования Thonny выполните задание у13_з5.py для исполнителя Робот.
Робот находится в центре поля. Через клетку от робота случайно появляется стена или стены. Нужно закрасить клетку где есть стена и клетку по центру.


Домашнее задание
§ 15 учебного пособия, ответить на вопросы
Форма отправки решений
Форма видна только зарегистрированным пользователям.
