Циклы
Область «Steuerung» («Управление») содержит блоки, которые указывают, надо ли выполнять другие блоки, находящиеся внутри них. Есть два вида блоков управления: блоки «если-иначе» (описываются на отдельной странице) и блоки, управляющие частотой выполнения их содержимого. Второй вид блоков называют циклами, т. к. их содержимое, также именуемое телом цикла или просто телом, повторяется (может повторяться) многократно. Каждое выполнение цикла называется итерацией.
Блоки для создания циклов
dauerhaft wiederholen (повторять всегда)
Блок dauerhaft wiederholen выполняет код, содержащийся в его теле, до завершения выполнения программы.
wiederhole (повторить... раз)
Блок wiederhole выполняет код, содержащийся в его теле, указанное количество раз. Например, следующий блок десять раз выдаст «Hallo!» («Привет!»):
wiederhole-solange (повторять, пока …)
Представь себе игру, в которой игрок бросает игральную кость и складывает все выпавшие очки, пока их сумма меньше 30. Следующие блоки описывают смысл этой игры:
- Переменной с именем insgesamt (итого) присваивается начальное значение 0.
- Цикл начинается с проверки того, меньше ли 30 значение переменной insgesamt. Если да, выполняются блоки в теле цикла.
- Генерируется случайное число в диапазоне от 1 до 6 (имитация броска игральной кости) и сохраняется в переменной с именем gewürfelt (выпало).
- Выдается выпавшее число.
- Значение переменной insgesamt увеличивается на значение переменной gewürfelt.
- По достижении конца цикла выполняется возврат к шагу 2.
После завершения цикла выполняются все последующие блоки (не показаны). В примере выполнение цикла прекращается, после того как будет выдано определенное количество случайных чисел в диапазоне от 1 до 6 и значением переменной insgesamt станет сумма этих чисел, составляющая не менее 30.
wiederhole-bis (повторять, пока не …)
Циклы wiederhole solange повторяют свое тело, пока выполняется какое-либо условие. Циклы wiederhole bis похожи на них с тем отличием, что они выполняют свое тело, пока не будет выполнено определенное условие. Следующие блоки эквивалентны предыдущему примеру, потому что цикл выполняется, пока переменная insgesamt не примет значение, большее или равное 30.
zählen-von-bis (считать от … до)
Цикл zählen-von-bis увеличивает значение переменной, начиная с первого значения и заканчивая вторым значением, с шагом, равным третьему значению, причем тело цикла выполняется единожды для каждого значения переменной. Например, следующая программа выдает числа 1, 3 и 5.
Два следующих цикла, каждый из которых выводит числа 5, 3 и 1, демонстрируют, что первое значение может быть больше второго. Эти циклы работают одинаково вне зависимости от того, положителен или отрицателен инкремент (третье значение).
für jeden (для каждого)
Блок für jeden похож на цикл zählen-von-bis с тем отличием, что вместо переменной цикла в числовой последовательности он последовательно использует значения из какого-либо списка. Следующая программа выдает каждый элемент из списка «alpha», «beta», «gamma»:
Блоки для выхода из цикла
Большинство циклов выполняется до тех пор, пока не будет выполнено условие выхода из цикла (у блоков 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».
Schleifenabbruch (выход из цикла)
Блок schleifenabbruch служит для досрочного завершения цикла. Следующая программа при первой итерации выдает «alpha», а при второй итерации выходит из цикла, если переменная цикла принимает значение «beta». Программа не доходит до третьего пункта списка.