Вы находитесь на странице: 1из 3

Программируем BBC micro:bit

Шаг 4. Случайные числа

Моделируя систему с обратной связью, поведение которой зависит от показаний датчика,


разработчик должен предусмотреть все возможные значения данных этого датчика. Часто при
отладке программы управления системой разработчику удобно использовать не реальные значения
датчика (его может не быть под рукой или настройка системы требует специальных условий и/или
времени), а гипотетические, модельные. И в этой ситуации удобно воспользоваться случайными
числами, которые закроют весь диапазон возможных значений. Случайные числа в программе
генерирует ​датчик случайных чисел — ​ random. Такой датчик можно представить в виде
барабана, который используется при розыгрыше лотереи. Шарики в этом барабане имеют номера от
0 до …. Верхняя граница задаётся как “количество случайных вариантов - 1”. Например, при
бросании монеты число возможных случайных вариантов равно 2, а при бросании игрального кубика
— ​6.

Нужный блок находится в группе ​Math:

В качестве примера рассмотрим программирование системы, которая получает данные от датчика


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

1. Если температура ниже 10 градусов, вывести снежинку (​придумайте изображение​);


2. Иначе, если ниже 20 градусов, вывести “Зонтик”;
3. Иначе, если ниже 25 градусов, вывести “Yes” (​температура комфортная​)
4. Иначе, если ниже 30 градусов, вывести “Футболка”
5. Иначе вывести “No” (​нужно принять срочные меры​)

Для моделирования данных, поступающих от датчика, используем генератор случайных чисел.


Предположим, что температура может меняться в диапазоне от -5 до 40 градусов.

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

Вспомним, метафору про барабан для лотереи. Сколько шаров должно быть в этом барабане?
Столько, сколько “случайностей” возможно в данной задаче. Это число равно 40 - (-5) +1 = 46.
Математическая формула: Верхняя_граница - Нижняя_граница + 1.
Проверьте!

Вспомните, что самый маленькое значение случайного числа “в барабане” равно 0, а у нас ​— -5.
Поэтому от номера “выпавшего из барабана случайного шара” надо вычесть 5.

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

Тузова О. А. Программируем BBC micro:bit. Шаг 4. Элемент случайности - основа игры


Соберите код, запустите программу и проанализируйте результат: весь ли диапазон возможных
значений температуры вы наблюдаете, есть ли какая-то закономерность в полученных значениях?

Очень часто случайные числа используются при программировании игровых ситуаций.

Элемент случайности — основа игры.

Вряд ли кому-то надо объяснять правила игры “Камень, ножницы, бумага”. У этой игры нет языковых
барьеров, её любят взрослые и дети, с её помощью можно скрасить
томительное ожидание и мирно решить вопрос чья очередь мыть
посуду. Результат игры нельзя предсказать заранее, на результат
влияет ​случайность​.

Обычно в “Камень, ножницы, бумага” играют два человека,


используя пальцы руки. Предложим им использовать наш micro:bit.
Для этого мы напишем программу, в которой игроки будут по
очереди нажимать кнопки A и B микроконтроллера. После нажатия
кнопки на экране дисплея появится изображение камня, или
изображение ножниц, или бумаги. Какое изображение появится,

Тузова О. А. Программируем BBC micro:bit. Шаг 4. Элемент случайности - основа игры


заранее не известно. Оно случайное. Дальше игроки применяют известные правила, определяющие
победителя.

Мы уже знаем, как ввести случайность в программу и, наверное, вы уже способны самостоятельно
написать программу. Для тех, кто в себе не уверен, подсказки:

Решение (для кнопки А)

Для кнопки B решение аналогично.


Для скорости можно
продублировать все блоки для
кнопки A и заменить имя A на B.
Обратите внимание на
возможность вставки комментария.
Наличие комментариев
значительно упрощает чтение
сложной программы.
Играем и получаем удовольствие!

Как справиться со сложной конструкцией ветвления показано в ролике: ​https://youtu.be/eReb5NoZJLE

Подобным образом можно смоделировать бросание игрального кубика и заменить в игре реальный
кубик микроконтроллером.

Программа “Камень, ножницы, бумага” может иметь интересное развитие:

1. Игроки используют один микроконтроллер, но на экране выводятся одновременно оба


результата выбора для первого и второго игроков.
2. Игроки используют два микроконтроллера и обмениваются информацией через BlueTooth
соединение.

О том, как это можно сделать и как при этом организовать уроки, описано здесь: ​ссылка

Тузова О. А. Программируем BBC micro:bit. Шаг 4. Элемент случайности - основа игры