Технологические карты уроков по изучению программирования посредством робототехники

  • docx
  • 08.10.2024
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала техкарты.docx

Технологическая карта урока «Знакомство с программированием. Код»

Цель занятия: научиться создавать псевдокод для дальнейшей реализации на языке Python.

 
Этап урока

Деятельность учителя

Деятельность учащихся

1.Организационный этап

Приветствие. Настраивает на учебную деятельность.

Приветствие учителя. Деление по группам.

2. Актуализация знаний

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

Как мы можем записывать алгоритм? Какие формы представления вы знаете?

Мы с вами пробовали оформлять алгоритм  всеми этими способами.

Но существует еще одна распространенная форма записи алгоритма, о которой мы еще не говорили.

 

Вспоминают пройденное.

3. Постановка проблемы, цели и задач урока. Мотивация учебной деятельности учащихся.

Как вы думаете, чем мы будем сегодня заниматься? Что нового изучим?

- Изучим, что такое псевдокод. Будем учиться оформлять алгоритм в виде псевдокода.

4. Первичное усвоение новых знаний

Для выполнения требуемых людьми задач роботам необходимы определенные инструкции. Это перечень шагов, которые программист использует, чтобы написать код. Псевдокод излагается не на каком-то конкретном языке программирования, а словесно, иногда его часть может быть написана на английском, а часть в виде кода. Псевдокод должен быть изложен подробно, для того, чтобы можно было донести его до других с целью создания ими кода.

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

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

Насколько хорошо Вы предоставляет инструкции для робота? Потренируемся созданию инструкций.

 

Задание. Выберите ученика, чтобы тот исполнял роль робота. Сделайте так, чтобы он  продвигался по классу с препятствиями только с помощью инструкций от одноклассников.

Выполнив данное задание, что вы можете для себя отметить?

 

 

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

Сделай бутерброд

- Возьми ровно 2 куска хлеба.                                                           

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

- Возьми кусочек колбасы, положи ее на намазанную сторону хлеба.

- Возьми 2 кусочка сыра и положи ее поверх колбасы.

- Возьми не намазанный кусочек хлеба и намажь на него соус, используя нож

- Положи этот кусочек хлеба намазанной стороной на сыр.

- Положи соединенные кусочки в тарелку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выбирают одного ученика и выполняют задание.

После выполнения делают вывод относительно того, на что нужно обратить внимание при объявлении команд для исполнителя. Приходят к выводу, что исполнителю необходимо давать четкие и подробные инструкции для того, чтобы он лучше понимал то, что от него хотят.

 

 

 

 

 

 

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. Рефлексия

Учитель проходится по рядам и фиксирует выполнение задачи учениками.

Теперь мы с вами научились работать с тремя типами данных.

Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку.

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

 

 


 

Технологическая карта занятия: «Создание линейного алгоритма для исполнителя – 1»

Цель занятия: научиться создавать линейный алгоритм для робота на языке 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. Рефлексия

Учитель проходится по рядам и фиксирует выполнение задачи учениками.

Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку.

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


 

Технологическая карта занятия: «Создание линейного алгоритма для исполнителя – 2»

Цель занятия: научиться создавать линейный алгоритм для робота на языке 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.Первичное закрепление

Задача. Попробуйте определить тип ошибки в программах, закомментируйте каждую команду и исправьте код, если это возможно. Объясните, почему ошибка является ошибкой того или иного типа.

Код

Тип ошибки

Задание. Объехать квадратную коробу стороной 20 см.

from spike.operator import greater_than_or_equal_to

motor_pair = MotorPair('A', 'E')

motor_pair.set_stop_action('brake')

motor_pair.set_motor_rotation(17.5, 'cm')

for x in range(3):

    motor_pair.move(20, 'cm')

    motor_pair.start_tank(25, 0)

    hub.motion_sensor.reset_yaw_angle()

    wait_until(hub.motion_sensor.get_yaw_angle, greater_than_or_equal_to, 45)

motor_pair.stop()

(Семантическая ошибка. Робот поворачивает не на 90, а на 45 градусов и повторяет действие внутри цикла 3, а не 4 раза)

food = apple, banana, cherry

print('Мои любимые фрукты:', food)

 

(Синтаксическая ошибка. Список должен быть заключен в скобки)

from spike import PrimeHub from spike.control

import wait_for_seconds

your_hub = PrimeHub

yr_hub.light_matrix.show_image('HAPPY')

wait_for_seconds(5)

your_hub.light_matrix.off()

(Ошибка выполнения. Возникла ошибка при использовании переменной your_hub)

Работа в парах.

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

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

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. Рефлексия

Учитель проходится по рядам и фиксирует выполнение задачи учениками.

Перечислите типы ошибок, с которыми мы можем столкнуться при создании программ для нашего робота.

Назовите возможные способы их отладки.

Какова была наша цель на уроке? Как вы думаете, сумели ли мы достичь её? Если да, то поднимите карточку зеленого цвета, если нет, то красного, если вы не знаете, или что-то на уроке было для вас непонятным, то поднимите желтую карточку.

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

 


 

Скачано с www.znanio.ru