Программирование киберфизических систем. Пример сценария 2

Образовательная программа «Программирование киберфизических систем»

Модуль «Сопоставление блок-схем и диаграмм машины состояний»

Этот модуль относится к середине программы «Программирование киберфизических систем», также он может быть проведен в заключительной части программы. Модуль имеет смысл проводить уже после знакомства учащихся с основами языка машин состояний и получения опыта программирования в рамках турнира по программированию в игре «Защита пасеки».

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 Вопросы на рефлексию

В рамках итоговой рефлексии педагог может задать следующие вопросы:

  • Для каких задач представление программы в виде блок-схем будет более удачным? Для каких выгоднее использовать машины состояний?
  • Какие преимущества в информативности представления программы в виде машины состояний вы можете выделить?
  • Чем отличаются синхронное и асинхронное исполнение команд в программе? Какой способ работы с командами больше подходит для блок-схем и машин состояний? Почему?
  • Какие задачи из реальности хорошо могут быть хорошо решены в императивном подходе и с программой в виде блок-схемы, а какие в событийном с машинами состояний?