🔄 Алгоритмическая структура «Цикл»

Повторения, которые делают роботов умнее

🔁 Итерации • 📊 Условия • ⚡ Оптимизация • 🤖 Применение
7 класс • Технология • 45 минут

🎯 Цель урока

💡 Изучим:

  • Три типа циклических структур
  • Применение циклов в робототехнике
  • Оптимизацию повторяющихся действий
  • Создание эффективных алгоритмов

🔄 Формула успеха:

1Задача → Анализ → Выбор цикла → Реализация → Оптимизация

🧠 Зачем роботам нужны циклы?

🤖 Примеры из жизни роботов

🏠 Робот-пылесос:

1while battery_level > 20%:
2    scan_room()
3    move_to_dirt()
4    clean_area()
5    check_obstacles()

🚗 Автопилот:

1while destination_not_reached:
2    read_sensors()
3    analyze_road()
4    adjust_steering()
5    control_speed()

🏭 Производственный робот:

1for i in range(1000):  # 1000 деталей
2    pick_part()
3    assemble()
4    place_result()
5    quality_check()

⚡ Преимущества циклов

❌ Без циклов:

1move_forward()
2move_forward()
3move_forward()
4move_forward()
5move_forward()
6# ...повторить 100 раз!

✅ С циклами:

1for i in range(100):
2    move_forward()

📊 Экономия:

  • Код: с 100 строк до 2 строк
  • Память: в 50 раз меньше
  • Время разработки: в 20 раз быстрее
  • Вероятность ошибок: в 10 раз меньше

🔄 Три типа циклов

1️⃣ Цикл с предусловием (WHILE)

🔍 Принцип: Проверяем условие ДО выполнения

1while условие_истинно:
2    выполнить_действие()

📊 Блок-схема:

 1   ┌─────────┐
 2   │ Условие │ ──Ложь──→ Выход
 3   └────┬────┘
 4        │Истина
 5 6   ┌─────────┐
 7   │ Действие│
 8   └────┬────┘
 910        └──────────┘

🤖 Пример - движение до препятствия:

1while distance_sensor.value() > 10:  # пока расстояние больше 10 см
2    motors.forward(50)               # двигаться вперед
3motors.stop()                        # остановиться

2️⃣ Цикл с постусловием (DO-WHILE)

🔍 Принцип: Выполняем действие, ПОТОМ проверяем

1do:
2    выполнить_действие()
3while условие_истинно

📊 Особенность: Выполняется минимум 1 раз!

🤖 Пример - поиск линии:

1do:
2    robot.turn_right(5)              # повернуть на 5°
3    color = color_sensor.value()     # проверить цвет
4while color != "black"               # пока не найдена черная линия

3️⃣ Счетный цикл (FOR)

🔍 Принцип: Повторяем ТОЧНО заданное число раз

1for i in range(количество_повторений):
2    выполнить_действие()

🎯 Когда использовать:

  • Известно точное число повторений
  • Нужен счетчик итераций
  • Обработка массивов данных

🤖 Пример - движение по квадрату:

1for side in range(4):               # 4 стороны квадрата
2    robot.forward(30)               # вперед на 30 см
3    robot.turn_right(90)            # поворот на 90°

⚖️ Сравнение типов циклов

Критерий WHILE DO-WHILE FOR
Проверка условия До выполнения После выполнения Автоматически
Минимум выполнений 0 раз 1 раз 0 раз
Счетчик Ручной Ручной Автоматический
Применение Неизвестное число Минимум 1 раз Точное число

🎯 Правило выбора:

  • Знаем точное количество → FOR
  • Нужно выполнить минимум 1 раз → DO-WHILE
  • Условие может быть ложным сразу → WHILE

🛠️ Практические примеры

🛤️ Следование по линии

Задача: Робот должен ехать по черной линии

 1# Основной цикл программы
 2while True:                          # бесконечный цикл
 3    color = color_sensor.value()
 4    
 5    if color == "black":            # на линии
 6        left_motor.run(50)
 7        right_motor.run(50)
 8    elif color == "white":          # справа от линии
 9        left_motor.run(30)          # левый медленнее
10        right_motor.run(70)         # правый быстрее

🔧 Оптимизация с PID-регулятором:

1while not finished:
2    error = line_center - current_position
3    correction = Kp * error
4    
5    left_speed = base_speed - correction
6    right_speed = base_speed + correction
7    
8    motors.run(left_speed, right_speed)

🎯 Сортировка объектов

Задача: Рассортировать 10 цветных шариков

 1sorted_count = 0
 2
 3while sorted_count < 10:            # пока не отсортировали все
 4    # Найти шарик
 5    while not object_detected():
 6        robot.search_pattern()
 7    
 8    # Определить цвет
 9    color = color_sensor.value()
10    
11    # Отнести в нужный контейнер
12    if color == "red":
13        robot.move_to_red_box()
14    elif color == "blue":
15        robot.move_to_blue_box()
16    elif color == "green":
17        robot.move_to_green_box()
18    
19    robot.drop_object()
20    sorted_count += 1               # увеличить счетчик

🏃 Патрулирование территории

Задача: Робот патрулирует по заданному маршруту

 1waypoints = [(0,0), (100,0), (100,100), (0,100)]  # координаты точек
 2
 3for patrol_round in range(5):       # 5 кругов патрулирования
 4    for point in waypoints:         # по каждой точке маршрута
 5        robot.move_to(point)
 6        
 7        # Сканирование в каждой точке
 8        for angle in range(0, 360, 45):  # поворот с шагом 45°
 9            robot.turn_to(angle)
10            if obstacle_detected():
11                robot.alert("Obstacle found!")
12                
13    robot.return_to_base()

🧮 Математика циклов

📊 Сложность алгоритмов

Временная сложность циклов: \[O(n) = \text{количество итераций} \times \text{сложность тела цикла}\]

Примеры:

  • Простой цикл: O(n)
  • Вложенные циклы: O(n²)
  • Цикл в цикле в цикле: O(n³)

⚠️ Осторожно с вложенностью!

1# O(n³) - очень медленно для больших n!
2for i in range(n):
3    for j in range(n):
4        for k in range(n):
5            do_something()

⚡ Оптимизация циклов

1. Минимизация операций в теле цикла:

1# ❌ Плохо - вычисление в каждой итерации
2for i in range(100):
3    result = expensive_calculation()  # медленная операция
4    robot.move(result)
5
6# ✅ Хорошо - вычисление один раз
7result = expensive_calculation()
8for i in range(100):
9    robot.move(result)

2. Выбор правильного условия выхода:

 1# ❌ Плохо - лишние проверки
 2while True:
 3    sensor_value = sensor.read()
 4    if sensor_value > threshold:
 5        break
 6    robot.move()
 7
 8# ✅ Хорошо - прямое условие
 9sensor_value = sensor.read()
10while sensor_value <= threshold:
11    robot.move()
12    sensor_value = sensor.read()

🛠️ Практическая работа

📋 Задания по уровням

🟢 Базовый уровень: Создать блок-схему для робота, который:

  • Движется вперед до черной линии
  • Поворачивает на 180°
  • Возвращается в исходную точку

🟡 Средний уровень: Алгоритм для робота-охранника:

  • Патрулирует прямоугольную территорию
  • При обнаружении препятствия подает сигнал
  • Объезжает препятствие и продолжает патруль

🔴 Продвинутый уровень: Робот-исследователь лабиринта:

  • Ищет выход из лабиринта методом “правой руки”
  • Запоминает пройденный путь
  • Возвращается кратчайшим путем

⏱️ План работы (30 минут)

 1Этап 1: Анализ задачи (5 мин)
 2• Понимание требований
 3• Выбор типов циклов
 4• Планирование алгоритма
 5
 6Этап 2: Создание блок-схемы (10 мин)  
 7• Рисование схемы алгоритма
 8• Проверка логики
 9• Оптимизация структуры
10
11Этап 3: Программирование (10 мин)
12• Перевод схемы в код
13• Тестирование на роботе
14• Отладка ошибок
15
16Этап 4: Оптимизация (5 мин)
17• Улучшение производительности
18• Упрощение кода
19• Финальная проверка

🎤 Презентация результатов

📊 Демонстрация проектов

План защиты (2 минуты на команду):

  1. Задача - что должен делать алгоритм
  2. Структура - какие циклы использованы
  3. Демо - работа робота в действии
  4. Оптимизация - как улучшили алгоритм

❓ Вопросы для обсуждения:

  • Почему выбран именно этот тип цикла?
  • Как можно дальше оптимизировать алгоритм?
  • Что произойдет, если изменить условие цикла?

🏆 Критерии оценки

📊 Оценочная матрица:

  • Корректность блок-схемы (3 балла)
  • Правильность выбора циклов (2 балла)
  • Работоспособность программы (3 балла)
  • Оптимизация решения (2 балла)
  • Качество презентации (2 балла)

🎯 Максимум: 12 баллов

  • 11-12 баллов: “5”
  • 8-10 баллов: “4”
  • 6-7 баллов: “3”

🤔 Рефлексия

📝 Завершите предложения

“Сегодня я узнал…”

“Мне было интересно…”

“Мне было трудно…”

“Теперь я могу…”

🏠 Домашнее задание

🎯 Основное задание

Создать блок-схему алгоритма “Умный дом”:

Система должна использовать все 3 типа циклов:

  • FOR - проверка всех датчиков по очереди
  • WHILE - ожидание изменения освещенности
  • DO-WHILE - настройка температуры

📋 Требования:

  • Мониторинг температуры, освещенности, влажности
  • Автоматическое управление освещением
  • Поддержание комфортной температуры
  • Система безопасности

🌟 Дополнительно

Исследование: найти примеры циклических алгоритмов в реальных роботах:

  • Промышленные роботы на заводах
  • Бытовые роботы (пылесосы, газонокосилки)
  • Роботы-исследователи (марсоходы, подводные)

🎉 Итоги урока

🏆 Что освоили

✅ Изучили:

  • Три типа циклических структур
  • Правила выбора подходящего цикла
  • Методы оптимизации циклических алгоритмов
  • Применение циклов в робототехнике

🔄 Поняли:

  • Циклы экономят код и время разработки
  • Правильный выбор цикла критически важен
  • Оптимизация повышает эффективность
  • Блок-схемы помогают визуализировать логику

🌟 Главный принцип

“Хороший цикл - это цикл, который завершается в нужный момент и выполняет именно то, что требуется”

🚀 Следующий шаг: Изучение сложных алгоритмических структур и их комбинирование

💡 Теперь ваши роботы умеют повторять и не повторяют ошибок!