Справочная статья
Оператор WHILE
Повторять блок до тех пор, пока сохраняется нужное состояние данных, позволяет WHILE. Условие стоит в заголовке и проверяется перед каждым проходом, включая первый, поэтому тело выполняется только при истинном условии, а цикл завершается на том проходе, после которого условие стало ложным.
Когда нужен цикл с предусловием
WHILE работает на верхнем уровне программы, внутри подпрограмм и блоков, в консольной и графической программе; специальный графический режим не требуется. Такой цикл подходит для работы, продолжительность которой определяется состоянием данных, а не заранее известным числом проходов.
Синтаксис
WHILE <условие>
⟦<инструкции>⟧
END WHILEУсловие и тело
Условие после WHILE должно иметь тип BOOLEAN. Инструкции тела расположены до END WHILE. После тела условие проверяется снова; значение FALSE завершает цикл. В следующей программе счётчик начинает с нуля и увеличивается в теле, поэтому условие остаётся истинным ровно три раза:
DIM count AS INTEGER = 0
WHILE count < 3
PRINT count
count = count + 1
END WHILEРезультат:
0
1
2Перед четвёртой проверкой счётчик равен трём, условие count < 3 становится ложным, и цикл заканчивается, так что число 3 не печатается.
Продолжение и выход
CONTINUE WHILE в непосредственном теле WHILE переходит к повторной проверке условия. Особенность переходов внутри разных вложенных видов циклов описана на странице CONTINUE. Изменяйте данные, от которых зависит условие, до такого перехода, если это нужно для завершения. Форма EXIT WHILE не поддержана; для выхода из середины тела используйте DO … LOOP и EXIT DO.
Диагностика
Ошибка возникает, если условие WHILE не имеет тип BOOLEAN, если блок не закрыт END WHILE или если в тексте используется неподдержанная форма выхода вроде EXIT WHILE.
MB2008— условие цикла не имеет тип BOOLEAN.MB1001— отсутствует требуемое END WHILE.MB2038—CONTINUE WHILEиспользуется вне циклаWHILE ... END WHILE.
Запускаемые примеры
Откройте нужный файл в IDE и запустите его. Примеры с ошибкой предназначены для проверки сообщения компилятора или выполнения.