Цикли 4 — Цикл do...while
Вступ
Цикл do...while — це різновид циклу while, але з однією важливою відмінністю: він завжди виконує тіло циклу щонайменше один раз, навіть якщо умова з самого початку є хибною.
Відмінність від while
У звичайному while спочатку перевіряється умова, і лише потім виконується код, якщо вона істинна. У do...while порядок зворотний: спочатку виконується код, а потім перевіряється умова. Це гарантує хоча б одне виконання тіла циклу.
// Синтаксис
do {
// код
} while (умова);
Коли зручно застосовувати
- Коли потрібно виконати код хоча б один раз перед перевіркою умови.
- Під час запиту даних у користувача, щоб спочатку отримати введення, а потім перевіряти його.
- В інтерактивних програмах, коли потрібно показати меню хоча б один раз.
Практика
Введення значення через Serial Monitor доти, доки воно неправильне
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 зручний у ситуаціях, коли потрібно мінімум одне виконання блоку коду перед перевіркою умови. Він особливо корисний для введення даних, підтверджень і повторюваних меню.




