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

Генератор импульсов на NE555

Генератор импульсов на NE555 Генератор прямоугольных импульсов на основе популярной микросхемы NE..

42.30грн.

DS18B20 датчик температуры

DS18B20 датчик температуры

Напряжение питания 3 ... 5,5 ВРабочая температура -55 ... +125 °CТочность ±0,5 °C обе..

25.83грн.

Простейший способ проверки GSM-модуля

Простейший способ проверки GSM-модуля

Бывают моменты, когда нас выводит из себя такая штуковина как GSM модуль к любительской плате контро..

Инфракрасный датчик движения HC-SR505

Инфракрасный датчик движения HC-SR505

Миниатюрный экономичный датчик движения.Напряжение питания 4,5 ... 20 ВТок покоя < 60 мкАВыходные..

76.78грн.

Датчик звука

Датчик звука

Датчик звука (дискретный, с регулировкой чувствительности)Интеллектуальный дискретный датчик звука д..

49.61грн.