БЕСПЛАТНЫЕ УРОКИ. Базовая подготовка

Робот. Циклы "ПОКА" и "ПОВТОРИ"

alg 21

Часто исполнителю надо выполнить какую-то последовательность команд  несколько раз. Например, в задаче на рисунке Робот должен подойти к ряду клеток, которые надо засадить, и затем выполнить 6 раз команды вперед(1) и посади.

В данном случае эти команды надо повторить только 6 раза и можно легко 6 раз написать одинаковые команды. Но представьте, что надо сделать одинаковые операции 100 или 200 раз! В программировании в таких случаях используется специальная команда (оператор), которая говорит исполнителю, что какую-то часть программы надо сделать несколько раз.

Цикл — это многократное исполнение последовательности команд.

Решим эту задачу, используя цикл ПОВТОРИ (цикл с известным числом повторений). Программа с использованием оператора цикла выглядит так:

alt

Правила использования оператора цикла

  1. Цикл повтори используется тогда, когда число повторений цикла заранее известно или может быть вычислено.
  2. Оператор цикла начинается заголовком цикла - ключевым словом повтори, за которым в скобках указывается нужное количество повторений цикла.
  3. Тело цикла начинается открывающей фигурной скобкой { и заканчивается закрывающей }.
  4. В цикле выполняются все операторы, заключенные в скобки.
  5. Если тело цикла включает всего один оператор, скобки можно не ставить.
  6. Для того, чтобы легче разбираться в программе, применяют специальную систему записи с отступами: все команды, входящие в цикл, смещают вправо на 2-3 символа — это позволяет сразу видеть, где начинается и где заканчивается цикл.

Алгоритмы с обратной связью

До сих пор мы приказывали Роботу выполнить какую-то задачу, предполагая, что обстановка полностью известна: мы точно знаем сколько шагов до стенок, какую они имеют форму и где расположены.

При решении сложных задач ситуация часто известна не полностью и надо анализировать обстановку, которая складывается вокруг исполнителя. Человек очень часто не знает, сколько шагов ему надо пройти и не задумывается об этом, потому что он знает, куда он идет, то есть знает, где (при каком условии) остановиться.

Обратная связь – это информация об окружающей обстановке, которую исполнитель использует для выработки дальнейших действий.

Робот имеет датчики, которые позволяют ему получать информацию об обстановке. Датчики определяют, например, есть ли стена в каком-то направлении. Чтобы использовать эту информацию в программе, в СКИ Робота есть специальные логические команды.

Логическая команда – это вопрос, на который исполнитель отвечает  “да” или “нет” в зависимости от обстановки.

СКИ Робота включает несколько логических команд:

справа_стена
слева_стена 
впереди_стена 
сзади_стена 

справа_ клумба 
слева_ клумба
впереди_ клумба 
сзади_клумба 

справа_свободно
слева_свободно
впереди_свободно
сзади_свободно

грядка               

база

Последние две команды определяют, есть ли грядка(или база) в клетке, где сейчас находится Робот.

Решим ту же задачу, используя цикл ПОКА (цикл с НЕизвестным числом повторений). Программа с использованием оператора цикла выглядит так:

alt

Правила использования цикла  пока

 

  1. Цикл пока используется тогда, когда число повторений цикла заранее неизвестно, но ограничено каким-то условием.
  2. Оператор цикла начинается заголовком цикла – ключевым словом пока, за которым в фигурных скобках указывается условие, при котором выполняется цикл; если условие перестает быть верным (истинным), выполнение цикла заканчивается и исполнитель переходит к следующей команде.
  3. Условие проверяется в начале цикла, то есть если перед выполнением цикла условие ложно, то цикл не выполнится ни разу.
  4. В цикле выполняются все операторы, заключенные в фигурные скобки;
  5. Если тело цикла включает всего один оператор, скобки можно не ставить.

 

Использование цикла пока позволяет нам решать задачи, в которых некоторые данные (например, длина стенок) заранее неизвестны.

Использован материал из книги "Алгоритмы и исполнители", автор Поляков К.

Добавить комментарий
  • Комментарии не найдены
 
Our website is protected by DMC Firewall!