Цикли 4 — Цикл do...while

Вступ

Цикл do...while — це різновид циклу while, але з однією важливою відмінністю: він завжди виконує тіло циклу щонайменше один раз, навіть якщо умова з самого початку є хибною.

Відмінність від while

У звичайному while спочатку перевіряється умова, і лише потім виконується код, якщо вона істинна. У do...while порядок зворотний: спочатку виконується код, а потім перевіряється умова. Це гарантує хоча б одне виконання тіла циклу.


// Синтаксис
do {
  // код
} while (умова);
  

Коли зручно застосовувати

  • Коли потрібно виконати код хоча б один раз перед перевіркою умови.
  • Під час запиту даних у користувача, щоб спочатку отримати введення, а потім перевіряти його.
  • В інтерактивних програмах, коли потрібно показати меню хоча б один раз.

Практика

Введення значення через Serial Monitor доти, доки воно неправильне


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 размітка не підтримується! Використовуйте звичайтий текст.
    Погано           Добре
Модуль на DIN-рейку для Arduino Nano — 8 дискретних входів, I2C, SPI, UART

Модуль на DIN-рейку для Arduino Nano — 8 дискретних входів, I2C, SPI, UART

Головний модуль автоматизації для створення домашніх і промислових систем управління на базі Arduino..

557.49грн.

Регулятор обертів двигуна 3А 6-28В

Регулятор обертів двигуна 3А 6-28В

Регулятор швидкості обертання двигуна постійного струму. Швидкість задається змінним резистором. Пр..

151.10грн.

ESP32 таймери: Багатозадачність з апаратними таймерами

ESP32 таймери: Багатозадачність з апаратними таймерами

ESP32 таймери: Багатозадачність з апаратними таймерами ESP32 — це потужний мікроконтролер з двояд..

Кронштейн для кріплення крокового двигуна

Кронштейн для кріплення крокового двигуна

Якісний сталевий кронштейн підходить для кріплення крокового двигуна Nema 17, а також для його модиф..

153.09грн.

Шилд для Arduino Nano и GSM SIM800 с 2реле

Шилд для Arduino Nano и GSM SIM800 с 2реле

Шилд для проектів з використанням плати контролера Arduino Nano та GSM модуля SIM800. Вирішує пробле..

479.09грн.