Робот может получать информацию об окружающей обстановке с помощью датчиков, которые выдают ответ "Да" или "Нет" ("истинно" или "ложно") на вопросы-команды. (Обратная связь Исполнителя)
Робот может проверять следующие простые условия
Для оформления таких последовательностей действий использется специальная конструкция алгоритмического языка
Цикл пока
пока ( условие )
{
команды;
}
Пример задача "Дл_клумба" в папке "Лабиринты для Робота".
Составить программу, после выполнения которой Робот посадит цветы в прямолинейную грядку неизвестной длины до стены и вернется на Базу»
Сначала решим упрощенную Задачу
Составить программу, после выполнения которой Робот посадит цветы в прямолинейную грядку неизвестной длины до стены
Анализ задачи.
Ясно, что пока будет выполняться условие впереди_свободно, нужно выполнять команды:
вперед ( 1 );
посади;
Решение упрощенной задачи
{
пока ( впереди_свободно )
{
вперед ( 1 );
посади;
}
Решение исходной задачи.
Длинная_клумба
{
пока ( впереди_свободно )
{
вперед ( 1 );
посади;
}
налево;
вперед ( 1 );
налево;
пока ( слева_клумба )
{
вперед ( 1 );
}
налево; вперед ( 1 );
}
Составные условия
В сложных лабиринтах может потребоваться проверка не одного, а нескольких условий одновременно. В таких случаях применяют составные условия (слайд 24).
Составные условия образуются из простых условий добавлением логических операций И, ИЛИ, НЕ.
Пусть А, В – простые условия.
Составное условие ( А и В ) будет выполняться только тогда, когда выполняются каждое из простых условий.
Составное условие ( А или В ) будет выполняться тогда, когда выполняется хотя бы одно из простых условий.
Составное условие ( не А ) будет выполняться, когда не выполняется простое условие А.
Применение составных условий рассмотрим в Практической работе.
Практическая работа
Пример 3 задача Коридор из папки "Лабиринты для Робота" (рис 3.17, учебник ) Составить программу, после выполнения которой Робот посадит цветы в прямом коридоре неизвестной длины и вернется на Базу»
Решение задачи Клумба_в_коридоре{
вперед ( 1 );
пока ( слева_стена и справа_стена )
{
посади; вперед ( 1 );
}
налево; вперед ( 2 );
налево; вперед ( 1 );
пока ( слева_стена )
{
вперед ( 1 );
}
налево; вперед ( 2 );
}
Домашнее задание № 10 (файл 10.maz)