Циклы 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 разметка не поддерживается! Используйте обычный текст.
    Плохо           Хорошо
SIMWEM mini – GSM шилд для WeMos D1 Mini и SIM800L

SIMWEM mini – GSM шилд для WeMos D1 Mini и SIM800L

SIMWEM mini — это компактный и функциональный шилд, предназначенный для подключения GSM-модуля SIM80..

253.80грн.

Arduino UNO R3

Arduino UNO R3

Плата контроллера, полюбившаяся всем почитателям этой марки Arduino на базе микропроцессора ATmega3..

484.06грн.

Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

Ультразвуковой датчик расстояния HC-SR04 для Arduino, ESP32, STM32

HC-SR04 — это популярный ультразвуковой датчик для точного измерения расстояния в диапазоне от 2 до ..

62.06грн.

Разъемный штекер мама-папа 2,54мм на 2, 3, 4, 5 пинов

Разъемный штекер мама-папа 2,54мм на 2, 3, 4, 5 пинов

Пластмассовый корпус для разъема 2,54мм без металлической вставки..

1.01грн.

Электронный термостат на нагрев или охлаждение

Электронный термостат на нагрев или охлаждение

ОписаниеПрограммируемый терморегулятор предназначен для контроля температуры в диапазоне от -50 °С д..

186.45грн.