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

advertisement
§ 3.3.Управление исполнителем Робот
Простые и составные условия
Часть 2
ИНФОРМАТИКА 7 КЛАСС
В цикле «пока» могут использоваться
простые и составные условия.
Простые условия
В СКИ Робота есть специальные логические команды.
У Робота есть датчики, которые позволяют определять, что находится в той
клетке, где он сейчас находится, и в соседних клетках. Датчики определяют,
например, есть ли стена в каком-то направлении.
Логические команды Робота
справа_стена
справа_клумба
справа_свободно
слева_стена
слева_клумба
слева_свободно
впереди_стена
впереди_клумба
впереди_свободно
сзади_стена
сзади_клумба
сзади_свободно
грядка
база
Команды грядка и база определяют, есть ли грядка (или база) в клетке, где
сейчас находится Робот.
2(17)
СОСТАВНОЕ УСЛОВИЕ ОБРАЗУЕТСЯ ИЗ ОДНОГО ИЛИ НЕСКОЛЬКИХ
ПРОСТЫХ УСЛОВИЙ И СЛУЖЕБНЫХ СЛОВ И, ИЛИ, НЕ.


Рассмотрим составное условие А И В, где А, В — простые
условия. Условие А И В выполнено, когда выполнено
каждое из двух входящих в него простых условий.
Пусть А - простое условие справа свободно, В — простое
условие справа свободно. Рассмотрим подробно
проверку составного условия А И В - сверху свободно.
Составное условие НЕ А выполнено, когда не
выполнено условие А.
РАССМОТРИМ ПРИМЕР ИСПОЛЬЗОВАНИЯ
СОСТАВНОГО УСЛОВИЯ.
Известно, что Робот
находится где-то в
вертикальном
коридоре. Ни одна из
клеток коридора не
закрашена.
Составим Алгоритм, под
управлением которого
Робот закрасит все клетки
этого коридора и вернется в
исходное положение.
Так как Роботу предстоит закрасить только клетки коридора, мы
должны «научить» его их распознавать. Чем же клетки коридора
отличаются от всех прочих клеток поля? Из рисунка видно, что
каждая клетка коридора слева и справа ограничена стеной.
Робот находится в коридоре, пока
слева стена и справа стена. В
СКИ нашего исполнителя такие
условия не предусмотрены. Там
есть противоположные условия:
слева свободно, справа свободно.
Используем служебное слово НЕ:
слева стена —> НЕ слева свободно
справа стена —> НЕ справа
свободно
Нужное условие примет вид:
НЕ слева свободно И НЕ справа
свободно.
ПРЕДСТАВИМ ПЛАН ДЕЙСТВИЙ РОБОТА
УКРУПНЕННЫМИ ШАГАМИ
ДЛЯ ПРОСТОТЫ ПРЕДПОЛОЖИМ, ЧТО НАД КОРИДОРОМ И ПОД
КОРИДОРОМ ЕСТЬ ХОТЯ БЫ ПО ОДНОЙ КЛЕТКЕ БЕЗ СТЕН
(ИНАЧЕ ПРИДЕТСЯ ДЕЛАТЬ ДОПОЛНИТЕЛЬНЫЕ ПРОВЕРКИ
СВЕРХУ СВОБОДНО, СНИЗУ СВОБОДНО).
1. Чтобы закрасить все клетки
коридора, находящиеся выше
Робота, прикажем Роботу шагнуть
вверх и выполним цикл «пока»:
вверх
ПОКА НЕ слева свободно И НЕ
справа свободно ДЕЛАТЬ
закрась
вверх
КОНЕЦ
Под управлением этого алгоритма
Робот закрасит все клетки
коридора, находящиеся выше от
него, и окажется на клетке рядом с
верхней границей коридора.
2. Командой вниз вернем Робота в
коридор. Наша задача — вернуть
его в исходную точку. Эта точка
имеет единственный отличительный
признак — она не закрашена.
Поэтому пока занимаемая Роботом
клетка оказывается закрашенной,
будем перемещать его вниз:
вниз
ПОКА закрашено ДЕЛАТЬ
вниз
КОНЕЦ
Под управлением этого алгоритма
Робот окажется в исходной клетке.
3. Выполнив команду вниз,
Робот пройдет исходную клетку и
займет первую клетку,
расположенную ниже исходной.
Теперь можно закрашивать
клетки коридора,
расположенные ниже исходной:
вниз
ПОКА НЕ слева свободно И
НЕ справа свободно
ДЕЛАТЬ
закрась
вниз
КОНЕЦ
4. Так как, выполнив
предыдущий алгоритм, Робот
окажется под коридором,
командой вверх вернем его в
коридор. Возвращение в
исходную точку обеспечивается
алгоритмом:
вверх
ПОКА закрашено ДЕЛАТЬ
вверх
КОНЕЦ
5. По команде закрась Робот закрашивает исходную
точку.
Полностью программа управления Роботом выглядит так:
Команда ветвления
Графически ветвление можно представить в виде:
полная форма ветвления
сокращенная форма ветвления
Спасибо за
внимание!
Download