(495) 240-82-80ПН-СБ с 10:00 до 18:00
We speak English

Урок 6.3. Рисуем фигуру

В рамках данного урока вы напишите программу, которая позволит нарисовать заранее спроектированную двухмерную фигуру. Здесь вы также будете использовать списки и цикл для рисования нужной фигуры на бумаге с помощью робота Rover (или перемещения по полу без рисования).

Вы научитесь:

  • Создавать списки в приложении "Списки и Электронные таблицы" (Lists & Spreadsheet)
  • Использовать функцию recall_list в программировании на языке Python
  • Использовать цикл с оператором for для обработки элементов списка
  • Использовать выражение pause для регулирования времени выполнения программы

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

1. Перед написанием программы введите координаты своей фигуры в два списка в приложении "Списки и Электронные таблицы" (Lists & Spreadsheet) на калькуляторе TI-Nspire CX II-Т. Все координаты фигуры в виде буквы Т даны в таблице на рисунке ниже. Обратите внимание на названия этих двух списков - xs и ys. Они важны для вашей программы.

Вы можете протестировать свои значения, используя диаграмму рассеяния в приложении "Графики" (Graphs) или приложении "Данные и Статистика" (Data & Statistics) (Функция быстрого построения графика Quick Graph из приложения "Списки и Электронные таблицы" (Lists & Spreadsheet)).

Примечание для учителя: Если учащиеся еще не умеют работать с приложением "Списки и Электронные таблицы" (Lists & Spreadsheet), вы можете просто создать два списка внутри самой программы на языке Python:
xs = [ ... ]
ys = [ ... ]
Но метод, описанный в данном уроке, иллюстрирует возможность переноса переменных между программой на языке Python и калькулятором TI-Nspire CX II-Т.

2. Начните работу с создания нового проекта Rover Coding.

Два первых новых выражения берут списки из переменных на языке TI-Nspire и сохраняют их в двух переменных на языке Python. Переменным можно присваивать одинаковые имена, так как в разных языках это разные переменные.

Используйте следующее выражение, которое можно найти в меню menu > More modules > TI System:

recall_list("name")

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

3. В одном из этих выражений используйте xs для элементов list и name, а в другом используйте ys.

Эти два выражения берут списки xs и ys из калькулятора TI-Nspire CX II-Т и сохраняют их в переменных xs и ys на языке Python соответственно (слева от знака =).

Примечание для учителя: Переменные на языке Python и в калькуляторе TI-Nspire CX II-Т не обязательно должны иметь разные имена, это ведь разные языки.
Выражение store_var(list, "name") в системном меню TI System делает обратное: оно переносит значения из списка в программе на языке Python в "название" переменной на калькуляторе TI-Nspire CX II-Т. Всплывающие подсказки здесь будут очень полезны в этом выражении, так как они показывают, куда они относятся.

4. Теперь пришло время задать маршрут движения роботу Rover. Не забудьте, что вездеход Rover начинает свой путь от точки (0,0). Вполне может быть, что движение ваш робот начинает не из этой точки, поэтому ваша задача переместить вездеход в исходную позицию перед тем, как остановить его и вставить маркер в держатель. Первая точка будет в виде ( xs[0], ys[0] ), поэтому используйте следующее выражение:

rv.to_xy(xs[0], ys[0])

Знаки [ ] можно найти на кнопке левой скобки слева от кнопки 0.

Примечание для учителя: При выборе этих скобок на калькуляторе, они отображаются сразу в паре, и вы можете удалить любую из них, если нужна только одна.
В языке Python существуют несколько способов повторения списков. Тот, что представлен здесь, хорошо подойдет новичкам.

5. Добавьте выражение, которое приостанавливает обработку команд, пока вы вставляете маркер в держатель (если он у вас есть, конечно).

input("Press enter to continue.")

6. Далее создайте цикл с оператором for для того, чтобы робот начал перемещаться к остальным точкам:

for i in range(1, len(xs)):
  block

Элемент len(xs) это длина (размер) списка xs. Если длина равна 12, то цикл завершается на значении i = 11, последнем элементе списка.

Примечание для учителя: Списки xs и ys должны иметь одинаковый размер.

7. Завершите блок (block) цикла, используя следующее выражение:

rv.to_xy(xs[i], ys[i])

После цикла (он не структурирован) снова приостановите работу программы, чтобы убрать маркер, затем дайте роботу Rover команду снова вернуться в исходную точку (0,0) "лицом" на восток.

8. Усложняем задачу: Используйте инструменты модуля ti_plotlib, чтобы также нанести координаты маршрута на экран, и синхронизировать этот процесс с движением робота Rover. Используйте выражение plt.auto_window(xs,ys), чтобы регулировать размеры окна под ваши размеры для данного проекта. В конце вы можете использовать функцию plt.plot(xs,ys,"mark"), чтобы нарисовать диаграмму рассеяния с соединенными точками.