Элементарные действия. Алгоритмические структуры

Содержание

Слайд 2

Движение вперед базовой тележки задается подачей на левый и правый мотор

Движение вперед базовой тележки задается подачей на левый и правый мотор

одинаковой скорости

В ТРИК Студии для подачи мощности на мотор существует отдельный блок «Моторы вперед». У этого блока есть два свойства: порты и мощность

Движение вперед

У контроллера ТРИК есть четыре порта для подключения силовых моторов: M1, M2, M3 и M4

После элементарного действия всегда выставляется какой-либо блок ожидания: таймер, ожидание энкодера и т.д.

Слайд 3

В 2D модели по умолчанию левый мотор подключен к порту M3,

В 2D модели по умолчанию левый мотор подключен к порту M3,

правый – M4

На выпадающем меню Моторы в 2D модели всегда можно изменить подключение моторов

Движение назад

Аналогично выполняется движение назад. Используется блок «Моторы назад»

На самом деле, диапазон подаваемой мощности: от -100 до 100 процентов. Таким образом, для движения назад можно использовать и блок «Моторы вперед» (подав мощность -100 %)

Слайд 4

Повороты Повороты можно разделить на 3 типа: резкий поворот мощность подается

Повороты

Повороты можно разделить на 3 типа:
резкий поворот мощность подается только на

одно колесо
плавный поворот мощность подается на два колеса, но на одно больше
поворот на месте
Слайд 5

Модели алгоритмов Представленные выше алгоритмы – тайм-модели. Движение осуществляется по таймеру.

Модели алгоритмов

Представленные выше алгоритмы – тайм-модели. Движение осуществляется по таймеру. Это

«плохой» подход, так как в этом случае выполняемое действие зависит от заряда аккумулятора

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

Остальные действия реализуются аналогично

резкий поворот

Слайд 6

Поставьте галочку в окошко «Сетка». Теперь Вы можете отслеживать точные перемещения

Поставьте галочку в окошко «Сетка». Теперь Вы можете отслеживать точные перемещения

модели.
(1 клетка = 17,5 см)

Также, в режиме «отладка» всегда можно посмотреть параметры визуальной модели (Model parameters) Для удобства длина и размер базы робота совпадают с размером клетки (17,5 см)

Точные перемещения

Слайд 7

Переменные В ТРИК Студии можно ввести свои переменные, используя блок «Функция».

Переменные

В ТРИК Студии можно ввести свои переменные, используя блок «Функция». Для

объявления и инициализации новой переменной (например, err) просто введите в свойства этого блока: имя_переменной = значение (err = 70-5)

Переменная — поименованная область памяти

Созданным переменным можно присваивать другие переменные, если последние были объявлены и инициализированы ранее (u=5*err)

Слайд 8

Энкодеры – задачи Задача №1. Проехать вперед, развернуться на 180 градусов,

Энкодеры – задачи

Задача №1. Проехать вперед, развернуться на 180 градусов,

проехать задом. Использовать энкодерную модель

Задача №2. Обогнуть угол. Проехать вперед со скоростью 60, развернуться на 90 градусов, проехать вперед с максимальной скоростью. Использовать энкодерную модель

Слайд 9

Задача. Проехать вперед ровно на 1 метр и 5 сантиметров. Использовать

Задача. Проехать вперед ровно на 1 метр и 5 сантиметров. Использовать

энкодерную модель Для этого Вам пригодятся следующие параметры: d = 5,6 см (диаметр колеса), CPR = 360 (полный оборот колеса)

Точные перемещения – задача

Слайд 10

Решение. Для решения этой задачи, необходимо вспомнить элементарные формулы из курса

Решение. Для решения этой задачи, необходимо вспомнить элементарные формулы из курса

школьной математики: расчет длины окружности и угла поворота. Введем следующие переменные: d – диаметр колеса робота; dist – расстояние, которое необходимо проехать роботу; cpr – один оборот колеса в градусах;
p – периметр (длина) окружности;
en – количество энкодеров

Точные перемещения – задача

Слайд 11

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

Алгоритм — набор инструкций, описывающих порядок действий исполнителя для достижения результата решения

задачи за конечное число действий, при любом наборе исходных данных

Алгоритм

Исполнитель: робот или любое другое устройство
Инструкции: включить мотор, ждать 3 секунды, повернуть серводвигатель на 80 градусов, включить диод и т.д.

действие 1

Начало

действие 2

действие 3

Конец

Блок-схема — распространенный тип схем(графических моделей), описывающих алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков различной формы, соединенных между собой линиями, указывающими направление последовательности

Слайд 12

Алгоритмические структуры Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм

Алгоритмические структуры

Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм состоит

только из структур следования, то он является линейным
Ветвление. Выполнение программы идет по одной из двух, нескольких или множества ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных
Цикл. Предполагает возможность многократного повторения определенных действий. Количество повторений зависит от условия цикла
Выбор (Switch). Представляет собой структуру, построенную по принципу меню, и содержит все возможные варианты условий и инструкции, которые следует выполнить в каждом конкретном случае
Слайд 13

Следование

Следование

Слайд 14

Следование Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм состоит

Следование

Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм состоит только

из структур следования, то он является линейным

действие 1

Начало

действие 2

действие 3

Конец

Блок-схема

Псевдокод

speed=-100;
robot.motor.[M2].setPower(100);
robot.motor.[M3].setPower(speed);
robot.wait(1500)

Например, любое элементарное действие — это структура следования

Слайд 15

Следование – задача Задача. Написать алгоритм движения модели «змейкой». Использовать энкодерную модель

Следование – задача

Задача. Написать алгоритм движения модели «змейкой». Использовать энкодерную модель

Слайд 16

Ветвление

Ветвление

Слайд 17

Ветвление. Выполнение программы идет по одной из двух, нескольких или множества

Ветвление. Выполнение программы идет по одной из двух, нескольких или множества

ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных

Ветвление

Существует 4 типа ветвления:
если-то
если-то-иначе
выбор
выбор-иначе

Слайд 18

Ветвление Ветвление «если-то» Блок-схема if (encoder.[B2].read() robot.motor.[M2].setPower(100); robot.motor.[M1].setPower(100); Условие Начало действие

Ветвление

Ветвление «если-то»

Блок-схема

if (encoder.[B2].read() < 500)
robot.motor.[M2].setPower(100);
robot.motor.[M1].setPower(100);

Условие

Начало

действие 1

нет

да

действие 2

Конец

Пример в ТРИК Студии

Псевдокод

Слайд 19

Ветвление Блок-схема Псевдокод if (encoder.[B2].read() robot.motor.[M2].setPower(100); else robot.motor.[M1].setPower(100); robot.wait(2000); Условие действие

Ветвление

Блок-схема

Псевдокод

if (encoder.[B2].read() < 500)
robot.motor.[M2].setPower(100);
else
robot.motor.[M1].setPower(100);
robot.wait(2000);

Условие

действие 1

Начало

действие 2

нет

да

действие 3

Конец

Пример в ТРИК

Студии

Ветвление «если-то-иначе»

Слайд 20

Ветвление Блок-схема Псевдокод if (encoder.[B2].read() robot.motor.[M2].setPower(50); elseif robot.motor.[M2].setPower(100); robot.wait(2000); Условие Действие

Ветвление

Блок-схема

Псевдокод

if (encoder.[B2].read() < 500)
robot.motor.[M2].setPower(50);
elseif
robot.motor.[M2].setPower(100);
robot.wait(2000);

Условие

Действие 2

действие 1

нет

да

действие 3

Пример в ТРИК

Студии

Ветвление «выбор»

Условие

да

нет

Слайд 21

Ветвление Псевдокод if (encoder.[B2].read() robot.motor.[M2].setPower(50); elseif (encoder.[B2].read() robot.motor.[M2].setPower(100); else robot.motor.[M1].setPower(100); robot.wait(2000);

Ветвление

Псевдокод

if (encoder.[B2].read() < 500)
robot.motor.[M2].setPower(50);
elseif (encoder.[B2].read() < 1000)
robot.motor.[M2].setPower(100);
else robot.motor.[M1].setPower(100);
robot.wait(2000);

Условие

Действие 2

действие

1

нет

да

действие 4

Условие

да

нет

действие 3

Ветвление «выбор-иначе»

Блок-схема

Слайд 22

Ветвление Пример в ТРИК Студии Ветвление «выбор-иначе»

Ветвление

Пример в ТРИК Студии

Ветвление «выбор-иначе»

Слайд 23

Ветвление Задача: вывести на экран грустный смайлик, если робот далеко от

Ветвление

Задача: вывести на экран грустный смайлик, если робот далеко от стены,

и веселый, если близко; за границу считать значение 50 ИК датчика

Инфракрасный датчик расстояния — аналоговый датчик для измерения расстояния. Выдает значение расстояния. Рабочий диапазон от 10 до 80 см

Все датчики в ТРИК Студии подключаются на панели «Настройка сенсоров»

Для ветвления в ТРИК Студии используется блок «Условие», у которого имеется только одно свойство — само условие

Использование значений датчика осуществляется в ТРИК Студии также через переменные

При подключении датчика к порту A1 используется переменная sensorA1,
к A2 — sensorA2 и т.д.

Слайд 24

Операторы Операторы сравнения Логические операторы Для задания различных условий роботу необходимы операторы сравнения и логические операторы

Операторы

Операторы сравнения

Логические операторы

Для задания различных условий роботу необходимы операторы сравнения и

логические операторы
Слайд 25

Ветвление – задача Инфракрасный датчик расстояния — аналоговый датчик для измерения

Ветвление – задача

Инфракрасный датчик расстояния — аналоговый датчик для измерения расстояния.

Рабочий диапазон от 10 до 80 см

Блок схема алгоритма

sensorA1>50

Нарисовать веселый смайл

Начало

Нарисовать грустный смайл

нет

да

подождать 3 секунды

Конец

Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко. За границу считать значение 50 ИК датчика

Слайд 26

Ветвление – задача Псевдокод if (robot.sensor.[A1].read() > 50) robot.sadSmile(); else robot.smile();

Ветвление – задача

Псевдокод

if (robot.sensor.[A1].read() > 50)
robot.sadSmile();
else
robot.smile();
robot.wait(3000);

Решение в ТРИК

Студии

На связях, идущих от условия, указывается в свойствах истина и ложь для определения дальнейших действий, когда условие верно, и когда — нет

Инфракрасный датчик расстояния — аналоговый датчик для измерения расстояния. Рабочий диапазон от 10 до 80 см

Задача: вывести на экран грустный смайлик, если робот далеко от стены, и веселый, если близко; за границу считать значение 50 ИК датчика

Слайд 27

Ветвление – задача Задача для самостоятельного решения: вывести на экран: веселый

Ветвление – задача

Задача для самостоятельного решения: вывести на экран:
веселый смайлик,

если ИК датчик выдает до 40
вывести слово «неопределенность», если ИК датчик выдает от 40 до 60 вывести грустный смайлик в противном случае

Какой в этом случае вариант ветвления лучше использовать?

2D модель: для проверки задачи, нарисуйте при помощи инструмента «стена» препятствие перед роботом

Слайд 28

Цикл

Цикл

Слайд 29

Цикл Цикл. Предполагает возможность многократного повторения определенных действий. Количество повторений зависит

Цикл

Цикл. Предполагает возможность многократного повторения определенных действий. Количество повторений зависит от

условия цикла

Существует 4 основных типа цикла:
бесконечный (безусловный)
с итерациями
с предусловием
с постусловием

Цикл. Управляющая конструкция в языках программирования для организации многократного выполнения набора инструкций

Слайд 30

Цикл Блок-схема Псевдокод while true do robot.motor.[M2].setPower(100); Пример в ТРИК Студии

Цикл

Блок-схема

Псевдокод

while true do
robot.motor.[M2].setPower(100);

Пример в ТРИК Студии

Цикл бесконечный (безусловный)

Условие

Начало

действие 1

В

этом случае конца у программы может не быть
Слайд 31

Цикл Цикл с итерациями Блок-схема robot.motor.[M3].setPower(100); for (i = 0; i

Цикл

Цикл с итерациями

Блок-схема

robot.motor.[M3].setPower(100);
for (i = 0; i < 1000; i++)
robot.wait(1);
robot.motor.[M4].setPower(100);

Счетчик

с условием

Начало

действие 1

итерация

действие 2

Конец

Пример в ТРИК Студии

Псевдокод

Слайд 32

Цикл Цикл с предусловием Блок-схема while encoder.[E2].read() robot.motor.[M2].setPower(100); robot.motor.[M1].setPower(100); Условие Начало

Цикл

Цикл с предусловием

Блок-схема

while encoder.[E2].read() < 500 do
robot.motor.[M2].setPower(100);
robot.motor.[M1].setPower(100);

Условие

Начало

действие 1

нет

да

действие 2

Конец

Пример в

ТРИК Студии

Псевдокод

Слайд 33

Цикл Цикл с постусловием Блок-схема do robot.motor.[M2].setPower(100); robot.wait(1); while encoder.[E2].read() robot.motor.[M1].setPower(100);

Цикл

Цикл с постусловием

Блок-схема

do
robot.motor.[M2].setPower(100);
robot.wait(1);
while encoder.[E2].read() < 500
robot.motor.[M1].setPower(100);

Условие

Начало

действие 1

нет

да

действие 2

Конец

Пример

в ТРИК Студии

Псевдокод

Слайд 34

Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на

Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на

черном поле, и грустный, если на белом; за границу считать значение 50 датчика света

Датчик света – аналоговый датчик для измерения освещенности. Выдает значение от 0 до 100

Для циклов с условиями в ТРИК Студии используется блок «Условие», а с итерациями – блок «Цикл». Бесконечные циклы реализуются путем соединения одного из блоков с каким-либо предыдущем

Блок схема алгоритма

sensorA1>50

Нарисовать веселый смайл

Начало

Нарисовать грустный смайл

нет

да

Цикл – задача

Слайд 35

Псевдокод while true do if (robot.sensor.[A1].read() > 50) robot.smile(); else robot.sadSmile();

Псевдокод

while true do
if (robot.sensor.[A1].read() > 50)
robot.smile();
else
robot.sadSmile();

robot.wait(30);

Решение в ТРИК Студии

Задача «Настроение робота»: выводить на экран веселый смайлик, если робот на черном поле, и грустный, если на белом; за границу считать значение 50 датчика света

Цикл – задача

Датчик света – аналоговый датчик для измерения освещенности. Выдает значение от 0 до 100

Слайд 36

2D модель: нарисуйте масляное пятно при помощи инструмента «карандаш». Толщину карандаша задайте «30» Цикл – задача

2D модель: нарисуйте масляное пятно при помощи инструмента «карандаш». Толщину карандаша

задайте «30»

Цикл – задача

Слайд 37

Задача для самостоятельного решения: Кентервильское привидение Кентервильский робот-привидение рисует каждую ночь

Задача для самостоятельного решения: Кентервильское привидение

Кентервильский робот-привидение рисует каждую ночь лужи

красной краской. Убедившись, что лужа красная, он довольный скрывается из виду. Когда красная краска заканчивается, он рисует лужи зеленым и расстроенный отключается. Научите робота определять цвет лужи и выключаться, если лужа зеленая. В первый раз робот всегда в приподнятом настроении

Цикл – задача для самостоятельного решения

Слайд 38

Задача для самостоятельного решения: Кентервильское привидение Пояснение: выводить на экран: веселый

Задача для самостоятельного решения: Кентервильское привидение

Пояснение: выводить на экран:
веселый смайлик, если

робот видит красную лужу (меньше 23) или пустой пол (больше 37)
в противном случае (зеленая лужа) вывести на экран грустный смайлик (3 секунды) и закончить выполнение программы
Считывать новое значение с датчика каждую секунду.

Цикл – задача для самостоятельного решения

Слайд 39

Задача: Разгон и торможение Напишите программу: плавный разгон робота в течение

Задача: Разгон и торможение

Напишите программу: плавный разгон робота в течение 2

секунд, а затем плавное торможение в течение 3 секунд.

Цикл – задача

Слайд 40

Swith

Swith

Слайд 41

Представляет собой структуру, построенную по принципу меню, и содержит все возможные

Представляет собой структуру, построенную по принципу меню, и содержит все возможные

варианты условий и инструкции, которые следует выполнить в каждом конкретном случае

Switch

В ТРИК Студии реализуется с помощью одноименного блока

Блок проверяет выражение. От блока отводятся связи, на которых указываются возможные значения этого выражения (например, переменной). Одна связь обязательно должна быть пустая (“default”)

Слайд 42

Данный пример демонстрирует случайный выбор одного из четырех состояний робота: «Я

Данный пример демонстрирует случайный выбор одного из четырех состояний робота: «Я

готов к роботе», «Улыбаюсь», «Грущу», «Отдыхаю…»

Switch

Слайд 43

Switch – задача Задача: выводить на экран робота в 2D модели

Switch – задача

Задача: выводить на экран робота в 2D модели по

нажатию код кнопок контроллера ТРИК

В ТРИК Студии имеется блок «Получить код кнопки», который записывает код нажатой кнопки в переменную. Все коды кнопок представлены в кодировке ASCII
Зная коды кнопок с помощью switch можно написать своё меню