arduino
Loops
Поиск…
Синтаксис
- для (декларация, условие, итерация) {}
- while (условие) {}
- do {} while (условие)
замечания
General Remark
Если вы намереваетесь создать цикл, чтобы ждать чего-то, вы, вероятно, ошибетесь здесь. Скорее помните, что весь код после setup () запускается из метода, называемого loop (). Поэтому, если вам нужно что-то ждать, проще всего ничего не делать (или только другие независимые вещи) и вернуться в следующий раз, чтобы проверить состояние ожидания.
do { } while(condition)
не будет оценивать оператор условия до первой итерации. Это важно иметь в виду, если оператор условия имеет побочные эффекты.
В то время как
В while
цикл будет оценивать его состояние, и если true
, он будет выполнять код внутри и начать все сначала. То есть, до тех пор , как его состояние оценивается как true
, то в while
цикл будет выполняться снова и снова.
Этот цикл будет выполняться 100 раз, каждый раз добавляя 1 к переменной num
:
int num = 0;
while (num < 100) {
// do something
num++;
}
Вышеупомянутый цикл эквивалентен циклу for
:
for (int i = 0; i < 100; i++) {
// do something
}
Этот цикл будет выполняться вечно:
while (true) {
// do something
}
Вышеупомянутый цикл эквивалентен циклу for
:
for (;;) {
// do something
}
За
for
петли упрощенного синтаксис для очень общего шаблона контура, который может быть достигнут в большем количестве линий с в while
цикла.
Ниже приведен общий пример цикла for
, который будет выполняться 100 раз, а затем останавливаться.
for (int i = 0; i < 100; i++) {
// do something
}
Это эквивалентно в while
цикла:
int num = 0;
while (num < 100) {
// do something
num++;
}
Вы можете создать бесконечный цикл, исключив условие.
for (;;) {
// do something
}
Это эквивалентно в while
цикла:
while (true) {
// do something
}
Делать пока
do while
в while
do while
петли такая же , как в while
цикла, за исключением того, что он гарантированно выполнить по крайней мере один раз.
Следующий цикл будет выполняться 100 раз.
int i = 0;
do {
i++;
} while (i < 100);
Аналогичный цикл, но с другим условием, будет выполняться 1 раз.
int i = 0;
do {
i++;
} while (i < 0);
Если выше петли были просто в while
цикл, это выполнение будет 0 раз, потому что условие будет вычисляться false
перед первой итерацией. Но поскольку это цикл do while
while, он выполняется один раз, а затем проверяет его состояние перед повторным выполнением.
Управление потоком
Есть несколько способов сломать или изменить поток цикла.
break;
выйдет из текущего цикла и не будет выполнять никаких строк в этом цикле.
continue;
не будет выполнять больше кода в текущей итерации цикла, но останется в цикле.
Следующий цикл будет выполняться 101 раз (i = 0, 1, ..., 100) вместо 1000 из-за инструкции break
:
for (int i = 0; i < 1000; i++) {
// execute this repeatedly with i = 0, 1, 2, ...
if (i >= 100) {
break;
}
}
Следующий цикл приведет к тому, что значение j
равным 50 вместо 100, из-за инструкции continue
:
int j=0;
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) { // if `i` is even
continue;
}
j++;
}
// j has the value 50 now.