Цикл с выходом по условию

Иногда удобно использовать цикл, выход из которого происходит при выполнении некоторого логического условия. Это аналог цикловWhile и Repeat-Until в языке программирования Паскаль. Настройка цикла производится обычным образом:

Настройки цикла с выходом по логическому условию

Здесь разъём №1 (Loop Condition) появляется, если в поле №2 (Control) выбрать Logic. На этот порт цикла нужно подать провод с логическим значением (зелёный).
Поле №3 (Until) позволяет определить условие выхода из цикла: либо когда условие, поданное на разъём, станет истиной (True), либо когда оно станет ложью (False).
Пример 4.5. Моделирование ожидания в n секунд при помощи таймера на одну секунду.
Этот не вполне содержательный пример приведён здесь исключительно для знакомства с циклом рассматриваемого вида.

Моделирование ожидания в n секунд при помощи таймера на одну секунду

Здесь в цикле, который настроен на выход по условию, выполняются следующие действия:

  1. отсчитывается одна секунда при помощи соответствующего блока;
  2. номер итерации цикла, поступающий из порта Counter, подаётся на блок сравнения Compare из меню Data (Данные) полной палитры;
  3. там он сравнивается с числом n, и результат этого сравнения по зелёному проводу передаётся на второй разъём цикла;
  4. если выполняется заданное в блоке сравнения условие, то цикл прекращает работу и мы слышим голос из динамика.
Блок Compare в полной палитре

В блоке Compare доступны следующие логические операции:

  • Less than - "меньше, чем";
  • Greater than - "больше, чем";
  • Equal - "равно".
Данные в поля блока Compare могут поступать как по внешним разъёмам, так и путём ввода в соответствующие поля. Так, в примере 4.5 данные в поле A поступают с разъёма счётчика цикла (в этом случае ввод в поле не доступен), а в поле B вводятся пользователем.
Настройки блока Compare в примере 4.5 (здесь n = 10):

Задание 4.10. Изучите код программы из примера 4.5. Составьте программу и проверьте её работу для разных значений n.

Задание 4.11. Напишите программу, которая после запуска ждёт нажатия на оранжевую кнопку NXT, после чего что-нибудь говорит и завершается. Для обработки нажатия на оранжевую кнопку воспользуйтесь программным блоком NXT Buttons из меню Sensors и циклом с выходом по условию. При выполнении этого задания использовать блок Wait запрещается! Напомним, что жёлтые блоки группы Sensorsпозволяют узнать текущие показания датчиков.
Задание 4.12. Исправьте предыдущую программу так, чтобы её завершение происходило после n- го нажатия на оранжевую кнопку. Подсказка: используйте вложенные циклы.