Циклы 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
Драйвер двух коллекторных двигателей L298N

Драйвер двух коллекторных двигателей L298N

Модуль драйвера L298N для управления работой одного двухполюсного высокооммного шагового двигат..

105.58грн.

Джойстик 2 оси аналоговый влагозащищенный 5К

Джойстик 2 оси аналоговый влагозащищенный 5К

Джойстик аналоговый для установки в плоскую панельВлагозащищенной является только верхняя часть джой..

588.98грн.

Модуль MOSFET-транзистора N-channel

Модуль MOSFET-транзистора N-channel

Модуль (драйвер) силового MOSFET-транзистора для подключения мощной нагрузки на выход контролле..

48.22грн.

Моно усилитель мощности 18 Вт TDA2030A

Моно усилитель мощности 18 Вт TDA2030A

Модуль одноканального усилителя мощности звуковой частоты на основе легендарной микросхемы TDA2030A...

62.86грн.

Кнопка без фиксации R16-503 со светодиодом

Кнопка без фиксации R16-503 со светодиодом

Кнопка с подсветкой нажимная без фиксацииПростой монтаж. В передней панели устройства просто нужно п..

38.21грн.