Циклы while используются для повторяющегося выполнения определенного кода в случае выполнения заданного условия.
Чаще всего используется следующая форма цикла:
Приведенный ниже фрагмент кода проверяет, содержится ли фигура shape в группе group (либо напрямую, либо в одной из ее подгрупп). Функция getGroup() класса Shape возвращает группу, которая является непосредственным контейнером этой фигуры. Для фигуры, находящейся на самом верхнем уровне иерархии (не содержащейся ни в одной группе), она возвращает null. В этом цикле мы начинаем проверку с непосредственного контейнера фигуры и затем движемся на каждой итерации на один уровень выше по иерархии до тех пор, пока не найдем group или не достигнем самого верхнего уровня:
Условие в первой форме цикла while проверяется перед каждой итерацией; если оно изначально не выполняется (равно false), то тело цикла выполняться не будет.
Существует и вторая форма цикла – do…while:
Разница между циклами do…while
и while заключается в
том, что do…while
вычисляет свое условие после
выполнения итерации, и следовательно тело цикла выполняется по крайней
мере один раз. Это имеет смысл, например, в том случае, если условие
зависит от переменных, чьи значения подготовляются во время итерации.
Рассмотрим следующий пример. Пусть у нас есть карта местности прямоугольной
формы 1000*1000 пикселов. Границы города на карте отмечены замкнутой
ломаной citybounds.
Нам нужно найти
случайную точку в пределах города. Поскольку форма ломаной может быть
любой, мы используем метод Монте-Карло: будем генерировать случайные
точки на карте до тех пор, пока точка не окажется внутри городской
границы. Это пример естественного использования цикла do…while: