Разработка методических рекомендаций к урокам по изучению алгоритмизации и программирования с использованием Lego SPIKE Prime
1.1. Знакомство с образовательным решением Lego Education SPIKE Prime
LEGO Education – образовательное решение для изучения робототехники, предназначенное для дошкольного образования, младших школьников, учащихся средних классов, а также для старшей школы и дополнительного образования.
LEGO Education представляет систему профессионального развития, в основе этой программы стоит развитие педагогических компетенций в STEAM-обучении, которая позволяет эффективно использовать все образовательные решения LEGO Education.
Также LEGO предоставляет каждому возможность самостоятельного обучения, которое в свою очередь ориентировано на индивидуальные потребности и предпочтения. Система профессионального развития способствует формированию и совершенствованию компетенций педагогов, которые необходимы в нашем информационном обществе для проведения STEAM-обучения.
Как было сказано выше, LEGO Education представляет нам множество конструкторов для определенного возраста: дошкольное образование, 3-4 классы, 5-8 классы, а также старшая школа. Начнем с дошкольного образования. Главной задачей дошкольного обучения является подготовка детей к дальнейшему обучению и совершенствованию в робототехнике. В этом возрасте дети имеют желание учиться и узнавать что-то новое. Наборы для дошкольного обучения позволяют детям развить внимание, творчество, самостоятельность, а также поддерживают ярую любознательность посредством игр. Конструкторы направлены на социально-эмоциональное развитие, раннее развитие навыков программирования, навыков инженерного проектирования, развитие речи и языковых навыков, а также на зарождение навыков STEAM. Данные навыки необходимо формировать с самого раннего возраста с помощью стимулирования детского интереса к обучению детскими наборами, которые обладают неограниченным потенциалом для игр, обучения и исследования окружающего мира. Практическое обучение является важным элементом формирования у детей уверенности в своих знаниях. Учащиеся начальной школы с помощью наборов LEGO при решении поставленных задач научатся анализировать и находить возможные решения. Конечно же, случаются и неудачи при решении поставленных задач, но именно такие неудачи и являются путем получения нового опыта, ведь успех состоит в преодолении неудач на своем пути. При работе с наборами, которые рассчитаны на нескольких детей, школьники будут развивать навыки совместной командной работы, участвуя в учебном процессе со своими сверстниками. Кубики LEGO, робототехнические платформы и методические материалы позволяют развить интерес и творчество при изучении программирования. Учащиеся основной школы с помощью наборов LEGO получат практический опыт творческую самореализацию, навыки совместной работы, а также разовьют в себе критическое мышление. А самое главное – учащиеся этого возраста в полной мере могут реализовать свой потенциал в качестве лидеров нового цифрового будущего. Среди огромного разнообразия конструкторов компании LEGO в данной работе приводится подробное изучение такого образовательного решения, как конструктор LEGO Education SPIKE Prime (Рис. 1).
Рисунок 1. Набор Lego Spike Prime
LEGO Education SPIKE Prime – это уникальное образовательное решение для учащихся 5 - 7 классов. Данный набор включает в себя яркие и простые в использовании конструктивные элементы LEGO, электронные компоненты, а самое главное – интуитивный и интересный язык программирования (в данном наборе возможно использование профессионального текстового языка программирования Python, а также нотации Scratch). При использовании SPIKE Prime ребенок получает не только определенные навыки в робототехнике, но и удовольствие от процесса обучения, так как решение развивает у учащихся интерес к STEAM образованию путем использования игровой формы.
С помощью набора педагог может легко адаптировать материалы к любой учебной программе. Математика и информатика: при внедрении SPIKE в данные уроки педагог тем самым развивает у учащихся алгоритмическое мышление (составление алгоритма для робота); основы программирования; умение структурировать определенные процессы и т.д. Естественнонаучные дисциплины: с помощью SPIKE педагог развивает у учащихся умение формулировать гипотезы, конструировать, учит экспериментировать, а также подводить итоги и оценивать полученные результаты. Физика: педагог с помощью данного конструктора показывает и объясняет принципы действия машин, объясняет некоторые промышленные технологические процессы, а также физические законы путем практического применения роботов.
SPIKE Prime включает в себя шесть учебных курсов. К курсам представлены материалы для педагогов, которые сделают подготовку к урокам эффективной. Приведем краткое описание каждого из них:
1. Отряд изобретателей. Курс рассчитан на 8 уроков по 45 минут. Каждый урок рассчитан на применение инженерного проектирования. Дети научатся анализу данных для улучшения своих решений, систематизировать задачи, которые им необходимо решить. Данный курс отлично подойдет для практической работы на уроках технологии.
2. Запускаем бизнес. Курс рассчитан на 13 уроков по 45 минут. Каждый урок рассчитан на развитие навыков вычислительного мышления путем решения комплексных задач. Дети учатся ставить перед собой цель и достигать ее с помощью разбиения своих действий на составные части. Данный курс отлично подойдет для практической работы на уроках информатики.
3. Полезные приспособления. Курс рассчитан на 10 уроков по 45 минут. Каждый урок рассчитан на программирование с использованием данных и переменных. Дети учатся работать с переменными и массивами, содержащими различные типы данных, а также выполнять математические действия с использованием переменных. Данный курс отлично подойдет для практической работы на уроках информатики и математики.
4. К соревнованиям готовы! Курс рассчитан на 17 уроков по 45 минут. Каждый урок рассчитан на применение инженерного проектирования для организации соревнований роботов. Дети учатся создавать автономных роботов с использованием различных датчиков и изучают основы программирования. Данный курс отлично подойдет для участия в робототехнических соревнованиях.
5. Фитнес – трекеры. Курс рассчитан на 11 уроков по 45 минут. Каждый урок рассчитан на построение графиков данных для визуализации различных форм энергии. Дети научатся распознавать математические зависимости, оперировать статистическими и вероятностными данными, с помощью экспериментов научатся искать способы для повышения точности данных. Данный курс отлично подойдет для практической работы на уроках физики.
6. Дополнительные учебные материалы. Курс рассчитан на 5 уроков по 45 минут. Данный курс позволяет учащимся сформировать некоторые навыки по предметам STEAM. Дети научатся совместной деятельности, в которой они будут использовать индуктивный и дедуктивный методы решения задач.
При прохождении каждого курса учащиеся рассматривают ситуации из реальной жизни, пытаясь быстро и эффективно решить поставленные задачи, тем самым проходят «подготовку» к взрослой жизни и развивают уверенность в себе.
Каждое занятие с конструктором проходит в приложении SPIKE, которое включает в себя два языка программирования: Scratch и Python. Разберем их:
1. Scratch – интуитивно понятный графический язык программирования. Его главное преимущество – простота изучения, он подойдет для детей с любым первоначальным уровнем знаний. Scratch помогает учащимся творчески мыслить и системно рассуждать.
Для простоты программирования все команды поделены на категории по цветовой гамме (рис. 2). Синяя палитра - «моторы», розовая – «движение», фиолетовая –«подсветка», темно-розовая – «звук», желтая – «события», оранжевая – «управление», голубая – «датчики», зеленая – «операторы», коричневая – «переменные».
После всех категорий стоит категория «мои блоки», с помощью которой мы можем создавать свои индивидуальные блоки для простоты программирования. Также представлена возможность воспользоваться расширениями: «центр управления прогнозом погоды», «дополнительные моторы», «дополнительные движения», «дополнительные датчики», «музыка», «линейный график», «дисплей».
2. Python – язык программирования, широко используемый в робототехнике. Данный язык хорошо подходит для изучения текстового программирования. Он способствует изучению сложных тем: алгоритмы, структуры данных, обучение машин, искусственный интеллект. Но, несмотря на это, Python будет понятен даже новичкам.
Наш мир постоянно развивается с быстрой скоростью, поэтому программирование с набором LEGO Education SPIKE Prime подготовит учащихся к выбору основной деятельности и самореализации в будущем.
Набор SPIKE Prime содержит красочные и удобные элементы для конструирования. Все материалы обеспечивают простоту сборки и возможность использования элементов из других конструкторов компании LEGO, а также помогают учащимся решить поставленные задачи, несмотря на каком уровне знаний, умений и навыков они находятся.
Элементы набора:
1. Упаковка (Рис. 1). Казалось бы, какую роль в конструкторе играет упаковка? На самом деле, немаловажную. Она отличается своим удобством, так как в верхней части набора предусмотрен лоток для размещения деталей, а в нижней части располагаются электронные элементы, колеса и большие платформы. Также предоставлена возможность самостоятельно отсортировать конструктор, для этого в наборе предусмотрены наклейки на отсеки лотка.
2. Компоненты конструирования (Рис. 1):
∙ кирпичи 2х4 – с тремя отверстиями для осей;
∙ рамы 7х13 и 11х15 модулей;
∙ колеса с пониженным трением с поверхностью;
∙ платформы 11х19 модулей;
∙ зажимы для проводов;
∙ коническая шестерня на 28 зубьев;
∙ соединительные элементы 1x3x3 модулей.
В нижней части коробки располагаются остальные компоненты: крупные детали и электроника.
Хаб, моторы и датчики имеют квадратную форму и имеют со всех сторон отверстия для штифтов. Благодаря этому процесс сборки робота происходит более легко и просто. |
Рисунок 3. Электроника
Хаб. Это так называемый «мозг» робота, благодаря которому реализуется его программирование и управление. Подключается к компьютеру через Bluetooth или микро-USB кабель. Имеет: кнопки управления(кнопка влево/вправо, центральная кнопка, кнопка Bluetooth), шесть портов для моторов и двигателей, дисплей со светодиодными лампочками в виде матрицы 5*5, которая так же программируется, динамик и встроенные датчики – гироскоп на шесть осей и акселерометр. Вместо батареек – аккумулятор, который при необходимости можно заряжать непосредственно во время программирования, подсоединив Хаб к компьютеру с помощью USB-кабеля. |
|
||||
Два средних и один большой сервомотор. Особенность данных моторов в том, что они имеют нулевое положение, это предоставляет возможность автовозврата мотора в исходное положение. Данную возможность так же можно использовать для подсчета количества оборотов колеса. Мотор может использоваться либо как мотор, либо как датчик угла поворота.
|
|
||||
Датчик цвета. Датчик цвета позволяет определять цвет поверхности. Благодаря белому светодиоду способен определять цвет даже при недостаточной освещенности. Имеет несколько режимов: режим измерения яркости освещения, режим для обнаружения отраженного света, излучение белого света, режим для обнаружения цвета (белый, синий, черный, зеленый, желтый, красный, голубой, фиолетовый). |
|
||||
Датчик силы нажатия. Датчик силы способен определять касание и измерять силу нажатия в ньютонах (от 2,5 до 10 ньютон). Датчик может использоваться как кнопка. Умеет распознавать нажатие, клик и отпускание нажатия. |
|
||||
Датчик расстояния. Ультразвуковой датчик в виде глаз, способный обнаруживать препятствие перед собой и измерять расстояние до него. Также датчик имеет светодиодные элементы, которые тоже можно программировать. Видит объекты на расстоянии от 1 до 200 см.
|
|
||||
Работа с программным обеспечением Lego SPIKE Prime начинается с ознакомительной страницы. Главная страница русифицирована.
|
|
Попав на главную страницу можно получить доступ ко всем материалам, проектам, инструкциям по сборке, справочной информации и настройкам. Для того, чтобы перейти на нее необходимо нажать на вкладку «Главная страница», которая находится в верхней части экрана. (Рисунок) |
Во вкладке «Мои проекты» хранятся все созданные для робота проекты, а во вкладке «Модели» - пошаговые инструкции, которые помогут при сборке моделей. Готовые планы уроков для программирования на Scratch можно найти перейдя во вкладку «Курсы».
Приступая непосредственно к созданию проекта, Spike PRIME предложит два варианта написания кода – стандартный блочный язык программирования на Scratch или более сложный текстовый Python. Он так же интегрирован в программное обеспечение Spike PRIME и не требует дополнительных настроек и установок.
Создаем проект на Python и переходим к его созданию.
|
|
Для того, чтобы начать работу с программированием Хаба, необходимо подключить его к компьютеру через Bluetooth или USB-кабель. Сделать это достаточно несложно, в программном обеспечении Spike PRIME приводится подробная инструкция для этого.
Сам рабочее окно выглядит следующим образом (рисунок).
Рабочее окно содержит редактор, в котором пишется код для робота. В правой части во вкладке «База знаний» располагаются подсказки, которые помогают нам в его написании.
В правом нижнем углу расположена кнопка для загрузки, запуска и остановки кода.
В левом верхнем - кнопка для подключения Хаба и дальнейшей работы с ним, а именно: проверки уровня заряда батареи, , просмотр подключенных моторов и датчиков, получение значений от мотора, датчиков и гироскопа в реальном времени. (рисунок)
|
В нижней части окна располагается консоль, которая позволяет выводить на экран данные и информирует об ошибках, которые возникают при работе с кодом.
|
В данной работе предлагается разработка ряда уроков, тематического планирования и методических материалов, направленных на освоение основ программирования и алгоритмизации. При их разработке была поставлена цель - спроектировать уроки таким образом, чтобы учащиеся увидели, что теория их учебной программы становится практикой прямо перед ними.
Следовательно, нам необходим тщательно разработанный план, иначе понимание ниши может легко сокрушить ученика, который еще не готов.
При проектировании уроков необходимо четко понимать, чему обучающиеся должны обучиться в ходе учебного процесса. Для этого обратимся к требованиям федеральных государственных стандартов и определим пути их достижения.
Планируемые результаты в ходе изучения основ алгоритмизации и программирования согласно стандартам ФГОС
Аспекты |
Требование ФГОС |
Каким образом будет достигнуто |
Личностные
|
1. Формирование целостного мировоззрения, соответствующего современному уровню развития науки и общественной практики.[6] |
Благодаря любому предмету в школе у учащихся формируется мировоззрение о том, как устроен мир. На уроках информатики учащимся предоставляется возможность сформировать знания об информационном |
|
|
мире. |
2. Формирование коммуникативной компетентности в общении и сотрудничестве со сверстниками и взрослыми в процессе образовательной, общественно-полезной, учебно-исследовательской, творческой деятельности.[6] |
На разработанных уроках предполагается командное обучение и проектная деятельность. Так как совместная работа при решении той или иной задачи позволяет учащимся, обмениваясь взглядами, которые часто могут не совпадать, учиться взаимодействовать друг с другом. В ходе проектной деятельности ученики учатся взаимодействовать не только с одноклассниками, но еще и с учителем, также проектная деятельность развивает коммуникативные навыки, которые требуются на заключительном этапе защиты своих проектов. |
|
Метапредметные
|
1. Умение самостоятельно планировать пути достижения цели, в том числе альтернативные, осознанно выбирать наиболее эффективные способы решения учебных и познавательных задач.[6] |
При создании алгоритма для робота ученики выстраивают ход действий для достижения своей цели, учатся находить оптимальный алгоритм. Используя те ограниченные функциональные возможности, которые им даны, переводят его на язык исполнителя с помощью команд языка программирования. |
2. Умение оценивать правильность выполнения учебной задачи, собственные возможности ее решения.[6] |
После написания команд возникает необходимость проверки правильности написания кода для робота, происходит процесс отладки программы – обнаружение и устранение ошибки. |
|
Предметные
|
1. Формирование информационной и алгоритмической культуры; формирование представления о компьютере как универсальном устройстве обработки информации; развитие основных навыков и умений использования компьютерных устройств.[6] |
|
2. Формирование представления об основных изучаемых понятиях: информация, алгоритм, модель — и их свойствах.[6] |
||
3. Развитие алгоритмического мышления, необходимого для профессиональной деятельности в современном обществе; развитие умений составить и записать алгоритм для конкретного исполнителя; формирование знаний об алгоритмических конструкциях, логических значениях и операциях; знакомство с одним из языков программирования и основными алгоритмическими структурами — линейной, условной и циклической.[6] |
Примерное тематическое планирование и перечень планируемых результатов.
Темы |
Содержание уроков |
Планируемые предметные результаты |
Кол-во ч |
Алгоритмы и исполнители. Робот. Робототехника. |
Что такое алгоритм, для чего он нужен, представления учеников об алгоритме и его исполнителе. Рассмотрение примеров алгоритмов из обыденной жизни. Изучить свойства алгоритма. Робот как исполнитель алгоритма, автоматизация действий человека с помощью исполнителя - робота. Создание алгоритма для конкретного исполнителя. |
Изучат: - что такое алгоритм, исполнитель, программа, робот, робототехника; Научатся: - понимать разницу между употреблением терминов. |
1 ч. |
Способы записи алгоритмов. |
Как можно записывать алгоритмы: словесно, графически с помощью блок-схем, на языках программирования в виде кода, псевдокод. Рассмотрение примеров на каждый из способов, их сравнение и выявление их недостатков. |
Изучат: - разные способы записи алгоритмов; Как можно записывать алгоритмы: словесно, графически с помощью блок-схем, на языках программирования в виде кода. |
2 ч |
Основные алгоритмические конструкции. Линейный алгоритм. |
3 вида алгоритмических конструкций: следование, ветвление, повторение. Что такое линейный алгоритм, примеры линейного алгоритма в жизни. |
Изучат: - сущность понятий: «следование», «линейный алгоритм» - конструкцию следования Научатся: - писать простые линейные алгоритмы в словесной форме |
2 ч |
Основные алгоритмические конструкции. Разветвляющиеся алгоритмы. |
Ветвление в полной форме и в неполной. |
Изучат: - конструкцию ветвления - сущность понятий: «разветвляющийся алгоритм», «простые условия», «составные условия». Научатся: - писать простые разветвляющие алгоритмы в словесной форме |
2 ч |
Основные алгоритмические конструкции. Циклический алгоритм. |
|
Изучат: - конструкцию цикл -сущность понятия: «цикл», «тело цикла», «повторение» Научатся: - писать простые циклические алгоритмы в словесной форме |
2 ч |
Урок-рефлексия по алгоритмам. |
Создание интеллект-карты по подразделу. |
|
2 ч |
Ознакомительное занятие. Сборка робота. Техника безопасностии |
Для чего нужно программирование. Связь программирования с робототехникой. Ознакомление с конструктором Lego Spike PRIME и его составляющими. Инструктаж. Сборка тренировочного робота. |
Узнают: - правила использования набора и технику безопасности, познакомятся с образовательным набором. Научатся: - собирать модель конструктора Lego. |
2 ч |
Моя первая программа.
|
Написание первой программы. Инициализация необходимой электроники. Функция вывода print. |
Научатся: - работать с программным обеспечением Lego SPIKE Prime, создавать новые проекты; - инициализировать необходимую для работы электронику; - считывать и создавать переменные. Узнают: - как работает функция вывода print. |
2 ч |
Ввод и вывод данных. Типы данных. |
|
Узнают: - о различных типах переменных; - как считывать и создавать переменные. Научатся: - работать с различными типами данных (число, строка, список); - совершать различные арифметические операции с числами. |
2 ч |
Типы ошибок при написании кода. Отладка и комментирование кода.
|
Занятие направлено на изучение типа ошибок при написании кода, на отработку умения находить и различать данные ошибки, а также способов их устранения. Комментирование как один из способов устранения ошибки. |
Узнают: - важность отладки; - некоторые методы для отладки кода; - важность комментирования кода; - как делать полезные комментарии; - какие существуют типы ошибок кода Научатся: - находить, различать и устранять ошибки в коде; - комментировать код; |
2 ч |
Создание линейных алгоритмов для исполнителя. Движение робота. |
Что такое линейный алгоритм. Урок направлен на отработку умения создавать линейный алгоритм, псевдокод на язык программирования Python для исполнения его роботом. Мелодия как пример линейного алгоритма, создание собственной мелодии. В ходе уроков учащиеся познакомятся с тем, как настраивать робота для движения, научатся совершать проезд вперед и сигналить. |
Научатся: - писать код с использованием линейного алгоритма, настраивать движение робота; совершать проезд прямо. - узнают, как использовать датчик расстояния, цвета, функцию ожидания. - выделять основные этапы решения задачи; |
2 ч |
Создание разветвляющих алгоритмов для исполнителя. |
Уроки направлены на отработку умения создавать условия для выполнения команд роботом. |
Научатся: - писать код с использованием ветвления для робота на языке программирования;
|
3 ч |
Создание циклических алгоритмов для исполнителя. |
Уроки направлены на отработку умения создавать циклических алгоритмов для выполнения команд роботом. |
Научатся: - писать код с использованием циклов для робота на языке программирования; - пользоваться операторами цикла (for, while) - переносить псевдокод на язык программирования. |
3 ч |
Уроки обобщения и систематизации знаний. |
Уроки направлены на отработку пройденного материала посредством решения практикоориентированных задач. |
Научатся: - обобщать и систематизировать знания. |
3 ч. |
Урок контроля знаний. Проекты. |
Работа над индивидуальными проектами учащихся. |
Научатся: - обобщать и систематизировать знания. |
4 ч |
|
|
|
34 ч |
В данной работе предлагается разработка ряда уроков, направленных на освоение основ программирования и алгоритмизации. При их разработке была поставлена цель - спроектировать уроки таким образом, чтобы учащиеся увидели, что теория их учебной программы становится практикой прямо перед ними.
Следовательно, нам необходим тщательно разработанный план, иначе понимание ниши может легко сокрушить ученика, который еще не готов.
Каждый урок делится на 2 части, теоретическая и практическая.
В первой части каждого урока учитель с помощью мультимедийной презентации знакомит учащихся с новыми структурами программирования исходя из возможностей среды программирования MicroPython. После получения знаний непосредственно по программированию обучающиеся изучают готовые программы для робота и модифицируют их параметры.
Изучая эти готовые программы, обучающиеся получают возможность точно определить важные аспекты, познакомиться с конкретными синтаксическими особенностями; и прояснить моменты, которые трудно понять. Кроме того, прежде чем обучающиеся приступят к разработке собственных программ, они должны изучить готовые программы и дать письменное описание результатов программы поведения робота.
Во второй части каждого урока выполняются упражнения – программы для управления поведением робота. Для каждого урока выдаются: два план урока, презентация урока на проекторе (использование программной презентации) и рабочий лист.
По завершении презентации и приведенных примеров проводится вопрос-проверка ученикам раздается лист, на который они отвечают индивидуально, что позволяет учителю контролировать полученные ими знания. Во второй части каждого
урока раздается рабочий лист, содержащий упражнения по программированию поведения
робота. В этой части обучающиеся разбиваются на пары и пытаются решить поставленные задачи. В рамках этой деятельности обучающиеся имеют возможность проявить инициативу в проектировании, конструировании и совершенствовании поведения автономного робота. Учитель наблюдает за работой учеников, вмешивается, когда это считается необходимым, предлагает помощь и руководство в их усилиях.
Упражнения на рабочих листах относятся к разработке программ, управляющих движением робота итд.
При обучении мы будем концентрироваться на программировании, а не на конструировании, поэтому будет целесообразно сконструировать одного тренировочного робота (Рисунок 1-3), оснащенного всем необходимым для функционирования, на весь раздел обучения.
Для этого нами был сконструированный подобный робот-помощник, и создана инструкция (Приложение 1), которая поможет при его сборке. Построение робота выполняется на самом первом уроке с помощью инструкции в pdf-формате, и используется во всех последующих уроках.
3. Технологические карты уроков
Технологическая карта урока «Знакомство с программированием. Код»
Цель занятия: научиться создавать псевдокод для дальнейшей реализации на языке Python.
|
Деятельность учителя |
Деятельность учащихся |
||
1.Организационный этап |
Приветствие. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
||
2. Актуализация знаний |
На занятиях по изучению алгоритмизации мы с вами говорили, что прежде чем написать программу для робота с целью выполнения какой-либо задачи необходимо выстроить алгоритм для её выполнения. Давайте вспомним, что такое алгоритм. Как мы можем записывать алгоритм? Какие формы представления вы знаете? Мы с вами пробовали оформлять алгоритм всеми этими способами. Но существует еще одна распространенная форма записи алгоритма, о которой мы еще не говорили. |
Вспоминают пройденное. |
||
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Как вы думаете, чем мы будем сегодня заниматься? Что нового изучим? |
- Изучим, что такое псевдокод. Будем учиться оформлять алгоритм в виде псевдокода. |
||
4. Первичное усвоение новых знаний |
Для выполнения требуемых людьми задач роботам необходимы определенные инструкции. Это перечень шагов, которые программист использует, чтобы написать код. Псевдокод излагается не на каком-то конкретном языке программирования, а словесно, иногда его часть может быть написана на английском, а часть в виде кода. Псевдокод должен быть изложен подробно, для того, чтобы можно было донести его до других с целью создания ими кода. Отличный способ изучить важность хорошего псевдокода состоит в том, чтобы попробовать команды для записи чего-то простого, например, как сделать бутерброд, как украсить пирог, как посадить семена и т.д. Создание хороших инструкций важно. Чем более подробная Ваша инструкция, тем лучше будет результат. Насколько хорошо Вы предоставляет инструкции для робота? Потренируемся созданию инструкций.
Задание. Выберите ученика, чтобы тот исполнял роль робота. Сделайте так, чтобы он продвигался по классу с препятствиями только с помощью инструкций от одноклассников. Выполнив данное задание, что вы можете для себя отметить?
Есть ли такое занятие, которое вам сложно или не хочется делать? Вообразите себе помощника, который делал бы какую-то работу за вас. Я бы хотела для себя помощника, который будет делать за меня бутерброды по утрам. Вот мой псевдокод для него:
|
Выбирают одного ученика и выполняют задание. После выполнения делают вывод относительно того, на что нужно обратить внимание при объявлении команд для исполнителя. Приходят к выводу, что исполнителю необходимо давать четкие и подробные инструкции для того, чтобы он лучше понимал то, что от него хотят.
|
||
5.Первичная проверка понимания |
Теперь попробуйте самостоятельно. Задание. Придумайте и напишите на листочках каким образом помощник должен это выполнять, в виде отдельных пунктов. Ниже вы найдете инструкцию, которая поможет при написании псевдокода. Исходя из получившихся ответов, учитель понимает то, понимают ли ученики, как нужно задавать алгоритм и писать псевдокод. Теперь давайте попробуем создать для себя памятку, которая будет помогать нам при написании псевдокода.
Как написать псевдокод для робота? 1. Какая цель программы? Что должен сделать робот? 2. Думайте о том, как робот достигнет этой цели. Каковы основные шаги? 3. Запишите каждый шаг, который сделает робот. Начните с шага 1 и далее. 4. Убедитесь, что Вы также записали, если робот должен повторить задачу. 5. Робот продолжает выполнять задачу всегда или до конца? |
Работают самостоятельно. Задания выполняют на листках и зачитывают.
Предлагают свои варианты, приходят вместе с учителем к тому, как должна выглядеть памятка.
|
||
6.Первичное закрепление |
Теперь приступим к созданию псевдокода непосредственно для робота. Пользуясь памяткой напишите псевдокод для выполнения следующей задачи. Задача. Робот должен двигаться вокруг квадратной коробки. Длина коробки 20 см. Напишите псевдокод для этой программы.
Псевдокод Решение: Шаг 1: Двигайтесь на 20 сантиметров. Шаг 2: Поверните налево на 90 градусов. Шаг 3: Повторите шаги 1 и 2 четыре раза. |
Решают задачу самостоятельно и проверяют правильность написания псевдокода. |
||
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Научиться создавать псевдокод.
Проводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться создавать проекты в ПО Lego SPIKE Prime.
|
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
Кто мне скажет, чем мы занимались на предыдущем уроке? Что нового научились делать? Для чего нужен псевдокод?
|
Изучили, что такое псевдокод и для чего он нужен. Псевдокод нужен для того, чтобы по нему писать программы. |
3. Постановка проблемы, цели и задач урока. |
Верно, мы псевдокод нужен для того, чтоб с помощью него писать проблемы. Псевдокод писать мы научились, как вы думаете, какова наша следующая цель? Верно, сегодня мы с вами создадим первую программу. Слушайте внимательно и повторяйте действия за мной. |
Будем учиться создавать программы. |
4. Первичное усвоение новых знаний |
Откроем ПО и создадим новый проект. Всякий раз при создании нового проекта в редакторе вы будете обнаруживать код, который даётся по умолчанию:
from spike import PrimeHub, LightMatrix, Button, StatusLight, ForceSensor, MotionSensor, Speaker, ColorSensor, App, DistanceSensor, Motor, MotorPair from spike.control import wait_for_seconds, wait_until, Timer from math import *
hub = PrimeHub()
hub.light_matrix.show_image('HAPPY')
Этот код необходимо использовать при создании каждого своего проекта, без него программирование робота не представляется возможным. Так как для использования необходимых датчиков, Хаба и моторов необходимо импортировать библиотеки функций, предназначенные для использования необходимых датчиков, Хаба и моторов. Как мы видим, располагаются они в начале файла и подключаются один раз. В данном случае импортируются все возможные варианты библиотек: Приложение, Программируемый Хаб, Световая матрица, Кнопки, Динамик, Индикатор состояния модуля, Датчик перемещения, Датчик расстояния, Датчик цвета, Датчик силы, Мотор, Моторная пара, Операторы. К разбору основной части кода вернемся чуть позже. Традиционно первой программой, которая создается при изучении любого языка программирования, является выведение на экран следующего приветственного сообщения. print('Hello, World!') В Python функция print() используется для вывода данных, которые содержатся внутри круглых скобок. Это может быть как строка символов, заключенная в двойные или одинарные кавычки, так и переменные. Данную выше фразу мы можем вывести и другим способом. Для этого нам понадобится переменная. Дадим нашей фразе название “phrase” воспользуемся знаком равенства. Теперь для того, чтобы вывести на экран данную фразу, достаточно вызвать её по названию. phrase = "Hello, World!" print(phrase) В Python переменная - это имя, которое относится к данным, то есть используя его можно ссылаться на сохраненное значение. В отличие от других языков программирования, где переменная является именем того места, где хранятся эти данные. Данные, которые должны храниться в переменной, объявляются с помощью оператора присваивания =. Теперь с данным знаком мы будем сталкиваться и на уроках информатики. Например, чтобы сохранять считываемую с датчика цвета информацию в переменную, назовём её сolor, необходимо написать следующий код: color = paper_scanner.get_color() Затем мы сможем ссылаться на считанное нами значение, пользуясь именем переменной, в которой оно хранится и, например, отобразить его с помощью команды print. print('Detected:', color) По мере выполнения кода эта переменная может принимать другие значения, то есть меняться, отсюда и термин «переменная». При написании кода все переменные, к которым мы в последующем обращаемся, должны быть определены, то есть в начале кода им необходимо присвоить какое-либо значение. В противном случае, код не сработает и произойдет ошибка.
|
Наблюдают за действием учителя и повторяют за ним.
Наблюдают за действием учителя и повторяют за ним.
|
5.Первичная проверка понимания |
Задание. Теперь вернемся в основную часть кода, который дан нам по умолчанию. Опираясь на изученное, попробуйте объяснить, что означает данный код. Запустите данный готовый код и проверьте правильность своих суждений. from spike import PrimeHub hub = PrimeHub() hub.light_matrix.show_image('HAPPY') print (“Я счастлив!”) |
Используя полученные знания пытаются выполнить задание.
|
6.Первичное закрепление |
Теперь попробуйте поменять изображения, поменяв слово ‘HAPPY’ на любое другое из коллекции, которая нам предлагается. Используя знания английского языка, выберете желаемое изображение. ANGRY, ARROW_E, ARROW_N, ARROW_NE, ARROW_NW, ARROW_S, ARROW_SE, ARROW_SW, ARROW_W, ASLEEP, BUTTERFLY, CHESSBOARD, CLOCK1, CLOCK10, CLOCK11, CLOCK12, CLOCK2, CLOCK3, CLOCK4, CLOCK5, CLOCK6, CLOCK7, CLOCK8, CLOCK9, CONFUSED, COW, DIAMOND, DIAMOND_SMALL, DUCK, FABULOUS, GHOST, GIRAFFE, GO_RIGHT, GO_LEFT, GO_IP, GO_DOWN, HAPPY, HEART, HEART_SMALL, HOUSE, MEH, MUSIC_CROTCHET, MUSIC_QUAVER, MUSIC_QUAVERS, NO, PACMAN, PITCHFORK, RABBIT, ROLLERSKATE, SAD, SILLY, SKULL, SMILE, SNAKE, SQUARE, SQUARE_SMALL, STICKFIGURE, SURPRISED, SWORD, TARGET, TORTOISE, TRIANGLE, TRIANGLE_LEFT, TSHIRT, UMBRELLA, XMAS, YES Фразу поменяйте на свою собственную, которая подходила бы к рисунку. |
Решают задачу самостоятельно и проверяют правильность написания кода, запускают измененный код. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Теперь мы знаем, что выводить данные можно не только на консоль, но и на световую матрицу. Как вы уже могли заметить, на нашем Хабе имеется еще и динамик, а это значит, что мы можем выводить еще и звуковую информацию, но этому мы будем учиться на следующем уроке.
Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться работать с разными типами данных.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
Кто мне скажет, чем мы занимались на предыдущем уроке? Что нового научились делать? На прошлом занятии мы начали работать с командами вывода данных и познакомились с тем, что такое переменная. |
Вспоминают пройденный материал. |
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Давайте вспомним, что такое переменная. Переменная – это место, в котором хранятся какие-то данные. Так что за данные там могут храниться? Как вы думаете? Давайте рассуждать вместе. Что такое данные? Это какие-то сведения. Например, меня зовут Маша. Это сведение о том, как меня зовут. В каком формате мы записываем это информацию? В словесной форме. Если у вас спросят, сколько вам лет? Какие данные вы назовете? Количество лет? В какой форме? Вы назовете число. Если вас спросят, из кого состоит ваша семья? Как вы ответите? Начнете перечислять членов своей семьи, и получится список. При программировании мы столкнемся с тем, что нам будет необходимо работать с разными типами значений, такими как: числа, строки и списки. Значит что мы сегодня будем изучать? |
Путем наводящих вопросов приходят к изучению новой темы. |
4. Первичное усвоение новых знаний |
Начнем с чисел. Даны 3 переменные, вывести на экран их сумму. a=1, b=2, с=2 print(a+b+с) То же самое может обозначаться следующим образом: a, b, с = = 1, 2, 3 То есть мы можем присваивать несколько переменных с разными значениями одновременно с помощью лишь одного оператора с использованием запятых. В том случае, если значение переменных одинаковое, то присвоить значение можно с помощью последовательности присваиваний. a = b = c = 1 Заметьте, в команде принт мы использовали плюс. Это значит, что так же, как и в математике, в программировании мы можем проводить над числами различные операции. + сложение - вычитание * умножение / деление % остаток от деления ** возведение в степень // целая часть от деления Но необходимо быть осторожными при работе с данными операндами. Давайте проверим почему. Проверьте выполнение данной операции: a = b*c - d % e / f Желаемый порядок, в котором должны выполняться операции, неясен, но может уточнить, добавив круглые скобки, например: a = ( b * c ) - ( ( d % e ) / f ) В отличие от обычных переменных, которые могут хранить только один элемент данных. «Список» - это переменная, которая может хранить несколько элементов данных. Данные хранятся последовательно в «элементах» списка, пронумерованных с нуля. Итак первое значение сохраняется в нулевом элементе, второе значение сохраняется в первом элементе, и так далее.Список создается так же, как и любая другая переменная, но инициализируется путем присвоения значения в виде списка, разделенного запятыми, в квадратных скобках. Например, создадим список четных чисел: четные = [2, 4,6,8,10, 12] На отдельный элемент списка можно ссылаться, используя имя списка, за которым следует квадратные скобки, содержащие порядковый номер этого элемента. Например, Выведите 3 элемент списка odd. Для этого необходимо выполнить следующую команду. Print(odd[2]). Как было сказано ранее, первое значение хранится в нулевом элементе списка, именно поэтому мы вызываем порядковый номер 3 элемента, который равен 2м. Элементами списка также могут являться не только числа, но и строки. Например, перечислим в списке winter все зимние месяцы. Зима = [‘Декабрь’, ‘Январь’, ‘Февраль’] |
Наблюдают за действием учителя и повторяют за ним.
Наблюдают за действием учителя и повторяют за ним.
|
5.Первичная проверка понимания |
Задание. Выведем на экран первый месяц списка зима. Print(“Первый месяц”, зима[0]) Выведите поочередно остальные месяцы. |
Используя полученные знания пытаются выполнить задание. |
6.Первичное закрепление |
Задача. Задайте переменную name, в которой будет храниться строковое данное – ваше имя. Переменную age, в которой будет храниться число, равное вашему возрасту. И список имен членов вашей семьи. Пример того, что должно выводиться на экран после выполнения кода: Меня зовут ______. Мне __ лет. У меня есть семья. Мою маму зовут ____. Моего папу зовут _____. Мою собаку зовут _____. Далее работа с рабочим листом. |
Решают задачу самостоятельно и проверяют правильность написания кода, запускают собственный код. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Теперь мы с вами научились работать с тремя типами данных. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться создавать линейный алгоритм для робота на языке Python.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
Как мы уже знаем, алгоритм – это последовательность команд, осуществляемые исполнителем для выполнения какой-либо задачи, соответственно алгоритмы используются в нашей повседневной жизни повсеместно.
|
Вспоминают пройденный материал.
|
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Мы с вами уже умеем записывать алгоритмы разными способами. И составляли мы алгоритмы такие, чтоб они были понятны нам с вами, людям. А кто еще может быть исполнителем алгоритма? А как составить алгоритм, чтобы его понял робот? Мы с вами умеем это делать? Нет. Значит нужно научиться? Какова цель нашего сегодняшнего занятия? Правильно, научится создавать линейный алгоритм на языке робота, то есть на языке программирования. |
Путем наводящих вопросов приходят к изучению новой темы. |
4. Первичное усвоение новых знаний |
Изучение линейного алгоритма предлагается начать с создания мелодии, который будет исполнять наш робот при помощи звуковых сигналов. Как вы думаете, является ли мелодия примером линейного алгоритма? Почему да? Почему нет? Здесь мелодия – это последовательное воспроизведение нот, что тоже является примером линейного алгоритма. Для этого нам будут необходимы следующие команды: hub.speaker.start_beep() – команда для воспроизведения ноты, которая будет работать до тех пор, пока не будет вызван метод hub.speaker.stop(). Но мы также можем указать ту продолжительность воспроизведения, которая необходима, добавив в скобках количество секунд. Например, hub.speaker.start_beep(note = 60, seconds = 2) Здесь note = 60 – это номер ноты MIDI, seconds = 2 – продолжительность воспроизведения в секундах hub.speaker.set_volume(volume) – команда для регулирования громкости. Volume принимает значения от 0 до 100. hub.speaker.get_volume() – команда для считывания значения громкости. Установим громкость в 50% и заставим робота сигналить продолжительностью в 0.5 секунд. Решение: from spike import PrimeHub, Speaker hub = PrimeHub() hub.speaker.set_volume(75) hub.speaker.beep(60, 0.5) А теперь установим громкость в 75% и заставим робота сигналить всё то время, пока робот проезжает 15 см прямо. Сигналить мы уже умеем, но двигаться еще нет. Значит необходимо научить нашего робота двигаться. А перед этим ответим на пару вопросов, которые помогут нам при открытии новых знаний. - Что позволяет нашему роботу двигаться? (Колеса) - Что приводит в движение колеса? (Моторы) - Что в первую очередь необходимо сделать при написании программы для робота? (Импортировать необходимые библиотеки) - Как вы думаете, какие библиотеки нам для понадобятся? Мы подключим новую библиотеку, которая позволяет нам работать с парой моторов. Попробуйте найти в списке необходимую библиотеку. (from spike import MotorPair) Прежде чем задавать команду движения, необходимо дать роботу определенные настройки, для этого необходимо понять: - к каким портам подключены двигатели; - какого размера колесо; - с какой скоростью будет двигаться робот; - каким образом он будет совершать торможение.
Эта информация должна быть в каждой программе, которую вы пишете. I. Инициализируем два мотора с помошью задания переменной «motor_pair». Здесь А – порт левого мотора, В – правого. motor_pair = MotorPair('A', 'B')
II. Определим расстояние, на которое нам нужно переместиться. Задача. Необходимо учесть какое расстояние проходит робот за один оборот колеса. Как вычислить то, на сколько сантиметров перемещается робот за один оборот колеса. Подумайте, как это сделать? Какой геометрической фигурой является колесо? Решение. Нужно найти длину окружности по формуле:
где d – диаметр окружности. Измеряем колеса SPIKE Prime = диаметр 5.6 см 5.6 см × π = поворот за 17.5 см Устанавливаем поворот мотора = 17, 5 см motor_pair.set_motor_rotation(17.5, 'cm')
III. Определим то, каким образом робот будет совершать торможение.
Если задано brake (торможение), моторы быстро остановятся с сохранением возможности свободного вращения. motor_pair.set_stop_action('brake') Если задано hold (удерживание), моторы будут активно удерживать своё текущее положение, их нельзя будет повернуть вручную. motor_pair.set_stop_action('hold') Если задано coast (движение по инерции), моторы будут медленно останавливаться, их можно будет повернуть вручную.
motor_pair.set_stop_action('coast') IV. Зададим любое значение скорости от -100 до 100. Например, 60. motor_pair.set_default_speed(60) Если значение скорости не будет задано в функции движения, функция будет использовать скорость по умолчанию. V. Теперь воспользуемся командой для перемещения робота. Например, командой для запуска двух моторов одновременно. motor_pair.move(amount, unit='cm', steering=0, speed=None) unit='cm', steering=0 и speed=None, значения по умолчанию если они не установлены. Когда speed=None, используется значение скорости по умолчанию установленное в set_default_speed(). |
Отвечают на вопросы учителя. Беседуют с учителем, Наблюдают за действием учителя и повторяют за ним.
Решают задачи вместе с учителем.
Отвечают на наводящие вопросы учителя, пытаются прийти к знаниям самостоятельно.
Пытаются решить задачу, используя знания из области математики. |
5.Первичная проверка понимания |
Вернемся к задаче и решим её, используя всё то, что изучили сегодня уроке.Установим громкость в 75% и заставим робота сигналить всё то время, пока робот проезжает 15 см прямо. Решение. from spike import PrimeHub, Speaker hub = PrimeHub() motor_pair = MotorPair('A', 'E') hub.speaker.start_beep(note=60) motor_pair.set_stop_action('brake') motor_pair.set_motor_rotation(17.5, 'cm') motor_pair.move(15, 'cm',speed = 70) hub.speaker.stop()
|
Используя полученные знания пытаются выполнить задание.
|
6.Первичное закрепление |
Работа с рабочим листом. |
Самостоятельно работают в группах, решают задачи с рабочего листа. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться создавать линейный алгоритм для робота на языке Python.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
На прошлом занятии мы вспомнили, что такое линейный алгоритм, используя данную конструкцию, научили нашего робота сигналить и ехать вперёд. Сегодня мы научим его ездить не только вперед, но и назад, а также совершать поворот. Но перед этим вспомним как настраивать робота и совершать проезд прямо. Для этого решим задачу. ¢ Вы хотите найти проход. Используйте датчик расстояния, чтобы найти его. ¢ Запрограммируем робота, чтобы он двигался прямо, пока он не окажется на расстоянии ближе 20 см от стены. Используйте функцию wait_for_distance_closer_than(). Перед решением познакомимся с датчиком движения. Датчик позволяет измерять расстояние до объекта или поверхности с помощью ультразвуковой технологии. У датчика есть четыре светодиодных элемента, расположенных вокруг «глаз» датчика которые можно включать по отдельности. distance = DistanceSensor('C') ¢ Датчик расстояния может измерять расстояние до объекта или поверхности с помощью ультразвука. ¢ Вы также можете запрограммировать светодиодные элементы, расположенных вокруг «глаз» датчика. ¢ Единицами измерения могут быть проценты, сантиметры или дюймы.
distance.wait_for_distance_closer_than(20, unit='cm', short_range=False) distnace.get_distance_cm(short_range=False) Теперь напишем псевдокод к нашей задаче. Псевдокод: ¢ Установим движение моторов для робота (A и E для роботов Droid Bot IV и ППП) ¢ Установим действие при остановке. ¢ Установим % скорости для робота. ¢ Инициализируем датчик расстояния. ¢ Начнем двигаться прямо. ¢ Используем функцию wait_for_distance_closer_than() чтобы определить, когда расстояние до стены будет меньше 20 см. ¢ Остановим движение. Решение: motor_pair = MotorPair('A', 'E') motor_pair.set_stop_action('brake') motor_pair.set_default_speed(30) distance = DistanceSensor('C') motor_pair.start() distance.wait_for_distance_closer_than(20, 'cm') motor_pair.stop()
Также успели познакомиться с командой для перемещения робота: move(amount, unit='cm', steering=0, speed=None) |
Вспоминают пройденный материал. Вспоминают типы алгоритмических конструкций, приводят примеры из жизни. |
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Мы продолжим изучать линейные алгоритмы, и продолжим изучать команды для движения робота. Куда еще может двигаться наш робот, кроме как вперед? Верно, назад. А еще? Поворачивать влево и вправо, верно.
|
Путем наводящих вопросов приходят к изучению новой темы. |
4. Первичное усвоение новых знаний |
Но необходимо помнить, что для того, чтобы использовать команды движения, необходимо сначала задать определенные настройки: установить скорость, способ торможения, порты моторов, размер колес. Изучим новые команды для движения робота. move_tank(amount, unit='cm', left_speed=None, right_speed=None) Необходимо заметить, что команда move_tank схожа с предыдущей, но отличается тем, что в данном случае скорость задаётся для каждого мотора отдельно. На прошлом занятии говорилось, что скорость, направление или мощность мотора могут быть отрицательными. Это заставит робота двигаться назад.
Есть еще и другие команды, предназначенные для движения. 1) Команды, предназначенная для начала движения с определенным направлением и скоростью, но без задания расстояния или продолжительности проезда. start(steering=0, speed=None) start_tank(left_speed, right_speed) Мотор продолжит работать, пока не будет остановлен или управляться другой функцией. 2) Для остановки моторов будем пользоваться командой stop() 3) Команды с заданием мощности мотора. start_at_power(power, steering=0) start_tank_at_power(left_power, right_power) Теперь будем учить нашего робота поворачивать. Изучим различные способы вращения и поворотов. Один из способов поворота – с помощью гироскопа. Задание. Запустите код и используйте панель управления, чтобы увидеть, действительно ли при повороте на 90 градусов робот поворачивает на 90 градусов. motor_pair = MotorPair('A', 'E') motor_pair.set_stop_action('brake') motor_pair.start_tank(50, 0) hub.motion_sensor.reset_yaw_angle() wait_until(hub.motion_sensor.get_yaw_angle, greater_than_or_equal_to, 90) motor_pair.stop() Экспериментальным путем мы выяснили, что робот поворачивает не точно на 90 градусов, а больше. Это значит, что необходимо уменьшить значение угла поворота. Опытным путем подберите значение угла, при котором робот будет поворачивать ровно на 90 градусов. Другой способ – воспользоваться командой move_tank(). Задание. Запустите данную команду move_tank(180, 'degrees', 50, 0) и проверьте, на сколько градусов повернет робот при данных значениях. Исходя из опыта видно, что робот повернул не на 180 градусов, как мы указали. Узнайте на сколько повернул робот и подумайте, почему так произошло? Объяснение. Общее расстояние является средним расстоянием пройденным двумя колесами. В конце движения робота сумма пройденного расстояния двумя колесами, будет двойной пройденной дистанцией. Таким образом, левое колесо повернет на 360 градусов, а правое колесо повернет на 0 градусов. |
Отвечают на вопросы учителя. Беседуют с учителем, Наблюдают за действием учителя и повторяют за ним.
Отвечают на наводящие вопросы учителя, пытаются прийти к знаниям самостоятельно.
Пытаются решить задачу, используя знания из области математики. |
5.Первичная проверка понимания |
Задача. Используя любую из изученных команд, попробуйте заставить робота проехать прямо до стены полигона, остановиться, просигналить две секунды, и вернуться обратно задним ходом. Решение. motor_pair = MotorPair('A', 'B') motor_pair.set_stop_action('coast') motor_pair.set_motor_rotation(17.5, 'cm') motor_pair.set_default_speed(50) motor_pair.move(40, 'cm') hub.speaker.beep(65, 2) motor_pair.move(-40, 'cm')
|
Используя полученные знания пытаются выполнить задание.
|
6.Первичное закрепление |
Работа с рабочим листом. |
Самостоятельно работают в группах, решают задачи с рабочего листа. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться находить ошибке в коде и уметь отлаживать его.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
||||||||
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
||||||||
2. Актуализация знаний |
На прошлом занятии мы изучали то, как создавать линейный алгоритм для робота. Посмотрите на код и скажите, является ли он линейным алгоритмом? Если да, то попробуйте его запустить from spike import PrimeHub, Speaker hub = PrimeHub() hub.speaker.start_beep(note=60) hub.light_matrix.write(H) hub.light_matrix.write('i') hub.speaker.start_beep(note=60) |
Вспоминают пройденный материал. Пытаются запустит программу, но сталкиваются с тем, что она не работает. |
||||||||
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Запустили? Работает? Нет? Как вы думаете, почему? Посмотрите внимательно на консоль, что там написано? Консоль является нашим помощником, который выводит на экран еще и информацию об ошибках. Мы с вами еще не умеем устранять ошибки. Значит будем этому учиться. |
Путем наводящих вопросов приходят к изучению новой темы. |
||||||||
4. Первичное усвоение новых знаний |
При программировании на Python могут возникать ошибки. Их необходимо уметь распознавать и отлаживать. Отладка - полезный способ определить, где и что в вашей программе работает неправильно. Как только ваш код становится длинным или сложным становится трудно найти ошибки в программе. Существует три типа ошибок: · Синтаксическая ошибка – возникает, когда интерпретатор сталкивается с кодом, который не соответствуют правилам языка Python. Например, отсутствующая кавычка. Интерпретатор останавливается, сообщает об ошибке и перестает выполнять программу. · Ошибка выполнения – возникает во время выполнения программы, в то время, когда программа запускается. Например, когда имя переменной позже набирается неправильно, поэтому переменная не может быть распознана. Интерпретатор запускает программу, но останавливает при ошибке и сообщает о характере ошибки как «Исключение». · Семантическая (логическая) ошибка – возникает тогда, когда в коде отсутствует логика. В данном случае интерпретатор будет запускать программу и даже её выполнять, но не так, как задумывалось. Например, из выражения a+b*2 при a =1, b =2 хотим получить результат 6, а в итоге получим 5. В данном случае, правильное написание выражения выглядело бы так: (a+b)*2, которое в последующем выдало бы желаемый результат 6. Рассмотрим способы, которые могут помочь при отладке программ.
1) Использование датчиков также может быть одним из способов отладки. Например, при проезде по черной линии. В случае, если робот не едет, необходимо проверить, как он распознает эту линию, действительно ли видит её в черном цвете. 2) Видеозапись работы вашего робота и повторное воспроизведение тоже могут быть полезными в отладке. Замедленное воспроизведение движения поможет Вам диагностировать проблемы. 3) Воспользоваться командой wait_for_seconds(), для того, чтобы проследить выполнение каждого действия по отдельности, поставив между ними задержку в пару секунд. 4) Комментарии - полезный способ отладки. Используйте их, чтобы зафиксировать информацию при написании программы. Комментарии в коде помогают автору помнить чего он пытался достигнуть. Вы можете использовать комментарии для записей целей или псевдокода. Вы можете использовать их чтобы делать заметки. Также важно, что комментарии помогают другому человеку понять суть программы. Выработайте привычку добавления комментариев к Вашему коду. Строки, начинающиеся с «#», считают комментарием. Эта строка кода не выполняется. # Это - комментарий # Комментарии используются, чтобы объяснить как работает код
Примеры того, как могут использоваться комментарии. ¢ Ведите учет комментариев, комментарии не должны повторять содержание блока. # Это программа движения, до тех пор пока один из датчиков цвета не увидит черный цвет ¢ Комментарии могут использоваться, чтобы подводить итог написанного Вами кода / псевдокода. # Псевдокод: Настройка робота, Движение прямо до тех пор пока датчик цвета В не увидит черный цвет ¢ Комментарии могут быть использоваться для записи результатов испытаний. # Примечание: пробовали 25 в предыдущем тесте |
Отвечают на вопросы учителя. Беседуют с учителем, Наблюдают за действием учителя и повторяют за ним.
Отвечают на наводящие вопросы учителя, пытаются прийти к знаниям самостоятельно.
Пытаются решить задачу, используя знания из области математики. |
||||||||
5.Первичная проверка понимания |
Потренируемся. Теперь исправьте ошибки в коде, который мы запускали в начале занятия и запустите его. |
Используя полученные знания пытаются выполнить задание. |
||||||||
6.Первичное закрепление |
Задача. Попробуйте определить тип ошибки в программах, закомментируйте каждую команду и исправьте код, если это возможно. Объясните, почему ошибка является ошибкой того или иного типа.
Работа в парах. Придумайте код с использованием линейного алгоритма, запустите его и проверьте правильность его работы, далее допустите в нем ошибку любого типа и перепишите неправильный код на листок. Обменяйтесь листами с соседней парой учеников и постарайтесь найти ошибку в коде друг-друга. |
Решают задачу самостоятельно и проверяют правильность написания кода, запускают собственный код. |
||||||||
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Перечислите типы ошибок, с которыми мы можем столкнуться при создании программ для нашего робота. Назовите возможные способы их отладки. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться создавать циклические алгоритмы для робота на языке программирования Python.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
На прошлых уроках мы учились писать линейные алгоритмы для робота. Какие еще алгоритмические конструкции вы помните? Алгоритм с повторение (цикл) и разветвляющийся. Что вы можете сказать о циклах? Мы можем использовать циклы, чтобы повторить действие несколько раз или пока не будет выполнено условие. Благодаря циклам задачи, которые требуют многократного или бесконечного повторения, становятся более простыми в написании. Дополнительное преимущество цикла в том, что он может закончиться, когда нам это удобно – то есть мы можем проделывать действие определенное количество раз, повторять всегда, при каком-либо условии и т.д. Есть два типа циклов: цикл for и цикл while. Скажите, в чем их разница?
|
Вспоминают пройденный материал. Вспоминают типы алгоритмических конструкций, приводят примеры из жизни. |
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
Мы с вами уже научились писать циклические алгоритмы в различных формах. А умеем ли мы создавать циклические алгоритмы для робота? Еще нет. Как вы думаете, чем мы будем сегодня заниматься? |
Путем наводящих вопросов приходят к изучению новой темы. |
4. Первичное усвоение новых знаний |
Рассмотрим цикл for, который используется для последовательного повторения. Любая строка в Python представляет собой последовательность символов, поэтому мы можем перебирать их, используя for. Например, numbers = [1, 4, 9, 13] for number in numbers: print(number) Вывод: 1 4 9 13 Если мы хотим чтобы цикл выполнялся определённое число раз, то мы можем использовать функцию с диапазоном(). for x in range(4): print(x) Вывод: 0 1 2 3 Выше диапазон функции начинается с 0.Но мы также можем установить начальное значение. for x in range(2, 4): print(x) Вывод: 2,3 Необходимо обратить внимание на то, что максимальное значение не включается в вывод. Наконец, можно задать шаг, с которым будут выводиться элементы. for x in range(2, 7, 2): print(x) Вывод: 2, 4, 6 Цикл можно использовать и с другими типами данных, например, со списком. Создадим список под названием red и перечислим в нем фрукты красного цвета. red ='cherry','apple','strawberry'
Теперь перечислим все элементы данного списка с помощью цикла. for x in red: print(x)
Вывод: cherry apple strawberry
А теперь рассмотрим цикл while (или цикл с проверкой) Цикл с проверкой условий нужен для того, чтобы повторять действия. Действие будет работать, пока условие будет выполняться, то есть будет являться истинным. Это удобно для повторения действия до определенного значения датчика. Цикл также можно использовать n-ое количество раз. i = 0 while (i < 6): i = i + 1 Здесь, например, цикл будет исполнен 6 раз. В начале указано начальное значение 0, конечное 6, и шаг 1. Точно так же как в цикле for в функции с диапазоном(). Также можно использовать цикл while как бесконечный. Для этого используем while True:
|
Отвечают на вопросы учителя. Беседуют с учителем, Наблюдают за действием учителя и повторяют за ним.
|
5.Первичная проверка понимания |
Теперь проверим то, как вы усвоили знания. Запишите в список овощи зеленого цвета и сделайте так, чтобы объекты списка перечислялись после того, как датчик увидит зеленый объект. Команда ожидания, пока датчик увидит цвет: color_sensor.wait_until_color('color') вместо color укажите нужным вам цвет Пример решения: from spike import ColorSensor color_sensor = ColorSensor('A') green ='cabbage', 'cucumber, 'broccoli' color_sensor.wait_until_color('green') for x in green: print(x) А теперь давайте добавим в нашу программу цикл с проверкой условия. Он понадобится нам при программировании датчика силы нажатия. force.wait_until_pressed() Ждем пока датчик силы не будет нажат while (force.is_pressed()): Выполняем цикл пока датчик нажат
|
Используя полученные знания пытаются выполнить задание. |
6.Первичное закрепление |
Задача. На занятии по псевдокоду мы написали псевдокод для следующей задачи. Робот должен двигаться вокруг квадратной коробки. Длина коробки 20 см. Напишите псевдокод для этой программы. Напишите код, основываясь на псевдокоде. Псевдокод Решение: Шаг 1: Двигайтесь на 20 сантиметров. Шаг 2: Поверните налево на 90 градусов. Шаг 3: Повторите шаги 1 и 2 четыре раза. Решение: from spike import PrimeHub, , MotionSensor, MotorPair from spike.control import wait_until from spike.operator import greater_than_or_equal_to hub = PrimeHub() motor_pair = MotorPair('F', 'A') motor_pair.set_motor_rotation(17.5, 'cm') for x in range(4): motor_pair.move(20, 'cm') motor_pair.start_tank(15,0) hub.motion_sensor.reset_yaw_angle() wait_until(hub.motion_sensor.get_yaw_angle, greater_than_or_equal_to, 90) motor_pair.stop() |
Решают задачу самостоятельно и проверяют правильность написания кода, запускают собственный код. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Перечислите типы ошибок, с которыми мы можем столкнуться при создании программ для нашего робота. Назовите возможные способы их отладки. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Цель занятия: научиться создавать разветвляющий алгоритм для робота на языке программирования Python.
Этап урока |
Деятельность учителя |
Деятельность учащихся |
1.Организационный этап |
Приветствует. Настраивает на учебную деятельность. |
Приветствие учителя. Деление по группам. |
2. Актуализация знаний |
Какой тип алгоритмических конструкций мы с вами еще не научились использоваться для написания программы для робота? |
Вспоминают пройденный материал. Вспоминают типы алгоритмических конструкций, приводят примеры из жизни. |
3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся. |
На этом уроке мы будем учить нашего робота делать выбор, выполнять ему ту или иную команду или нет. Для этого нам понадобятся условные операторы if/else. |
Путем наводящих вопросов приходят к изучению новой темы. |
4. Первичное усвоение новых знаний |
Структуры if/else дают возможность изменять алгоритм выполнения программы. Оператор if проверяет выполнение условия. Если условие является истиной, то есть выполняется, то код, размещенный в структуре if, будет запущен. if условие: #код А если условие не истинно, будет запускаться альтернативное действие, которое размещено в структуре else. if условие выполнения: #код else: #код Также существует оператор elif, который обозначает “else if”. Он необходим в том случае, если мы имеем несколько альтернативных вариантов, учитывая то, что предыдущее не было выполнено. if условие: #код elif условие2: #код elif условие3: #код elif условие4: #код else: #код Замечание. Мы можем использовать несколько операторов if и elif подряд, но только один оператор else. |
Отвечают на вопросы учителя. Беседуют с учителем, Наблюдают за действием учителя и повторяют за ним.
|
5.Первичная проверка понимания |
Задача. Вспомните команды для движения вперед и настройки для движения робота. Теперь добавьте следующую команду, если перед роботом нет препятствия, то робот едет. Для определения препятствия перед собой используйте датчик движения и команду: percentage = distance_sensor.get_distance_percentage() print(percentage) if percentage is not None: Запустите код, далее добавьте оператор else и запрограммируйте данную структуру для остановки робота.
|
Используя полученные знания пытаются выполнить задание.
|
6.Первичное закрепление |
Работа с рабочим листом. |
Самостоятельно работают в группах, решают задачи с рабочего листа. |
7. Рефлексия |
Учитель проходится по рядам и фиксирует выполнение задачи учениками. Перечислите типы ошибок, с которыми мы можем столкнуться при создании программ для нашего робота. Назовите возможные способы их отладки. Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку. |
Подводят итоги своей деятельности на уроке и рефлексию с использованием специальных цветных карточек. |
Рабочий лист по теме линейный алгоритм. |
|
1) Что такое линейный алгоритм? |
|
2) Приведите пример линейного алгоритма. |
|
3) Создайте мелодию из 6 разных нот с одинаковой продолжительностью. |
|
4) Создайте мелодию из 6 разных нот с разной продолжительностью. |
|
5) Создайте мелодию из 4 разных нот с разной продолжительностью и громкостью. |
|
6) Опишите каждую строку кода: from spike import PrimeHub, Speaker from spike.control import wait_for_seconds hub = PrimeHub() motor_pair = MotorPair('A', 'E') motor_pair.set_motor_rotation(17.5, 'cm') motor_pair.move(5, 'cm', speed = 50) hub.light_matrix.show_image('HAPPY') wait_for_seconds(5) hub.speaker.set_volume(50) hub.speaker.beep(65, 2) hub.speaker.set_volume(20) hub.speaker.beep(90, 4) |
|
7) Закодируйте для своего одноклассника слово с помощью звуковых сигналов, используя азбуку Морзе. Примечание: длительность длинного сигнала в 3 раза дольше короткого, длительность паузы между буквами – в 7 раз дольше короткого.
|
|
8) Запрограммируем робота, чтобы он двигался, пока датчик цвета не увидит черный цвет. Будем использовать функцию ожидания. color.wait_until_color('black') Для начала попробуйте написать псевдокод. Основные шаги: Установим движение моторов для робота (A и E ) Установим действие при остановке. Установим % скорости для робота. Инициализируем датчик цвета. Начнем двигаться прямо. Используем функцию wait_until_color() чтобы определить, когда датчик цвета увидит черный цвет. Остановим движение. На предыдущих уроках Мы изучили, как настроить робота. Настройте робота и попробуйте реализовать псевдокод. Решение. motor_pair = MotorPair('A', 'E') motor_pair.set_stop_action('brake’) motor_pair.set_default_speed(30) color = ColorSensor('B') motor_pair.start() color.wait_until_color('black') motor_pair.stop() |
|
Рабочий лист по теме «Разветвляющий алгоритм» |
1)Что произойдет, если к датчику цвета поднести синий объект? from spike import ColorSensor # Инициализация датчика цвета. paper_scanner = ColorSensor('E') # Измерение цвета. color = paper_scanner.get_color() # Вывод названия цвета на консоль print('Detected:', color) # Проверка соответствия конкретному цвету if color == 'red': print(‘Это красный цвет’) else: print("Это не красный цвет") |
2)Найдите ошибки в коде и исправьте ее. Определите тип ошибки. from spike import ForceSensor # Инициализация датчика силы. door_bell = ForceSensor('E') # Проверка нажатия на датчик силы if door_bell.is_pressed() print('Hello!') |
3) На одном из прошлых занятий мы перечисляли элементы из списка красных фруктов. Модифицируйте код и сделайте так, чтобы цикл срабатывал после поднесения красного объекта к датчику движения. |
4)Опишите каждую строчку кода. from spike import PrimeHub, App # Инициализация Хаба и приложения hub = PrimeHub() app = App() while True: orientation = hub.motion_sensor.wait_for_new_orientation() if orientation == 'front': hub.light_matrix.show_image('ASLEEP') app.start_sound('Snoring') elif orientation == 'up': hub.light_matrix.show_image('HAPPY') app.start_sound('Triumph') |
5) Добавьте в предыдущий код еще одно альтернативное действие, когда ориентация хаба будет принимать значение «down» |
6) Задать две переменные. Переменная otvet, которая будет отвечать за правильный ответ, который посчитает компьютер, переменной n задать своё самостоятельно подсчитанное значение. Сравнить переменные, в случае совпадения ответов – вывести на дисплей улыбающийся смайлик, в случае несовпадения – грустный. Решение: otvet = 1+2+3+100 print(otvet) n = 6 if n == otvet: hub.light_matrix.show_image('SMILE', 100) else: hub.light_matrix.show_image('ANGRY', 100) |
7) Лего-Кошка перегородила роботу путь. Научите робота прогонять кошку с помощью сигнала или объезжать ее, если кошка остается на месте. |
Рабочий лист по теме «Циклический алгоритм» |
1) Представьте, что наш робот – гоночный автомобиль. Запрограммируйте его так, чтобы движение начиналось после маха руки (датчик движение), а прекращалось после обнаружения финишной линии черного цвета (датчик цвета). Напишите псевдокод, и реализуйте его. Решение. from spike import DistanceSensor, MotorPair, ColorSensor # Инициализация датчика расстояния, датчика цвета и моторов distance_sensor = DistanceSensor('D') color_sensor = ColorSensor('A') motors = MotorPair('B','C') while True: distance_sensor.wait_for_distance_closer_than(5, 'cm') motor.start() color_sensor.wait_until_color('black') motor.stop(
|
2) Впишите свои команды вместо закомментированных строк. from spike import ForceSensor force_sensor = ForceSensor('A') while True: force_sensor.wait_until_pressed() # сделать что-либо force_sensor.wait_until_released() # сделать что-либо |
3) Придумайте собственную задачу с использованием цикла while. |
4) Используйте цикл для подсчета количества нажатий на датчик силы нажатия. Выведете количество нажатий на экран. |
Рабочий лист по теме «Функция вывода. Типы данных» |
1) Что выведет данный код print(2//3) ? Ответ: 0 |
2) Что выведет данный код print(7//3 + 7//-3)? Ответ: -1 |
3) Что выведет данный код print(0,2*5) ? Ответ: 0 10 |
4) После выполнения данного кода на экран вывелось значение 10. Какое значение нужно присвоить переменной a вместо «?» ? a = ? b = a+3 c = a * b print(c) |
|
Рабочий лист по теме «Циклический алгоритм» |
1)Что нужно подставить вместо «?», чтобы ничего не вывелось на экран? for i in range(?): print(i) |
2) Что выведется на экран? for i in range(3, 6): print(i) |
3) Запрограммируйте объезд треугольника. |
4) Довезите робота до лего-крепости, не используя датчик движения.
|
5) Что выведет данный код? for i in range(5): print(i, end = ‘ ’) Ответ: 0 1 2 3 4 |
Дополнительные задачи
Задача. Представьте, что наш робот – бык. Сделайте так, чтобы с приближением к красному объекту, робот набирал скорость. Вопросы-подсказки: Как определиться с командой для перемещения робота? Нужно ли задавать скорость? Расстояние? |
Задача. Запрограммируйте со своим соседом игру-викторину. Правила игры: каждому из игроков необходимо ответить за одну минуту на представленные вопросы. При каждом правильном ответе необходимо нажимать на кнопку и по истечению времени подсчитать количество верных ответов, и вывести число на световую матрицу. Выигрывает тот, кто набрал больше очков. |
Задача. Запрограммируйте со своим соседом игру-викторину. Правила игры: каждому из игроков необходимо ответить за одну минуту на представленные вопросы. При каждом правильном ответе необходимо нажимать на кнопку и по истечению времени подсчитать количество верных ответов, и вывести число на световую матрицу. Выигрывает тот, кто набрал больше очков. |
Задача. Даны 4 карточки разного цвета: красная, желтая, зеленая, синяя. 1) Если робот видит красную карточку, то вывести на экран слово «помидор», в противном случае – вывести на экран фразу «не красный». 2) Если робот видит красную карточку, вывести на экран слово «помидор», если жёлтую – «лимон», в противном случае – вывести на экран фразу «ни красный, ни желтый» . 3) Если робот видит красную карточку, вывести на экран слово «помидор», если жёлтую – «лимон», если зеленую, то «лайм», в противном случае – вывести на экран фразу «ни красный, ни желтый, ни зеленый». |
Скачано с www.znanio.ru
© ООО «Знанио»
С вами с 2009 года.