# Циклы

Область «Steuerung» («Управление») содержит блоки, которые указывают, надо ли выполнять другие блоки, находящиеся внутри них. Есть два вида блоков управления: [**блоки «если-иначе»**](https://docs.fischertechnik-cloud.com/books/robo-pro-coding/page/bedingungen "Условия") (описываются на отдельной странице) и блоки, управляющие частотой выполнения их содержимого. Второй вид блоков называют циклами, т. к. их содержимое, также именуемое телом цикла или просто телом, повторяется (может повторяться) многократно. Каждое выполнение цикла называется итерацией.

### Блоки для создания циклов

#### **dauerhaft wiederholen (повторять всегда)**

Блок **dauerhaft wiederholen** выполняет код, содержащийся в его теле, до завершения выполнения программы.

#### **wiederhole (повторить... раз)**

Блок **wiederhole** выполняет код, содержащийся в его теле, указанное количество раз. Например, следующий блок десять раз выдаст «Hallo!» («Привет!»):

[![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Wyrbild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Wyrbild1-ru.PNG)

#### **wiederhole-solange (повторять, пока …)**

Представь себе игру, в которой игрок бросает игральную кость и складывает все выпавшие очки, пока их сумма меньше 30. Следующие блоки описывают смысл этой игры:

1. Переменной с именем **insgesamt (итого)** присваивается начальное значение 0.
2. Цикл начинается с проверки того, меньше ли 30 значение переменной **insgesamt**. Если да, выполняются блоки в теле цикла.
3. Генерируется случайное число в диапазоне от 1 до 6 (имитация броска игральной кости) и сохраняется в переменной с именем **gewürfelt (выпало)**.
4. Выдается выпавшее число.
5. Значение переменной **insgesamt** увеличивается на значение переменной **gewürfelt**.
6. По достижении конца цикла выполняется возврат к шагу 2.

[![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild2-ru.PNG)

После завершения цикла выполняются все последующие блоки (не показаны). В примере выполнение цикла прекращается, после того как будет выдано определенное количество случайных чисел в диапазоне от 1 до 6 и значением переменной **insgesamt** станет сумма этих чисел, составляющая не менее 30.

#### **wiederhole-bis (повторять, пока не …)**

Циклы **wiederhole solange** повторяют свое тело, **пока** выполняется какое-либо условие. Циклы **wiederhole bis** похожи на них с тем отличием, что они выполняют свое тело, **пока не** будет выполнено определенное условие. Следующие блоки эквивалентны предыдущему примеру, потому что цикл выполняется, пока переменная **insgesamt** не примет значение, большее или равное 30.

[![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild3-ru.PNG)

#### **zählen-von-bis (считать от … до)**

Цикл **zählen-von-bis** увеличивает значение переменной, начиная с первого значения и заканчивая вторым значением, с шагом, равным третьему значению, причем тело цикла выполняется единожды для каждого значения переменной. Например, следующая программа выдает числа 1, 3 и 5.

[![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild4-ru.PNG)

Два следующих цикла, каждый из которых выводит числа 5, 3 и 1, демонстрируют, что первое значение может быть больше второго. Эти циклы работают одинаково вне зависимости от того, положителен или отрицателен инкремент (третье значение).

[![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild5-ru.PNG)

[![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild6-ru.PNG)

#### **für jeden (для каждого)**

Блок **für jeden** похож на цикл **zählen-von-bis** с тем отличием, что вместо переменной цикла в числовой последовательности он последовательно использует значения из какого-либо списка. Следующая программа выдает каждый элемент из списка «alpha», «beta», «gamma»:

[![Bild7_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild7-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild7-ru.PNG)

### Блоки для выхода из цикла

Большинство циклов выполняется до тех пор, пока не будет выполнено условие выхода из цикла (у блоков **wiederhole (повторять)**) либо пока переменная цикла не примет все значения (у циклов **zählen mit (считать с)** и **für jeden (для каждого)**). Два следующих редко используемых, но в некоторых случаях очень полезных блока открывают дополнительные возможности управления выполнением циклов. В следующих примерах показано их использование для цикла **für jeden (для каждого)**, но эти блоки можно использовать для циклов всех видов.

#### **fahre-mit-nächster-Iteration-fort (переход на следующую итерацию)**

Блок **fahre-mit-nächster-Iteration-fort** позволяет пропустить остальные блоки в теле цикла и перейти к следующей итерации цикла.

Следующая программа при первой итерации выдает «alpha». При второй итерации выполняется блок **fahre mit nächster Integration fort (переход на следующую итерацию)**, т. е. вывод «beta» пропускается. При последней итерации программа печатает «gamma».

[![Bild8_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild8-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild8-ru.PNG)

#### Schleifenabbruch (выход из цикла)

Блок **schleifenabbruch** служит для досрочного завершения цикла. Следующая программа при первой итерации выдает «alpha», а при второй итерации выходит из цикла, если переменная цикла принимает значение «beta». Программа не доходит до третьего пункта списка.

[![Bild9_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild9-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild9-ru.PNG)