Образовательная программа «Программирование киберфизических систем»
Модуль «Сопоставление блок-схем и диаграмм машины состояний»
Этот модуль относится к середине программы «Программирование киберфизических систем», также он может быть проведен в заключительной части программы. Модуль имеет смысл проводить уже после знакомства учащихся с основами языка машин состояний и получения опыта программирования в рамках турнира по программированию в игре «Защита пасеки».
1. Аудитория, на которую рассчитан модуль
Модуль может проводиться для школьников начиная с 5 класса общеобразовательной школы. Учащиеся могут не иметь систематических знаний по информатике, но к старту занятия должны:
иметь общие представления о языке визуализации программ в виде блок-схем;
владеть основами языка машин состояний (состояние, событие, объектное представление объекта управление – модули и команды) и иметь опыт программирования на языке машин состояний, например, в рамках игры «Защита пасеки».
2. Программа модуля
Программа модуля представлена в следующей таблице:
№ | Тема занятия | Кол-во часов | Образовательный результат |
---|---|---|---|
1 | Восстановление и сравнение графических языков блок-схем и машин состояний | 2 | Блок-схемы. Особенности графического языка блок-схем. Машины состояний. Диаграммы машин состояний с пиктограммным и текстовым представлением Логика исполнения программы, связанная с блок-схемами и машинами состояний |
3 | Сравнение блок-схемы и диаграммы машины состояний для умной теплицы | 2 | Создание машины состояний, представленной в диаграмме, и алгоритма, выраженного блок-схемой для решения практической задачи |
2 | Конструирование диаграммы машины состояний и блок-схемы для задачи о облете поля дроном | 4 | Графические элементы визуальных языков представления программ. Сопоставление графических языков блок-схем и машин состояний в контексте решения практической задачи |
4 | Конструирование диаграммы машины состояний и блок-схемы для задачи о координации действий дронов | 4 | Создание машины состояний, представленной в диаграмме, и алгоритма, выраженного блок-схемой для решения практической задачи. Сопоставление графических языков блок-схем и машин состояний в контексте решения практической задачи |
3. Сценарий занятия по теме «Конструирование диаграммы машины состояний и блок-схемы для задачи о облете поля дроном»
В рамках занятия учащимся предлагается решить практическую задачу – составить программу, представив ее в двух разных формах – как диаграмму машины состояний и как блок-схему.
3.1 Содержание занятия
Единица содержания занятия: императивный и событийный подходы программирования:
-
составление алгоритмов программ с учетом разницы в логике их исполнения;
-
различение графического представления блок-схем и диаграмм машин состояний;
-
преимущества каждого из подходов при решении задач разных типов.
Императивный подход предполагает последовательное указания вычислительной системы всех команд (действий), которые система должна исполнить.
Событийный подход предполагает управление посредством обработки событий и смены состояний в системе, таким образом система программируется не в виде последовательности команд, а в виде ограничений, накладываемых на ее автономную работу.
В рамках работы с данным содержанием учащимся придется различить синхронное и асинхронное управление.
3.2. Формат проведения занятия
Учащимся предстоит самостоятельно конструировать новые программы (в виде диаграмм машин состояний и блок-схем) в опоре на имеющиеся у них способы программирования машин состояний и императивного программирования на языке блок-схем. Поэтому мы предлагаем разделить учащихся на группы по 2-3 человека, чтобы они могли обсуждать и решать задачу совместно, представлять общий ответ от команды.
Сценарий занятия разворачивается на работе со схемами и в теоретическом сопоставлении программ и их последующего обсуждения. Это значит, что в простейшей реализации данный модуль не требует компьютеров, напротив, лучше проводить его в классе с общей доской и возможностью командной работы учащихся.
В рамках общего обсуждения учащиеся представят свои версии, изображая их на листах в тетради или на флипчарте. Педагог может предложить перенести полученные в ходе работы групп версии в общее пространство – на доску.
На первом шаге обсуждения педагог предлагает всем учащимся отнестись к наиболее интересным (в т.ч. разнообразным) полученным схемам – у всех ли получилось изобразить диаграммы машин состояний и блок-схемы? Возможно, совместными усилиями педагога и представителей группы авторов обсуждаемой схемы нужно будет восстановить правила обозначений в соответствующих диаграммах, проверить их «работоспособность» и соответствие поставленной задаче.
3.3. Задачи, решаемые в рамках занятия
Задача 1. Дано поле 100 x 100 квадратов. Дрон начинает полет в левом нижнем углу – в квадрате с координатами (0; 0). Предложите программу облета дроном всего поля в поисках пропавшего человека.
В вашем распоряжении есть функции модуля «Навигация»:
- Навигация.ПоложениеX() и Навигация.ПоложениеY() – возвращают текущие координаты дрона.
- Нацигация.Полет(направление, квадраты) – совершает полет по прямой в целевом направление (+X, -X, +Y,-Y или их комбинации +X-Y) и на заданное число квадратов. Функция не возвращает управление, пока происходит полет.
- Навигация.НачатьПолет(направление, квадраты) – задает целевое направление и число квадратов и начинает перемещение (параметры как в предыдущей функции). При завершении полета сработает событие Навигация.ПолетЗавершен, а также значение одноименной функции Навигация.ПолетЗавершен() будет возвращать ИСТИНА.
И функции модуля «Сканер»:
- Сканер.ПоискПоФото() – сканировать текущий квадрат в поисках пропавшего человека. Функция не возвращает управление, пока происходит анализ. В случае обнаружения функция возвращает ИСТИНА.
- Сканер.ИскатьПоФото() – начать сканировать квадрат в поисках пропавшего человека. При завершении сканирования сработает событие Сканер.ПоискЗавершен, а также одно из двух событий, соответствующее результату поиска, Сканер.ПоискУспешен или Сканер.ПоискНеудачен.
- Одноименные функции Сканер.ПоискЗавершен() и др. станут принимать значение ИСТИНА.
Дрон не может одновременно перелетать к новому квадрату и сканировать текущий квадрат (одновременно выполнять функции модулей «Навигации» и «Сканера»).
Возможные решения задачи.
(схема 1 – блок-схема)
(схема 2 – диаграмма машины состояний)
Обсуждение решения. В рамках обсуждения необходимо сравнить два полученных и оформленных на разных графических языках решения. Возможный вопрос педагога:
Сравните получившиеся решения. Какой из способов задания и описания программы вам кажется более удачным – блок-схема или машины состояний. Почему?
Одним из таких различий может быть синхронный (Полет) и асинхронный (НачатьПолет+ПолетЗавершен) вызов команд в каждом из подходов.
Задача 2. Как может измениться предложенная диаграмма машины состояний, если дрон будет способен одновременно выполнять функции навигации/полета и сканирования? Функция Сканер.Сканировать()позволит непрерывно сканировать в течение полета и не требует повторного вызова, а событие Сканер.ПоискНеудачен будет вызывается регулярно по мере облета квадратов. Как при этом может измениться блок-схема?
Возможное решение.
(схема 3 – модифицированная машина состояний)
Обсуждение решения.
Блок-схема принципиально не изменится, ведь императивное программирования и такой способ визуализации программ предполагает синхронное выполнение команд – с ожиданием исполнения после запуска.
При обсуждении обновленной диаграммы машины состояний можно обратить внимание, что чем более параллельно исполнение отдельных функций в программе, тем более лаконичной становится диаграмма машин состояний. Это не случайно, ведь логика исполнения машин состояний связана с асинхронным выполнением команд (сперва запуск, затем реакция на завершение через возникновение события).
3.4 Вопросы на рефлексию
В рамках итоговой рефлексии педагог может задать следующие вопросы:
- Для каких задач представление программы в виде блок-схем будет более удачным? Для каких выгоднее использовать машины состояний?
- Какие преимущества в информативности представления программы в виде машины состояний вы можете выделить?
- Чем отличаются синхронное и асинхронное исполнение команд в программе? Какой способ работы с командами больше подходит для блок-схем и машин состояний? Почему?
- Какие задачи из реальности хорошо могут быть хорошо решены в императивном подходе и с программой в виде блок-схемы, а какие в событийном с машинами состояний?