// В такой реализации цикла for у нас нет счётчика, что может быть неудобным для некоторых алгоритмов, но
// счётчик всегда можно добавить свой. Например забьём массив числами от 0 до 90 с шагом 10:
int vals[10];
int count = 0;
for (int &val : vals) {
val = count * 10;
count++
}
// Оператор break
// Оператор break (англ. “ломать”) позволяет выйти из цикла. Использовать его можно как по условию, так и
// как-угодно-удобно. Например давайте досрочно выйдем из цикла при достижении какого-то значения:
for (int i = 0; i < 100; i++) {
// покинуть цикл при достижении 50
if (i == 50) break;
}
// Оператор continue
// Создадим массив на 100 ячеек
byte myArray[100];
for (int i = 0; i < 100; i++) {
// если i равно 10, пропускаем
if (i == 10) continue;
// заполним все ячейки значением 25
myArray[i] = 25;
}
// Цикл while
int i = 0;
while (i < 10) {
i++;
Serial.println(i);
}
// Цикл while
// Полный аналог цикла for с настройками (int i = 0; i < 10; i++) . Единственное отличие в том, что на последней
// итерации i примет значение 10 , так как на значении 9 цикл разрешит выполнение. Ещё интересный вариант, который можно встретить на просторах чужого
// кода. Работает на основе того факта, что любое число кроме нуля обрабатывается логикой как true :
byte a = 5;
while (a--) {
// выполнится 5 раз
}
// ЦИКЛ while тоже удобно использовать как вечный цикл, например, ожидая наступление какого-
// либо события (нажатие кнопки):
// выполняется, пока не нажата кнопка
while (кнопка не нажата;
// Пока условие не произойдёт, код не пойдёт дальше, застрянет на этом цикле. Как вы уже поняли, оператор if тут не нужен, нужно указывать именно логическое
// значение, можно даже вот так:
while (true);
// Все, вертимся здесь бесконечно! Помимо цикла с предусловием есть еще цикл с постусловием, так называемый do while
// Цикл do while
do {
// тело цикла
} while (условие);
// ФУНКЦИИ
byte a, b;
int c;
void setup() {
a = 10;
b = 20;
sumFunction();
// после вызова функции
// с имеет значение 30
void loop() {
}
void sumFunction() {
c = a + b;
Serial.println(c);
}
// Функция, которая ничего не принимает и возвращает результат
byte a, b;
int c;
void setup() {
a = 10;
b = 20;
c = sumFunction();
// с имеет значение 30
void loop() {
}
int sumFunction() {
return (a + b);
}