For цикл в программировании Ардуино

For циклМы уже рассмотрели один тип цикла в этой серии статей по программированию Ардуино, а именно, основной цикл. А в этой статье мы рассмотрим другой вид цикла, называемый циклом for.

В то время как операторы или код в основном цикле Arduino будут выполняться постоянно и никогда не выйдут из цикла, то цикл for позволит нам выполнить код определенное количество раз перед выходом из цикла.

Обычный способ использования цикла for — использование оператора инкремента, который был рассмотрен в предыдущей нашей статье.

Использование цикла for

Следующий скетч демонстрирует использование цикла for:

Загрузите этот скетч в свой Arduino, чтобы увидеть его работу.

Как работает цикл for

На изображении ниже показаны части цикла for:

Части цикла for

Структура цикла for

Базовый цикл for запускается следующим образом:

Между открывающейся и закрывающейся круглыми скобками () добавляются три выражения, которые определяют, сколько раз операторы в цикле выполняются перед выходом из цикла. При выходе из цикла выполнение программы продолжается ниже цикла, т.е. операторы вне и ниже цикла выполняются сверху вниз.

Тело цикла между открывающейся и закрывающейся фигурными скобками {} содержит операторы, которые будут выполняться в цикле.

Выражения в круглых скобках называются выражением инициализации, выражением проверки и выражением приращения.

Для использования в трех выражениях цикла необходимо определить переменную. В примере скетча используется целочисленная переменная с именем i.

Три выражения цикла должны появляться в следующем порядке: инициализация, проверка и увеличение. Они разделены точкой с запятой ( ; ). Выражение приращения не заканчивается точкой с запятой.

Инициализация выражения

Выражение инициализации запускается только один раз при запуске цикла. Он инициализирует нашу переменную i равной нулю (0) в примере скетча.

Тестовое выражение

Тестовое выражение определяет, когда мы выходим из цикла. Оно используется для установки количества запусков операторов в теле цикла.

Когда тестовое выражение оценивается как истинное, будут выполняться операторы в теле цикла. Когда тестовое выражение оценивается как ложное, цикл больше не запускается, будет завершен.

Тестовое выражение оценивается каждый раз, когда выполнение начинается с начала цикла.

Выражение приращения

Выражение приращения используется для изменения значения, содержащегося в переменной i. Оно запускается каждый раз, когда выполнение начинается с начала цикла.

Выполнение программы в цикле for

На изображении ниже показано, как программа работает в цикле for:

for цикл программы

Первый круг цикла

При первом прохождении цикла i инициализируется значением 0, тестовое выражение проверяет, является ли i <10 (0 <10) истинным, поэтому операторы в цикле будут выполняться.

Поскольку с переменной используется оператор пост-инкремента, i будет увеличиваться только в конце цикла. Операторы в цикле запускаются и отображают значение i как 0, потому что оно еще не было увеличено.

Следовательно, у нас есть это:

  • i инициализируется как 0
  • i содержит 0
  • i <10 оценивается как истина или 1, потому что i меньше 10
  • выполняются два оператора в цикле и выводят i как 0
  • в конце цикла i увеличивается на единицу, поэтому i == 1

Второй круг цикла

Во второй раз в цикле i теперь содержит 1, поскольку он был увеличен в нижней части цикла. Теперь тестовое выражение проверяет, является ли i <10 (1 <10) истинным, поэтому операторы цикла будут выполняться снова. Переменная i будет увеличена только до 2 в нижней части цикла, поэтому 1 выводится на экран через Монитор порта.

Теперь у нас есть это:

  • i не инициализируется
  • i содержит 1
  • i <10 оценивается как истина или 1, потому что i меньше 10
  • выполняются два оператора в цикле и выводят i как 1
  • в конце цикла i увеличивается на единицу, поэтому i == 2

Последний круг цикла

Выполнение цикла будет продолжено, и i будет увеличиваться каждый раз.

В последнем круге цикла мы получили следующее:

  • i не инициализируется
  • i содержит 9
  • i <10 оценивается как истина или 1, потому что i меньше 10
  • выполняются два оператора в цикле и выводят i как 9
  • в конце цикла i увеличивается, поэтому i == 10

Выполнение снова начинается с начала цикла, проверяется выражение.

Теперь у нас есть это:

  • i не инициализируется
  • i содержит 10
  • i <10 оценивается как ложь или 0, потому что i не меньше 10 (равно 10)
  • операторы в цикле больше не запускаются
  • цикл завершен
  • оператор под закрывающей скобкой цикла будет запущен

Альтернативный способ записи цикла for

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

Этот скетч работает точно так же, как и предыдущий, и выводит числа от 0 до 9.

Цикл внутри цикла

В следующем скетче используется цикл for в основном цикле Arduino:

Цикл for работает точно так же, как и раньше, но теперь после выхода из него запускается функция delay (), чтобы дать задержку в 1 секунду. Достигнут конец основного цикла loop () Arduino , поэтому цикл for запускается снова.

Когда цикл for запускается снова, i инициализируется значением 0, потому что цикл for снова запускается сверху. Затем он запускается снова, как описано ранее.

Функции цикла for и delay () будут выполняться постоянно, потому что основной цикл Arduino никогда не завершается.

Примечания к примерам скетчей

Обратите внимание на следующие примеры скетчей в этой статье.

Инициализация выражения

Выражение инициализации в цикле for необязательно инициализировать нулем (0), оно может быть инициализировано любым целочисленным значением, даже отрицательным значением.

Выражение приращения

Выражение приращения используется для изменения значения переменной, которую проверяет тестовое выражение. Это не обязательно должен быть оператор приращения, он может быть оператором декремента (вычитание 1 из переменной) или любым другим арифметическим выражением.

Отсчет с нуля (0)

Обратите внимание, что в примерах скетчей значение переменной i инициализируется значением 0, а не 1. Поэтому отображается значение, которое начинается с 0 и заканчивается на 9.

Цикл фактически выполняется 10 раз, а не 9 раз. Это потому, что мы начинаем с 0 — от 0 до 9 — 10 чисел, от 1 до 9 — 9 чисел, от 1 до 10 — 10 чисел.

В списке ниже, слева показано количество проходов цикла, а справа — значение i:

  1. i = 0
  2. i = 1
  3. i = 2
  4. i = 3
  5. i = 4
  6. i = 5
  7. i = 6
  8. i = 7
  9. i = 8
  10. i = 9

Вывод

Данная статья получилась не совсем простой. Иногда сложно понять все ходы цикла в программе с первого раза. Если вы что-то не поняли, то советуем вам прочитать нашу статью еще раз. В следущей статье мы с вами поговорим о таких циклах как while и do while.

С Уважением, МониторБанк

Добавить комментарий