Алгоритмы и программирование
Алгоритмы и программирование
Графический режим монитора
Исполнитель Рисователь
Команда «новый лист»
Управление пикселями
Отрезок
Отрезок
Когда остановится цикл?
Ещё один цикл
Что дальше?
Задачи
Алгоритмы и программирование
Что такое графический примитив?
Линия (=отрезок)
Линия
Прямоугольник
Окружность
Ломаная
Заливка области
Пример
Пример
Задачи
Задачи
Алгоритмы и программирование
Зачем это нужно?
Что такое вспомогательный алгоритм?
Составляем вспомогательный алгоритм
Основная программа
Полная программа
Задачи
Задачи
Алгоритмы и программирование
Рисование с помощью циклов
Рисование с помощью циклов
Рисование с помощью циклов
Использование процедур
Процедура Ромб
Вызов процедуры в цикле
Задачи
Задачи
Штриховка
Штриховка
Задачи
Задачи
Алгоритмы и программирование
Как сделать анимацию?
Перемещение шарика на фоне
Начало программы
Новая команда
Основной цикл
Как двигать шарик?
В чём проблема?
Задачи
Задачи
Задачи
Алгоритмы и программирование
Команды для работы с клавиатурой
Основной цикл
Вся программа
Задачи
Задачи
Задачи
Управление по требованию
Перемещение шарика
Обработка нажатия клавиши
Обработка нажатия клавиши
Задачи
Конец фильма
Источники иллюстраций
2.91M
Category: programmingprogramming

Алгоритмы и программирование

1. Алгоритмы и программирование

1
Алгоритмы и
программирование
§ 40. Компьютерная графика
§ 41. Графические примитивы
§ 42. Вспомогательные алгоритмы
§ 43. Применение циклов
§ 44. Анимация
§ 45. Управление с помощью
клавиатуры
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

2. Алгоритмы и программирование

2
Алгоритмы и
программирование
§ 40. Компьютерная графика
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

3. Графический режим монитора

Алгоритмы и программирование, 7 класс
3
Графический режим монитора
Холст – это прямоугольная область экрана,
доступная для рисования.
O
(0,0)
X
y
x
A(x,y)
! Холст – это растровый
рисунок!
Y
? Почему сверху вниз?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

4. Исполнитель Рисователь

Алгоритмы и программирование, 7 класс
4
Исполнитель Рисователь
Задача – нарисовать что-то на холсте не с
помощью мыши, а управляя исполнителем.
? Как управлять?
Какие команды умеет
выполнять Рисователь?
Первая программа:
программа
(алгоритм)
начало
использовать Рисователь
алг Холст
аргументы
нач
лист
новый лист(500,
400, белый)
кон
конец
К.Ю. Поляков, Е.А. Ерёмин, 2022
команда
Рисователя
http://kpolyakov.spb.ru

5. Команда «новый лист»

Алгоритмы и программирование, 7 класс
5
Команда «новый лист»
использовать Рисователь
алг Холст
нач
новый лист(500, 400, белый)
кон
ширина
высота
цвет
белый, чёрный,
серый, фиолетовый,
синий, голубой,
зелёный, жёлтый,
оранжевый, красный
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

6. Управление пикселями

Алгоритмы и программирование, 7 класс
6
Управление пикселями
? Что значит «управлять пикселем»?
аргументы (данные
для работы)
пиксель(10, 20, синий)
x
y
цвет
(x,y)
? Как рисовать отрезок?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

7. Отрезок

Алгоритмы и программирование, 7 класс
7
Отрезок
O
10
X
(10,20)
Y
15
(15,20)
20
пиксель(10, 20, синий)
пиксель(11, 20, синий)
пиксель(12, 20, синий)
Как сократить?
?
пиксель(13, 20, синий)
пиксель(14, 20, синий)
пиксель(15, 20, синий)
пиксель(X, 20, синий)
для X от 10 до 15
X – переменная (изменяемая величина)
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

8. Отрезок

Алгоритмы и программирование, 7 класс
8
Отрезок
Цикл – это многократное выполнение
одинаковых действий.
X – целая
величина
начало
цикла
конец
цикла
присвоить X
цел X
значение 10
тело
X:=10
цикла
нц пока X <= 15
пиксель(X, 20, синий)
X:= X + 1
присвоить X
кц
значение X+1
10 → 11 → 12 → 13 → …
? При каком X остановится цикл?
К.Ю. Поляков, Е.А. Ерёмин, 2022
16
http://kpolyakov.spb.ru

9. Когда остановится цикл?

Алгоритмы и программирование, 7 класс
9
Когда остановится цикл?
выполняется до тех пор,
пока условие не станет
ложным
цел X
X:=10
нц пока X <= 15
пиксель(X, 20, синий)
X:= X + 1
кц
это цикл с
условием
? При каком X остановится цикл?
К.Ю. Поляков, Е.А. Ерёмин, 2022
16
http://kpolyakov.spb.ru

10. Ещё один цикл

Алгоритмы и программирование, 7 класс
10
Ещё один цикл
цикл по
цел X
переменной
нц для X от 10 до 15
пиксель(X, 20, синий)
блок-схема
кц
! X автоматически
увеличится на 1
после каждого
повторения!
начало
X:=10,15
тело цикла
конец
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

11. Что дальше?

Алгоритмы и программирование, 7 класс
11
Что дальше?
? Как нарисовать вертикальный отрезок?
? … наклонный? в чём сложность?
? … окружность?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

12. Задачи

Алгоритмы и программирование, 7 класс
12
Задачи
«A»: С помощью команды пиксель и циклов постройте
две параллельных стороны прямоугольника синего
цвета:
«B»: Достройте прямоугольник.
«С»: Закрасьте прямоугольник любым цветом.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

13. Алгоритмы и программирование

13
Алгоритмы и
программирование
§ 41. Графические примитивы
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

14. Что такое графический примитив?

Алгоритмы и программирование, 7 класс
14
Что такое графический примитив?
Графический примитив — это элемент рисунка,
который добавляется с помощью одной
команды.
• пиксель
• линия
• прямоугольник
• окружность
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

15. Линия (=отрезок)

Алгоритмы и программирование, 7 класс
15
Линия (=отрезок)
линия(10, 20, 15, 20)
(x,y) первой
точки
(x,y) второй
точки
одна команда
заменяет цикл
цел X
нц X от 10 до 15
пиксель(X, 20, синий)
кц
? Какие вопросы возникли?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

16. Линия

Алгоритмы и программирование, 7 класс
16
Линия
толщина
линии (px)
цвет
цвет сохраняется,
пока не сменят
перо(1, синий)
линия(10, 20, 15, 20)
линия(15, 20, 15, 30)
линия(15, 30, 10, 30)
линия(10, 30, 10, 20)
? Какого цвета остальные
? Что это?
(10,20)
10
линии?
5
(10,30)
К.Ю. Поляков, Е.А. Ерёмин, 2022
(15,20)
(15,30)
http://kpolyakov.spb.ru

17. Прямоугольник

Алгоритмы и программирование, 7 класс
17
Прямоугольник
кисть(прозрачный)
только рамка
перо(1, синий)
цвет заливки
кисть(красный)
прямоугольник(20, 10, 40, 30)
(20,10)
(x,y) левого
верхнего угла
(40,10)
20
(20,30)
20
К.Ю. Поляков, Е.А. Ерёмин, 2022
(40,30)
(x,y) правого
нижнего угла
? Координаты
остальных углов?
размеры?
http://kpolyakov.spb.ru

18. Окружность

Алгоритмы и программирование, 7 класс
18
Окружность
? Какие данные нужны?
перо(1, синий)
кисть(красный)
окружность(50, 30, 20)
(x,y) центра
К.Ю. Поляков, Е.А. Ерёмин, 2022
20
(50,30)
радиус
http://kpolyakov.spb.ru

19. Ломаная

Алгоритмы и программирование, 7 класс
19
Ломаная
? Из каких примитивов состоит?
линия(20, 30, 30, 10)
линия(30, 10, 40, 30)
линия(40, 30, 20, 30)
или так
в точку(20, 30)
линия в точку(30, 10)
линия в точку(40, 30)
линия в точку(20, 30)
К.Ю. Поляков, Е.А. Ерёмин, 2022
(30,10)
(20,30)
(40,30)
? Что лучше?
http://kpolyakov.spb.ru

20. Заливка области

Алгоритмы и программирование, 7 класс
20
Заливка области
кисть(оранжевый)
залить(50, 60)
(50,60)
• можно начать с любой точки
внутри области
• заливаются все соседние
пиксели одного цвета
• заливка прекращается на
границе другого цвета
? Если линия не замкнута?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

21. Пример

Алгоритмы и программирование, 7 класс
21
Пример
O
20 30 40
70
30
100 110 120
X
? Из каких фигур?
? В каком порядке
рисовать?
80
? Координаты углов
прямоугольников?
130
Y
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

22. Пример

Алгоритмы и программирование, 7 класс
22
Пример
алг Беседка
нач
новый лист(200, 200, белый)
| 1
перо(1, черный)
| 2
кисть(серый)
| 3
прямоугольник(30, 80, 40, 130)
| 4
прямоугольник(100, 80, 110, 130) | 5
в точку(20, 80)
| 6
линия в точку(70, 30)
| 7
линия в точку(120, 80)
| 8
линия в точку(20, 80)
| 9
кисть(синий)
| 10
Можно переставить?
залить(70, 70)
| 11
кисть(красный)
| 12
окружность(70, 30, 10)
| 13
кон
?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

23. Задачи

Алгоритмы и программирование, 7 класс
23
Задачи
«A»: Постройте изображение домика:
«B»: Постройте любой из рисунков:
«С»: Постройте рисунок:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

24. Задачи

Алгоритмы и программирование, 7 класс
24
Задачи
«D»: Постройте любую из фигур:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

25. Алгоритмы и программирование

25
Алгоритмы и
программирование
§ 42. Вспомогательные
алгоритмы
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

26. Зачем это нужно?

Алгоритмы и программирование, 7 класс
26
Зачем это нужно?
Задача:
? Можно ли решить
известными методами?
? Что особенного?
Особенность: три похожие фигуры
! Идея: научить Рисователя рисовать такие
треугольники!
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

27. Что такое вспомогательный алгоритм?

Алгоритмы и программирование, 7 класс
27
Что такое вспомогательный алгоритм?
Вспомогательный алгоритм (процедура) —
это новая команда, которую мы «учим»
выполнять исполнителя.
? Координаты углов?
O
? Что общего?
Y
Что отличается?
общее: размеры, угол поворота
отличия: координаты, цвет
К.Ю. Поляков, Е.А. Ерёмин, 2022
X (x, y-60)
60
(x, y)
(x+100, y)
100
базовая точка
http://kpolyakov.spb.ru

28. Составляем вспомогательный алгоритм

Алгоритмы и программирование, 7 класс
28
Составляем вспомогательный алгоритм
Параметры — это данные
необходимые для работы
процедуры.
(x, y-60)
60
(x, y)
100 (x+100, y)
алг треугольник (цел x, y, цвет ц)
нач
(x, y-60)
в точку(x, y)
(x+20, y-20)
линия в точку(x, y-60)
60
линия в точку(x+100, y)
линия в точку(x, y)
(x, y) 100 (x+100, y)
кисть(ц)
залить(x+20, y-20)
кон
Какую строку можно изменить?
?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

29. Основная программа

Алгоритмы и программирование, 7 класс
29
Основная программа
(120,100)
60
(20,100) 100
? Какие данные нужны для
вызова процедуры?
(120,160)
? Что если запустить?
алг Трио
нач
треугольник(20, 100, синий)
треугольник(120, 100, зеленый)
треугольник(120, 160, красный)
кон
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

30. Полная программа

Алгоритмы и программирование, 7 класс
30
Полная программа
использовать Рисователь
алг Трио
нач
треугольник(20, 100, синий)
треугольник(120, 100, зеленый)
треугольник(120, 160, красный)
кон
основная
программа
алг треугольник (цел x, y, цвет ц)
нач
вспомогательный
в точку(x, y)
алгоритм
линия в точку(x, y-60)
(процедура)
линия в точку(x+100, y)
линия в точку(x, y)
кисть(ц)
залить(x+20, y-20)
кон
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

31. Задачи

Алгоритмы и программирование, 7 класс
31
Задачи
«A»: Постройте рисунок, используя процедуру:
«B»: Постройте рисунок, используя процедуру:
«С»: Постройте любой из рисунков, используя одну
процедуру:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

32. Задачи

Алгоритмы и программирование, 7 класс
32
Задачи
«D»: Постройте любой из рисунков, используя одну
процедуру:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

33. Алгоритмы и программирование

33
Алгоритмы и
программирование
§ 43. Применение циклов
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

34. Рисование с помощью циклов

Алгоритмы и программирование, 7 класс
34
Рисование с помощью циклов
Задача:
O
20
40
100
X
20
Y
x
окружность( x , 20, 5)
окружность( 20
20, 20, 10)
окружность( 40
40, 20, 10)
окружность( 60
60, 20, 10)
шаг изменения
окружность( 80
80, 20, 10)
переменной цикла
100 20, 10)
окружность(100,
цел x
нц для x от 20 до 100 шаг 20
окружность(x, 20, 5)
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

35. Рисование с помощью циклов

Алгоритмы и программирование, 7 класс
35
Рисование с помощью циклов
Задача: O
y
20
20
40
X
? Чем отличаются
40
ряды?
60
Y
Ряд(20)
Ряд(40)
Ряд(60)
цел y
нц для y от 20 до 60 шаг 20
Ряд(y)
кц
! Нужно добавить процедуру Ряд!
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

36. Рисование с помощью циклов

Алгоритмы и программирование, 7 класс
36
Рисование с помощью циклов
использовать Рисователь
алг Круги
нач
цел y
нц для y от 20 до 60 шаг 20
Ряд(y)
кц
кон
алг Ряд( цел y )
нач
цел x
нц для x от 20 до 100 шаг 20
окружность( x, y, 5 )
кц
кон
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

37. Использование процедур

Алгоритмы и программирование, 7 класс
37
Использование процедур
Задача:
O
20 30 40
10
30
X
? Из каких фигур
состоит?
(x+10,? y-20)
(x, y)
?
(x+20,
y)
базовая точка
(x+10,
y+20)
?
50
Y
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

38. Процедура Ромб

Алгоритмы и программирование, 7 класс
38
Процедура Ромб
(x+10, y-20)
(x, y)
(x+20, y)
(x+10, y+20)
алг Ромб(цел x, y)
нач
в точку(x, y)
линия в точку(x+10, y-20)
линия в точку(x+20, y)
линия в точку(x+10, y+20)
линия в точку(x, y)
кон
? Зачем 2 параметра (y не изменяется)?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

39. Вызов процедуры в цикле

Алгоритмы и программирование, 7 класс
39
Вызов процедуры в цикле
O
20 30 40
X
10
30
50
Y
Ромб(20, 30)
Ромб(30, 30)
Ромб(40, 30)
Ромб(50, 30)
Ромб(60, 30)
К.Ю. Поляков, Е.А. Ерёмин, 2022
цел x
нц для x от 20 до 60 шаг 10
Ромб(x, 30)
кц
http://kpolyakov.spb.ru

40. Задачи

Алгоритмы и программирование, 7 класс
40
Задачи
«A»: Постройте узор, используя процедуру и цикл:
«B»: Постройте узор, используя процедуру и цикл:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

41. Задачи

Алгоритмы и программирование, 7 класс
41
Задачи
«C»: Постройте любой узор, используя процедуру и цикл:
«D»: Постройте любой узор, используя процедуру и цикл:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

42. Штриховка

Алгоритмы и программирование, 7 класс
42
Штриховка
Задача:
O
x1
x2 X
N полос
y1
y2
Y
? Как найти h?
x2 x1
h
N
h
цел h
h:= div(x2-x1, N)
цел x1=100, x2=300
деление нацело
цел y1=100, y2=200
кисть(серый)
прямоугольник(x1, y1, x2, y2)
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

43. Штриховка

Алгоритмы и программирование, 7 класс
43
Штриховка
Задача:
O
x1 x1+h
x2-h x2 X
N полос
цел x
нц для x от x1+h до x2-h шаг h
линия(x, y1, x, y2)
кц
y1
y2
Y
h
x
x
x1+h,
линия(x1+h,
y1, x1+h,
y2)
x1+2*h, y1, x1+2*h, y2)
линия(x1+2*h,
...
...
...
x2-h,
линия(x2-h,
y1, x2-h,
y2)
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

44. Задачи

Алгоритмы и программирование, 7 класс
44
Задачи
«A»: Постройте рисунок, число линий храните в
переменной N:
«B»: Постройте любой рисунок, число линий храните в
переменной N:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

45. Задачи

Алгоритмы и программирование, 7 класс
45
Задачи
«C»: Постройте любой рисунок, число линий храните в
переменной N:
«D»: Постройте любой рисунок, число линий храните в
переменной N:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

46. Алгоритмы и программирование

46
Алгоритмы и
программирование
§ 44. Анимация
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

47. Как сделать анимацию?

Алгоритмы и программирование, 7 класс
47
Как сделать анимацию?
Анимация — это быстрая смена изображений
(«кадров») на экране.
а)
б)
? Насколько быстрая?
К.Ю. Поляков, Е.А. Ерёмин, 2022
в)
г)
≥ 16 кадров/c
http://kpolyakov.spb.ru

48. Перемещение шарика на фоне

Алгоритмы и программирование, 7 класс
48
Перемещение шарика на фоне
Где-то сохранить:
выводим тут
• запомнить фон под
шариком
• нарисовать шарик
Переместить:
• восстановить фон под шариком (стереть)
• изменить координаты
• запомнить фон под новым местом
• нарисовать шарик
не нужно
запоминать!
? Если фон одноцветный?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

49. Начало программы

Алгоритмы и программирование, 7 класс
49
Начало программы
200
200
использовать Рисователь
алг Движение
нач
новый лист(200, 200, синий)
перо(1, прозрачный)
шарик без
...
контура!
кон
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

50. Новая команда

Алгоритмы и программирование, 7 класс
50
Новая команда
параметры
алг Шарик(цел x, y, цвет ц)
нач
цел R=10
Что такое 10?
кисть(ц)
окружность(x, y, R)
кон
показываем!
?
Шарик(20, 100, желтый)
Шарик(20, 100, синий)
? В чём отличие?
стираем!
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

51. Основной цикл

Алгоритмы и программирование, 7 класс
51
Основной цикл
?
O 10
(10, 100)
? X
190
(190, 100)
100
Y
200
Начальное положение:
цел x=10, y=100
Цикл:
нц пока x < 190
... | двигаем шарик
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
? Когда закончится?
http://kpolyakov.spb.ru

52. Как двигать шарик?

Алгоритмы и программирование, 7 класс
52
Как двигать шарик?
нц пока x < 190
Шарик(x, y, жёлтый)
Шарик(x, y, синий)
x:= x + 2
кц
| рисуем шарик
| стираем
| перемещаем
? Что плохо?
нц пока x < 190
Шарик(x, y, жёлтый)
ждать(20)
Шарик(x, y, синий)
x:= x + 2
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
| рисуем шарик
| смотрим 20 мс
| стираем
| перемещаем
http://kpolyakov.spb.ru

53. В чём проблема?

Алгоритмы и программирование, 7 класс
53
В чём проблема?
нц пока x < 190
Шарик(x, y, жёлтый)
Шарик(x, y, синий)
ждать(20)
x:= x + 2
кц
нц пока x < 190
Шарик(x, y, жёлтый)
ждать(20)
x:= x + 2
Шарик(x, y, синий)
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
почти не
видно!
стирает в другом
месте!
http://kpolyakov.spb.ru

54. Задачи

Алгоритмы и программирование, 7 класс
54
Задачи
«A»: Постройте анимацию, при которой шарик движется
справа налево:
«B»: Постройте анимацию, при которой два шарика
движутся в противоположные стороны:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

55. Задачи

Алгоритмы и программирование, 7 класс
55
Задачи
«C»: Постройте анимацию, при которой по холсту
движутся два шарика разного размера с разными
скоростями, один – справа налево, второй – снизу
вверх:
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

56. Задачи

Алгоритмы и программирование, 7 класс
56
Задачи
«D»: Постройте анимацию, при которой по холсту
движутся два шарика разного размера с разными
скоростями, один – справа налево, второй – снизу
вверх, причём при столкновении с краем холста
шарики должны отскакивать от него и двигаться
далее в противоположном направлении.
Используйте одну процедуру.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

57. Алгоритмы и программирование

57
Алгоритмы и
программирование
§ 45. Управление с помощью
клавиатуры
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

58. Команды для работы с клавиатурой

Алгоритмы и программирование, 7 класс
58
Команды для работы с клавиатурой
Определить, нажата ли клавиша:
да/нет
! Это условный
оператор!
если сигнал клав то
| клавиша нажата, что-то сделать
все
Определить, какая клавиша нажата:
цел с
ждать, если не нажата
с:= код клав
если с = КЛ_ВВЕРХ то
константы:
| передвинуть объект вверх
КЛ_ВВЕРХ
все
КЛ_ВНИЗ
символьное имя
КЛ_ВПРАВО
КЛ_ВЛЕВО
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

59. Основной цикл

Алгоритмы и программирование, 7 класс
59
Основной цикл
всегда верно!
нц пока да
Шарик(x, y, жёлтый)
с:= код клав
Шарик(x,
y, синий)
Шарик(x,
y, синий)
с:=
код клав
| переместить шарик
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
бесконечный
цикл
? Что плохо?
http://kpolyakov.spb.ru

60. Вся программа

Алгоритмы и программирование, 7 класс
60
Вся программа
использовать Рисователь
алг Управление клавишами
нач
новый лист(200, 200, синий)
перо(1, прозрачный)
цел x=100, y=100, с
Чего не хватает?
нц пока да
Шарик(x, y, жёлтый)
с:= код клав
Шарик(x, y, синий)
если с=КЛ_ВЛЕВО то x:=x–5 все
если с=КЛ_ВПРАВО то x:=x+5 все
если с=КЛ_ВВЕРХ то y:=y-5 все
если с=КЛ_ВНИЗ
то y:=y+5 все
кц
кон
?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

61. Задачи

Алгоритмы и программирование, 7 класс
61
Задачи
«A»: Постройте программу, в которой шарик управляется
клавишами-стрелками. В начале шарик находится в
правом нижнем углу холста. Он может двигаться
только вверх и влево.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

62. Задачи

Алгоритмы и программирование, 7 класс
62
Задачи
«B»: Постройте программу, в которой шарик управляется
клавишами-стрелками. В начале шарик находится в
центре холста. Он может двигаться в любом
направлении, но не может выйти за пределы
холста.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

63. Задачи

Алгоритмы и программирование, 7 класс
63
Задачи
«C»: Постройте программу, в которой два шарика
управляются клавишами-стрелками. Они могут
двигаться в любом направлении, но не может выйти
за пределы холста. Клавиши управления для
второго шарика выберите самостоятельно.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

64. Управление по требованию

Алгоритмы и программирование, 7 класс
64
Управление по требованию
События на экране развиваются и без действий
игрока, но он может вмешаться.
нц пока да
| если нажата клавиша, то
|
изменить направление движения
| нарисовать шарик
работает и
| ждать 20 мс
без игрока!
| стереть шарик
| переместить шарик
кц
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

65. Перемещение шарика

Алгоритмы и программирование, 7 класс
65
Перемещение шарика
?
нц пока да
Как изменить направление?
...
| переместить шарик
кц
сдвиг по x
x:= x + dx
сдвиг по y
y:= y + dy
dx
0
5
0
-5
0
5
К.Ю. Поляков, Е.А. Ерёмин, 2022
dy
0
0
5
0
-5
-5
направление
на месте
http://kpolyakov.spb.ru

66. Обработка нажатия клавиши

Алгоритмы и программирование, 7 класс
66
Обработка нажатия клавиши
нц пока да
| если нажата клавиша, то
|
изменить
|
изменить направление
направление движения
движения
...
если нажата какаякц
нибудь клавиша
если сигнал клав то
с:= код клав
|
изменить
направление
движения
если
с=КЛ_ВЛЕВО
то dx:=-5;
dy:=0 все
все
если с=КЛ_ВПРАВО то dx:=5; dy:=0 все
...
если с=КЛ_ПРОБЕЛ
то dx:=0;
dy:=0 все
Как изменить
направление?
все
?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

67. Обработка нажатия клавиши

Алгоритмы и программирование, 7 класс
67
Обработка нажатия клавиши
нц пока да
| если нажата клавиша, то
|
изменить
|
изменить направление
направление движения
движения
...
если нажата какаякц
нибудь клавиша
если сигнал клав то
с:= код клав
|
изменить
направление
движения
если
с=КЛ_ВЛЕВО
то dx:=-5;
dy:=0 все
все
если с=КЛ_ВПРАВО то dx:=5; dy:=0 все
...
если с=КЛ_ПРОБЕЛ
то dx:=0;
dy:=0 все
Как изменить
направление?
все
?
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

68. Задачи

Алгоритмы и программирование, 7 класс
68
Задачи
«A»: Постройте программу, в которой шарик постоянно
движется, его направление движения изменяется с
помощью клавиш-стрелок. Нажатие на клавишу
«пробел» останавливает шарик. Размер холста 500
на 500 пикселей.
«B»: Дополните предыдущую программу так, чтобы
шарик отскакивал от стенок холста при столкновении
с ними.
«C»: Дополните предыдущую программу так, чтобы
можно было менять скорость движения шарика.
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

69. Конец фильма

Алгоритмы и программирование, 7 класс
69
Конец фильма
ПОЛЯКОВ Константин Юрьевич
д.т.н., учитель информатики
ГБОУ СОШ № 163, г. Санкт-Петербург
[email protected]
ЕРЕМИН Евгений Александрович
к.ф.-м.н., доцент кафедры мультимедийной
дидактики и ИТО ПГГПУ, г. Пермь
[email protected]
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru

70. Источники иллюстраций

Алгоритмы и программирование, 7 класс
70
Источники иллюстраций
1.
авторские материалы
К.Ю. Поляков, Е.А. Ерёмин, 2022
http://kpolyakov.spb.ru
English     Русский Rules