Урок 13. Алгоритмическая конструкция «Ветвление»

Цель урока: изучить алгоритмическую конструкцию «ветвление», команду ветвления и составные условия.


Ветвление — алгоритмическая конструкция, в которой в зависимости от условия выполняется та или иная последовательность действий.

Ветвление может изображаться на блок-схеме следующим образом:

Полная форма

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

Для записи конструкции ветвления в языке программирования 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 для исполнителя Робот.

Робот находится в центре поля. Через клетку от робота случайно появляется стена или стены. Нужно закрасить клетку где есть стена и клетку по центру.


Это изображение имеет пустой атрибут alt; его имя файла - hw-e1653285769766.png

Домашнее задание

§ 15 учебного пособия, ответить на вопросы


Форма отправки решений

Форма видна только зарегистрированным пользователям.

Добавить комментарий