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

Модуль стабилизатора напряжения 3,3 В

Модуль предназначен для питания различных электронных устройств, модулей, работающих на напряжении 3..

18.61грн.

Вентилятор для Orange PI толщиной 10мм

Вентилятор для Orange PI толщиной 10мм

Вентилятор для охлаждения процессора мини-компьютера Orange PI или Raspberry PIРаботает безшумноПита..

60.63грн.

Автоматическое управление твердотопливным котлом Arduino Nano

Автоматическое управление твердотопливным котлом Arduino Nano

Предмет проекта домашней автоматики Вашему вниманию представлен большой проект - автоматический щит..

Введение в таймеры ESP32: примеры использования и настройка

Введение в таймеры ESP32: примеры использования и настройка

Введение в таймеры ESP32 Микроконтроллер ESP32 оснащён мощными аппаратными таймерами, которые поз..

Видео уроки Arduino

Видео уроки Arduino

Курс уроков Arduino будет полезен любому исследователю окружающего мира ..