Циклы 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 полезен в ситуациях, когда необходимо хотя бы однократное выполнение блока кода перед проверкой условия. Он особенно удобен для ввода данных, подтверждений и повторяющихся меню.

Циклы 5 — Вложенные циклы

<< Проекты << Все товары >> Статьи, уроки >>

Написать отзыв

Примечание: HTML разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675

ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675

ESP32 MQTT клиент с термопарой K-типа и модулем MAX6675 В этом проекте мы рассмотрим, как собрать п..

PT100 2м платиновый датчик температуры

PT100 2м платиновый датчик температуры

PT100 – платиновый датчик температуры (кабель 2 м)Платиновый датчик температуры PT100 — это высокото..

270.72грн.

Модуль блока питания 3,3В 1А

Модуль блока питания 3,3В 1А

Удобный модуль питания из 220В AC в 3,3В постоянного тока. Разработан для установки на печатную плат..

153.96грн.

Что нужно знать, чтобы собрать свой ЧПУ?

Что нужно знать, чтобы собрать свой ЧПУ?

Станок ЧПУ (с числовым программным управлением) или по английски CNC позволяет любому ..

Умный дом #9: Реализация сценариев («Уход из дома», «Ночь», «Экономия энергии»)

Умный дом #9: Реализация сценариев («Уход из дома», «Ночь», «Экономия энергии»)

Умный дом #9: Реализация сценариев («Уход из дома», «Ночь», «Экономия энергии») Сценари..