Циклы
При написании программ часто возникает необходимость в циклическом повторении группы команд. Для этого используется языковая конструкция цикл, которой в NXT-G соответствует блок Loop.

Внутрь цикла помещаются блоки, которые нужно выполнить многократно. Заметим, что следует с осторожностью (точнее, с пониманием) размещать в цикле блоки, которые сами в некотором роде обладают цикличностью, например Move, Sound и некоторые другие.
- Forever - бесконечно (по умолчанию);
- Sensor - по срабатыванию датчика;
- Time - через определённое время;
- Count - после выполнения цикла заданного количества раз;
- Logic - при выполнении некоторого логического условия, заданного программистом.

В процессе изучения языка NXT-G мы постепенно освоим все эти способы. Начнём с бесконечного цикла.
Простейшие виды циклов
Задание 4.1. Подготовьте робот с датчиком цвета в передней части; датчик должен быть направлен вниз и находиться на расстоянии около 1 см от стола. Расположите робот перед чёрным полем (или чёрной линией) на расстоянии от неё около 20 см.

Движение робота по линии
Пример 4.1. Перейдём к классической задаче о движении робота вдоль линии. Полигон с такой линией имеется в каждом наборе.
Разберёмся, может ли робот двигаться по линии, то есть так, чтобы сенсор всегда находился на чёрном поле. Для этого представим себе, что через некоторое время после старта сенсор "уехал" с чёрного поля и оказался на белом. Мы понимаем, что в этом случае робот должен немного подрулить чтобы вернуться обратно на чёрную линию. Но куда именно подрулить: налево или направо? Дело в том, что белый цвет по обе стороны от чёрной линии одинаков. Поэтому, попав в такую ситуацию, робот не сможет принять однозначное правильное решение.

Мы видим, что датчик цвета при своём движении влево или вправо не наблюдает резкой границы чёрного и белого. Это происходит из-за того, что при его перемещении, например, слева направо, количество света, попадающего в сенсор, постепенно увеличивается. Значит показания датчика также будут плавно возрастать.

При движении робота уход влево (в чёрную область) приведёт к уменьшению показаний датчика, а уход вправо (в белую область) - к увеличению. Таким образом мы всегда сможем отличить левое от правого.
Обратите внимание на следующее: перед стартом робот ставится на поле так, чтобы датчик цвета "смотрел" на границу линии: чёрное - слева, белое - справа.
Задание 4.6. Найдите отличия между предложенным решением и программой из задания 4.4.
Задание 4.7. Запрограммируйте робот на движение вдоль чёрной линии, изменив код программы 4.4 и проверьте её работоспособность.
Задание 4.8. Требуется запустить робот по той же линии, но в обратную сторону. Как это сделать не изменяя программу?