3.42M
Category: programmingprogramming

Условный оператор Ссылка на методичку. Модуль 4. Урок 3. Turtle

1.

Модуль 4. Урок 3.
Turtle.
Условный оператор
Ссылка на методичку

2.

Модуль 4. Урок 3. Turtle. Условный оператор
Обсуждение:
Новый заказ

3.

Получен новый заказ!
В ProTeam обратилось местный отдел полиции.
Начальник отдела хочет настроить камеры на улицах так, чтобы они
распознавали объекты городской инфраструктуры, например,
дорожные знаки.
Обсуждение
рабочих задач
Эти элементы среды нужно изобразить программно.
Звучит интересно! Поможем заказчику?
Алёна,
менеджер проектов

4.

Рассмотрим одну из задач
Обсуждение
рабочих задач
Задача. Полиция решила установить табло, показывающее предупреждающий знак, если
скорость автомобиля превышена. Ограничение скорости в городе — 60 км/ч. Напишите
программу, запрашивающую и анализирующую скорость, как на картинке.
Есть ли в Python инструменты для реализации такого заказа? Какие?

5.

Рассмотрим одну из задач
Задача. Полиция решила установить табло, показывающее предупреждающий знак, если
скорость автомобиля превышена. Ограничение скорости в городе — 60 км/ч. Напишите
программу, запрашивающую и анализирующую скорость, как на картинке.
Пользовательский
интерфейс
1) Ввод данных.
2) Отрисовка
нужного знака
(предупреждение
или одобрение).
Внутренний
функционал
Анализ полученной
скорости:
1) Если >60, то
превышение.
2) Если <= 60, то
скорость в норме.
Обсуждение
рабочих задач
Программа
контроля скорости

6.

Рассмотрим одну из задач
Задача. Полиция решила установить табло, показывающее предупреждающий знак, если
скорость автомобиля превышена. Ограничение скорости в городе — 60 км/ч. Напишите
программу, запрашивающую и анализирующую скорость, как на картинке.
Программа
контроля скорости
1) Ввод данных.
2) Отрисовка
нужного знака
(предупреждение
или одобрение).
Внутренний
функционал
Анализ полученной
скорости:
1) Если >60, то
превышение.
2) Если <= 60, то
скорость в норме.
Как нарисовать конкретный
объект в зависимости от
скорости?
Обсуждение
рабочих задач
Пользовательский
интерфейс
Дорожная обстановка
требует анализа...

7.

Схема возможного решения:
Ввод скорости
Нарисовать
восклицательный
знак
Скорость больше 60?
Нет
Нарисовать
зелёный круг
Сложные графические объекты мы отрисовывали с помощью
циклической конструкции.
А программы, требующие анализ условия, реализуем через
условный оператор.
Обсуждение
рабочих задач
Да

8.

Цель рабочего дня —
наполнить базу данных объектами
городской среды.
Полиция хочет проводить мониторинг улиц с помощью камер,
распознающих городскую обстановку.
● узнаете, как нарисовать конкретный графический
объект в зависимости от условия;
● примените команды модуля turtle в условных
алгоритмических структурах;
● реализуете заказ для местного отделения полиции.
Обсуждение
рабочих задач
Сегодня вы:

9.

Модуль 4. Урок 3. Turtle. Условный оператор
Подтверждение
квалификации

10.

Чтобы приступить к рабочим задачам,
продемонстрируйте уровень своих
знаний.
Подтверждение
квалификации
Покажите, что вы готовы к «мозговому
штурму»!

11.

Изменить толщину пера черепашки
на 5 пикселей
?
Начать/Завершить заливку
текущим цветом
?
Поднять перо/Опустить перо
?
Изменить цвет пера черепашки на
красный
?
Переместить черепашку в точку с
координатами (20, 130)
?
Подтверждение
квалификации
Какие команды соответствуют описаниям?

12.

Изменить толщину пера черепашки
на 5 пикселей
pensize(5)
Начать/Завершить заливку
текущим цветом
begin_fill() end_fill()
Поднять перо/Опустить перо
penup() pendown()
Изменить цвет пера черепашки на
красный
color("red")
Переместить черепашку в точку с
координатами (20, 130)
goto(20, 130)
Подтверждение
квалификации
Какие команды соответствуют описаниям?

13.

Какая команда меняет скорость движения
черепашки?
Подтверждение
квалификации
Как скрыть исполнителя
(убрать с экрана)?

14.

Полезные команды:
Команда
Значение
Изменить скорость перемещения
черепашки.
hideturtle()
Скрыть исполнителя-черепашку с экрана
(остаётся только рисунок).
Подтверждение
квалификации
speed(<число от 1 до 1999>)
Скорость 3
Скорость 10

15.

Какой оптимальный способ отрисовки
квадрата ты знаешь?
Подтверждение
квалификации
А пятиконечной звезды?

16.

from turtle import *
for i in range(4):
forward(100)
left(90)
hideturtle()
exitonclick()
from turtle import *
for i in range(5):
forward(150)
left(144)
hideturtle()
exitonclick()
Подтверждение
квалификации
Эти фигуры можно нарисовать с помощью
цикла:

17.

Квалификация подтверждена!
Подтверждение
квалификации
Отлично, вы готовы к «мозговому штурму» и
реализации рабочей задачи!

18.

Модуль 4. Урок 3. Turtle. Условный оператор
«Мозговой штурм»:
Отрисовка фигур с анализом
условия

19.

Работа с условиями
«Мозговой
штурм»
Рассмотрим несколько разных задач с отрисовкой фигур в
зависимости от вводимых пользователем данных.

20.

Вернёмся к задаче из обсуждения
Задача. Полиция решила установить табло, показывающее предупреждающий знак, если
скорость автомобиля превышена. Ограничение скорости в городе — 60 км/ч. Напишите
программу, запрашивающую и анализирующую скорость, как на картинке.

Круг зелёного (green) цвета с радиусом 60.

Восклицательный знак красного (red) цвета с
параметрами как на картинке:
«Мозговой
штурм»
Параметры фигур:

21.

Схема решения:
Начало
Ввод скорости
Скорость больше 60?
Нарисовать
восклицательный
знак
Нет
Нарисовать
зелёный круг
Конец
Отдельный линейный
алгоритм (функция),
рисующий знак
Отдельный линейный
алгоритм (функция),
рисующий круг
«Мозговой
штурм»
Да

22.

Возможный код:
def speed_ok():
from turtle import *
color("green")
speed = int(input("Скорость транспорта:"))
begin_fill()
if speed <= 60:
circle(50)
speed_ok()
end_fill()
if speed > 60:
speed_over()
def speed_over():
hideturtle()
color("red")
exitonclick()
penup()
pendown()
begin_fill()
circle(18)
end_fill()
penup()
#и так далее
«Мозговой
штурм»
goto(0,-70)

23.

Перед тем, как продолжить:
В России действует «нештрафуемый порог превышения скорости».
Если водитель превышает скорость меньше, чем на 20 км/ч, то
вместо штрафа выносится предупреждение.
Полиция хочет добавить в программу жёлтый круг для
предупреждения в рамках нештрафуемого порога.
«Мозговой
штурм»
Как изменить программу? Опиши новую блок-схему.

24.

Запрограммируй ночной режим!
Задача. Настройте интерфейс программы с дневным и ночным режимом. Полицейский
будет вводить время суток. Если сейчас «день», то программа должна отрисовывать
Солнце. Если «ночь», то Луну. В остальных случаях оставить экран пустым.

Солнце: цвет жёлтый (yellow), длина
отрезка в основании — 100, количество
лучей — 18.

Луна: в основании бежевый (bisque) круг
с радиусом 50.
«Мозговой
штурм»
Параметры фигур:

25.

Схема решения:
Начало
Циклический
алгоритм (функция),
рисующий солнце
Ввод времени суток
Да
Сейчас «день»?
Нет
Нарисовать
Солнце
Сейчас «ночь»?
Нарисовать
Луну
Линейный
алгоритм (функция),
рисующий круг
Конец
Нет
«Мозговой
штурм»
Да

26.

Схема решения:
Начало
Циклический
алгоритм (функция),
рисующий солнце
Ввод времени суток
Да
Сейчас «день»?
Нет
Нарисовать
Солнце
Сейчас «ночь»?
Нет
Нарисовать
Луну
Линейный
алгоритм (функция),
рисующий круг
Конец
Можно ли использовать другой вид условного оператора? Какой?
«Мозговой
штурм»
Да

27.

Возможное решение:
def day():
from turtle import *
color("yellow")
speed(0)
begin_fill()
answer = input("Какое сейчас время суток
for i in range(18):
(день/ночь)?")
forward(100)
left(100)
end_fill()
if answer == "день":
day()
if answer == "ночь":
night()
color("bisque")
begin_fill()
circle(50)
end_fill()
hideturtle()
exitonclick()
«Мозговой
штурм»
def night():

28.

Перед тем, как продолжить:
Отдел дизайна ProTeam просмотрел программу и порекомендовал
доработать ночной режим.
❏ Как изменить программу так, чтобы в ночном режиме Луна
рисовалась на темно-синем фоне?
«Мозговой
штурм»
❏ Как сделать Луну реалистичнее и добавить несколько
кратеров?

29.

Модуль 4. Урок 3. Turtle. Условный оператор
Платформа:
Полиция: задачи

30.

Выполните задания на платформе
«Полиция: задачи»
Работаем на
платформе
learn.algoritmika.org

31.

Перерыв

32.

Модуль 4. Урок 3. Turtle. Условный оператор
«Мозговой штурм»:
Отрисовка фигур с анализом
условия

33.

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

34.

Пополни базу системы распознавания
Задача. Добавьте в базу объектов городской среды здание городской администрации. В
нём два корпуса: главный (синий) и приёмная жителей (зелёный). В ответ на запрос
«главный корпус» или «приёмная жителей» должна отрисовываться ограда
соответствующего цвета. При вводе других данных оставить экран пустым.

В ограде 4 звена. Синий цвет — blue, зелёный
цвет — green.

Параметры одного звена:
«Мозговой
штурм»
Параметры ограды:

35.

Схема решения:
синий
Начало
Ввод названия корпуса
Да
Нет
Нарисовать
синюю ограду
Да
зелёный
Это «главный корпус»?
Это «приёмная жителей»?
Нарисовать
зелёную ограду
Конец
Нет
«Мозговой
штурм»
Циклический
алгоритм (функция),
рисующий ограду
определённого цвета
(цвет — аргумент)

36.

Схема решения:
синий
Начало
Ввод названия корпуса
Да
Нет
Нарисовать
синюю ограду
Да
зелёный
Это «главный корпус»?
Это «приёмная жителей»?
Нет
Нарисовать
зелёную ограду
Конец
Можно ли использовать другой вид условного оператора? Какой?
«Мозговой
штурм»
Циклический
алгоритм (функция),
рисующий ограду
определённого цвета
(цвет — аргумент)

37.

Возможный код:
from turtle import *
color(color_f)
speed(0)
penup()
pensize(3)
goto(-215, 0)
answer = input("Введи корпус (главный корпус/приёмная жителей):")
pendown()
if answer == "главный корпус":
for i in range(4):
left(90)
forward(50)
fence("blue")
if answer == "приёмная жителей":
fence("green")
right(90)
hideturtle()
forward(25)
exitonclick()
left(90)
#и так далее
«Мозговой
штурм»
def fence(color_f):

38.

Перед тем, как продолжить:
1. Исправь программу: городской архитектор заметил, что ограда
приёмной жителей короче. Если у главного корпуса 4 звена, то у
приёмной должно быть 3.
«Мозговой
штурм»
2. Тестировщик пожаловался, что интерфейс программы не очень
удобен: приходится вводить названия корпусов целиком. Как
упростить ввод названия корпуса?

39.

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

Цвета: red, yellow, green.

Круги: радиус — 35, расположение:
«Мозговой
штурм»
Параметры светофора:

40.

Схема решения:
Алгоритм
«Потушить красный»
Алгоритм
«Зажечь жёлтый
Алгоритм
«Потушить жёлтый»
Ввод сигнала
светофора
Да
Алгоритм
«Потушить зелёный»
Нет
Нарисовать
красный сигнал
Да
Горит «жёлтый»?
Нет
Нарисовать
жёлтый сигнал
Да
Алгоритм
«Зажечь зелёный»
Горит «красный»?
Горит «зелёный»?
Нарисовать
зелёный сигнал
Конец
Нет
«Мозговой
штурм»
Алгоритм
«Зажечь красный»
Начало

41.

Возможное решение:
from turtle import *
color("red")
speed(0)
penup()
answer = input("Сигнал светофора(красный/жёлтый/зелёный):")
goto(0, 100)
if answer == "красный":
pendown()
red_light_on()
begin_fill()
yellow_light_off()
circle(35)
green_light_off()
end_fill()
def red_light_off():
color("red")
penup()
goto(0, 100)
pendown()
circle(35)
#аналогично другие функции
#аналогично другие сигналы
hideturtle()
exitonclick()
«Мозговой
штурм»
def red_light_on():

42.

Перед тем, как продолжить:
1. Заказчик попросил добавить светофору прямоугольную рамку
чёрного цвета толщиной 5 пикселей. Опишите необходимые
изменения в программе.
«Мозговой
штурм»
2. В нашем городе зелёный в среднем горит 1 минуту. Как дополнить
программу, чтобы после 60 секунд горения зелёный сигнал гас?

43.

Модуль 4. Урок 3. Turtle. Условный оператор
Платформа:
Полиция: задачи 2

44.

Выполните задания на платформе
«Полиция: задачи 2»
Работаем на
платформе
learn.algoritmika.org

45.

Модуль 4. Урок 3. Turtle. Условный оператор
Завершение
рабочего дня

46.

Для завершения работы
пройдите техническое интервью
1. Какая алгоритмическая структура позволяет отрисовывать
разные объекты графики в зависимости от входных данных?
Подведение итогов
рабочего дня
2. Приведите пример любой задачи (кроме тех, что были
решены сегодня), которую можно было бы решить с
помощью turtle и этой структуры.
Костя,
Алёна,
старший разработчик
менеджер проектов

47.

Оценка эффективности проделанной
работы
Поделитесь с коллегами:
2. Что получилось не так, как хотелось?
3. Что нужно сделать, чтобы в следующий раз избежать
неудачи?
Подведение итогов
рабочего дня
1. Что у вас получилось лучше всего?

48.

«Полиция:
доп задания»
Подведение итогов
рабочего дня
Дополнительные задания для
повышения эффективности
English     Русский Rules