Перейти к основному содержимому

Цикл со счетчиком

Цикл со счетчиком в робототехнике

Коротко

Цикл со счетчиком повторяет команды заданное количество раз. Счетчик показывает, какой шаг выполняется сейчас, и помогает пройти по набору значений по порядку.

Зачем это нужно

Обычный цикл удобен, когда заранее неизвестно, сколько раз нужно повторять действие. Например, робот едет, пока не увидит препятствие. Но бывают задачи другого типа: мигнуть светодиодом 5 раз, проверить 6 датчиков, проехать 4 клетки, обработать 10 измерений. Здесь количество повторений известно заранее.

Если записать одинаковые команды вручную, программа станет длинной и хрупкой. Цикл со счетчиком делает такую работу аккуратной: меняется только номер шага, а правило остается одно.

Главная идея

Счетчик - это переменная, которая меняется при каждом повторении.

начать со счетчика 0
пока счетчик меньше нужного количества
выполнить действие
увеличить счетчик

Блок-схема цикла со счетчиком

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

Формальная блок-схема цикла со счётчиком

В языках программирования такой цикл часто записывают через for. В Python for умеет проходить по последовательности значений, а в C++/Arduino часто используют счетчик вида i = 0; i < n; i++.

Что такое счетчик

Счетчик - это переменная, которая хранит номер текущего повторения или количество уже выполненных шагов.

Зачем начинать с нуля

В программировании счет часто начинается с нуля. Если в массиве 6 элементов, их индексы обычно идут так:

0, 1, 2, 3, 4, 5

Это непривычно после обычного счета "первый, второй, третий", но удобно для памяти и массивов. Индекс 0 означает первый элемент.

Количество элементовПоследний индекс при счете с нуля
10
32
54
65
109

Ошибка на один шаг - частая проблема. Если написать условие i <= 6 для массива из 6 элементов, счетчик попробует обратиться к индексам 0, 1, 2, 3, 4, 5, 6. Индекс 6 уже выходит за границу.

Пример: мигнуть светодиодом

Псевдокод:

повторить 5 раз
включить светодиод
подождать
выключить светодиод
подождать

После каждого мигания счётчик увеличивается. Когда i становится равен 5, программа выходит из цикла.

Блок-схема мигания светодиодом пять раз

Здесь счетчик нужен не для расчета, а для контроля количества повторений. Робот не спрашивает датчик и не ждет события. Он делает ровно пять одинаковых циклов.

В Arduino-стиле это может выглядеть как цикл for:

for (int i = 0; i < 5; i++) {
// команды мигания
}

Переменная i сначала равна 0, потом 1, потом 2, 3, 4. После пятого выполнения она станет 5, условие i < 5 перестанет выполняться, и цикл завершится.

Обработка набора данных

Счетчик проходит по набору измерений

Цикл со счетчиком особенно полезен для массивов. Пусть робот сохранил 6 измерений расстояния и хочет найти среднее значение.

сумма = 0
для каждого измерения
добавить измерение к сумме
среднее = сумма / количество измерений

Для массива из шести измерений алгоритм можно записать следующей блок-схемой:

Блок-схема вычисления среднего значения массива

Счетчик помогает пройти по каждой ячейке ровно один раз. Без цикла пришлось бы писать сложение вручную:

сумма = a0 + a1 + a2 + a3 + a4 + a5

Если измерений станет 20, ручная запись сразу станет неудобной.

Что такое индекс

Индекс - это номер элемента в массиве. По индексу программа выбирает, с каким элементом работать.

Как проверить количество повторений

Для цикла со счетчиком полезно выписать значения счетчика до запуска программы. Это занимает меньше минуты и часто находит ошибку раньше, чем робот начнет странно двигаться.

Например:

начало: i = 2
условие: i < 6
шаг: i = i + 1

Значения будут такими:

2, 3, 4, 5

Тело цикла выполнится четыре раза. Если ученик ожидал шесть повторений, значит начальное значение выбрано неверно. Если ожидал пройти индексы массива из шести элементов, то пропущены индексы 0 и 1.

Цикл со счетчиком и обычный цикл

Оба варианта повторяют действия, но отвечают на разные вопросы.

Тип циклаГлавный вопросПример
Цикл с условиемпока что-то остается верным?ехать, пока нет препятствия
Цикл со счетчикомсколько раз повторить?мигнуть 5 раз
Проход по массивукакой элемент сейчас обрабатываем?проверить 6 датчиков

Иногда они сочетаются. Например, робот может ехать по линии, пока не нажата кнопка, а внутри каждого повторения проходить по нескольким датчикам.

Что запомнить про счетчик

Счетчик делает повторение измеримым.

Что проверитьПочему
начальное значениеоткуда начинается счет
условие продолжениякогда цикл остановится
изменение счетчикачтобы не получить бесконечный цикл
границы массивачтобы не выйти за пределы данных
смысл индексакакой элемент обрабатывается

Если цикл должен выполниться 5 раз, полезно вручную выписать значения счетчика. Это быстро показывает ошибки в условии.

Практика

Задание 1

Запишите значения счетчика для цикла:

i = 0
пока i < 4
выполнить действие
i = i + 1

Сколько раз выполнится действие?

Задание 2

У робота есть массив из 5 измерений. Какие индексы нужно проверить, если счет начинается с нуля?

Задание 3

Составьте алгоритм, который мигает светодиодом 3 раза. Используйте счетчик, а не три одинаковых блока команд.

Проверьте себя

  • Чем цикл со счетчиком отличается от цикла с условием?
  • Зачем счетчик увеличивают внутри цикла?
  • Почему массив из 6 элементов имеет последний индекс 5?
  • Что такое ошибка "на один шаг"?
  • Где в роботе можно использовать цикл со счетчиком?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

  • Цикл со счетчиком - повторение команд с переменной, которая считает шаги.
  • Счетчик - переменная номера текущего повторения.
  • Индекс - номер элемента в массиве.
  • Массив - набор значений, расположенных по порядку.
  • Граница массива - первый и последний допустимый индекс.
  • Ошибка на один шаг - ситуация, когда цикл выполняется на один раз больше или меньше нужного.
  • Итерация - одно повторение тела цикла.

Связанные темы

Источники