Циклы 4 — Цикл do...while
Введение
Цикл do...while — это разновидность цикла while, но с одним ключевым отличием: он всегда выполняет тело цикла как минимум один раз, даже если условие с самого начала ложное.
Отличие от while
В обычном while сначала проверяется условие, и только потом выполняется код, если оно истинно. В do...while порядок обратный: сначала выполняется код, а затем проверяется условие. Это гарантирует хотя бы одно выполнение тела цикла.
// Синтаксис
do {
// код
} while (условие);
Когда удобно применять
- Когда нужно выполнить код хотя бы один раз перед проверкой условия.
- При запросе данных у пользователя, чтобы сначала получить ввод, а затем его проверять.
- В играх и интерактивных приложениях, когда нужно отобразить меню хотя бы один раз.
Практика
Ввод значения через Serial Monitor до тех пор, пока оно неверное
В этом примере программа будет запрашивать число до тех пор, пока пользователь не введёт значение от 1 до 5.
int value;
void setup() {
Serial.begin(9600);
}
void loop() {
do {
Serial.println("Введите число от 1 до 5:");
while (!Serial.available()) {
// Ждём ввода
}
value = Serial.parseInt();
Serial.read(); // Очистка буфера
} while (value < 1 || value > 5);
Serial.print("Вы ввели правильное число: ");
Serial.println(value);
delay(2000);
}
Проект: «Ввод пароля для включения лампы»
Лампа включится только в случае, если введён верный пароль.
const int lampPin = 3;
String password = "1234";
String inputString;
void setup() {
pinMode(lampPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
inputString = "";
do {
Serial.println("Введите пароль:");
while (!Serial.available()) {
// Ждём ввода
}
inputString = Serial.readStringUntil('\n');
inputString.trim(); // Убираем пробелы и переносы строк
} while (inputString != password);
Serial.println("Пароль верный! Лампа включена.");
digitalWrite(lampPin, HIGH);
// Лампа горит 5 секунд, потом выключается
delay(5000);
digitalWrite(lampPin, LOW);
}
Заключение
Цикл do...while полезен в ситуациях, когда необходимо хотя бы однократное выполнение блока кода перед проверкой условия. Он особенно удобен для ввода данных, подтверждений и повторяющихся меню.





