Разработка урока "Анимация" 10 класс

Государственное образовательное учреждение
средняя общеобразовательная школа № 1200 с углубленным изучением английского языка
РАЗРАБОТКА УРОКА
Предмет: Информатика и ИКТ
Тема: «Анимация»
Учитель: Сергеева Галина Владимировна
Класс: 10 «А»
Москва, 2008-2009 учебный год
2
I. Место урока в курсе.
Тема «Технология визуального объектно-ориентированного программирования» в
общеобразовательных 10 классах рассчитана на 28 часов (1 час в неделю). Данный урок
является девятым по счету. К этому уроку учащиеся знают:
основные понятия объектно-ориентированного программирования (объект,
свойство, метод);
алгоритмические структуры: линейную, ветвление, циклическую,
вспомогательный алгоритм;
оператор присваивания и его свойства;
оператор цикла с параметром For Next.
Учащиеся умеют:
использовать графические методы языка Visual Basic: Scale, Pset, Line,Circle;
программировать построение изображений, состоящих из одиночных
графических примитивов;
программировать построение семейств простейших графических примитивов:
линий, прямоугольников, окружностей, эллипсов, дуг с применением оператора
цикла с параметром For Next.
Понимание принципа работы цикла с параметром позволит учащимся понять работу
вложенных циклов, а также в дальнейшем алгоритмы обработки одномерных и
двумерных массивов, которые являются основой статистической обработки данных.
Понимание работы основных алгоритмических конструкций облегчит дальнейшее
обучение в ВУЗах по техническим, экономическим и финансовым специальностям.
II. Цели урока.
Обучающая цель урока научить применять цикл с параметром для программирования
движения графических объектов.
Развивающая цель формирование у учащихся алгоритмического мышления.
Воспитательная цель формирование привычки выполнять учебные задания по
этапам, от простого к сложному, не отказываться от выполнения учебного задания
только потому, что оно на первый взгляд кажется невыполнимым.
IV. Тип урока применение ранее приобретенных знаний и навыков в новых условиях.
IV. Этапы урока.
1. Приветствие, организационные моменты.
2. Проверка домашнего задания.
3. Актуализация знаний. Поиск преднамеренных ошибок в циклическом алгоритме
и их исправление с объяснением.
4. Краткая справка об истории мультипликации. Формулирование принципа
программирования движения графического объекта на экране монитора.
Постановка проблемы.
5. Поэтапная разработка программы движения объекта.
6. Объяснение и запись домашнего задания.
V. Ход урока.
1. Приветствие, заполнение учителем журнала (отсутствующие).
2. Проверка домашнего задания. Один ученик записывает на доске фрагмент
программы построения семейства отрезков, расходящихся лучами из точки (0,0).
Остальным учащимся тем временем предлагается ответить на вопросы:
3
Для чего в программировании используется цикл с параметром? (Для
программирования повторяющихся действий).
Какой оператор в языке VB служит для записи цикла с параметром?
(For Next).
На какие вопросы нужно ответить при построении семейства графических
примитивов с использованием оператора цикла с параметром? (1. Какие
действия являются повторяющимися? Именно они составят тело цикла.
2. Значениями какой переменной различаются повторяющиеся действия? Эту
переменную нужно принять за параметр цикла. 3. В каких пределах и с каким
шагом будет изменяться параметр цикла?)
На доске записан фрагмент программы:
Dim x,y As Integer
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 100 Step 5
Pic1.Line (0,0) (x,100), vbGreen
Next x
For y=0 To 100 Step 5
Pic1.Line (0,0) (100,y), vbGreen
Next y
End Sub
Ученик у доски отвечает на вопросы:
Какой графический метод составляет тело циклов? (Метод Line).
Что является параметром цикла при построении семейства зеленых отрезков? В
каких пределах он изменяется? (Координата х; от 0 до 100 с шагом 5).
Что является параметром цикла при построении семейства красных отрезков? В
каких пределах он изменяется? (Координата y; от 0 до 100 с шагом 5).
3. Актуализация знаний. Учащимся предлагается обратиться к экранам мониторов, на
которых представлен слайд с фрагментом программы, в программе преднамеренно
сделано несколько ошибок. Их задача найти ошибки, исправить их и объяснить свои
действия.
Исходный вариант
Конечный вариант
Rem Семейство закрашенных квадратиков,
расположенных вдоль оси Х
Rem Семейство закрашенных квадратиков,
расположенных вдоль оси Х
Frm1.Scale (0,100)-(100,0)
Frm1.Scale (0,100)-(100,0)
For x=0 To 100 Step 5
For x=0 To 95 Step 5
Frm1.Line (x,0)-(x,y),,BF
Frm1.Line (x,0)-(x+4,4),,BF
Next y
Next x
Ошибка № 1. Цикл открыт по переменой x, а закрыт по переменной y.
Ошибка 2. Вторая координата обозначена переменной y, а ее значение не
определено. Нужно заменить ее числовой константой, например, 4. Что будет, если задать
ее значение равным 5 или 7? (Квадратики сольются в одну полоску).
Ошибка 3. У квадратиков нет ширины и они вырождаются в прямые. Вместо х
нужно задать х+4 или записать в относительных координатах: Line (x,0)-Step(4,4).
Недочет. Не совсем точно определено граничное значение параметра цикла х.
0,0
4
После того, как все ошибки исправлены, учитель предлагает построить это
изображение (проект на VB), а затем заставить квадратик «летать».
1. Краткая справка об истории мультипликации. Принцип программирования движения
объекта на экране. Постановка задачи.
Мультипликация старше натурального кино. Ее столетие отмечалось в 1977 году, на родине
рисованного фильма во Франции, в городе Аннеси, где раз в два года проходит один из крупнейших
мультипликационных фестивалей мира. Отсчет времени надо вести с момента изобретения аппарата,
способного «одушевлять» рисунки. 20 июля 1877 года талантливый изобретатель, инженер-самоучка
Эмиль Рейно сделал в академии искусств Франции сообщение о своих работах и продемонстрировал
сконструированный им аппарат праксиноскоп нечто вроде механической игрушки с лентой, испещренной
картинками, и вращающимся зеркальным барабаном. Спустя месяц с небольшим, 30 августа, изобретателю
был выдан официальный патент. В дальнейшем Эмиль Рейно усовершенствовал свой аппарат. Рисованные
пантомимы, длившиеся от семи до пятнадцати минут, были не только раскрашены от руки, но и имели, хотя
и примитивное, приспособление для синхронизации звука и изображения. В трех своих последних фильмах
наряду с рисунками Рейно применял фотографии. Принципиально новый элемент эстрадно-цирковой
аттракционности внес в мультипликацию американский режиссер Уиндзор Мак-Кей. Новый импульс
рисованный фильм получил с созданием первого популярного постоянного героя кота Феликса. Под его
влиянием в мультипликации появилось множество персонажей-животных. Влияние «стандартов»,
выработанных американской, главным образом рисованной мультипликацией в период 20–30х годов,
распространилось в это время на европейскую мультипликацию.
Известно, что именно Россия была родиной объемно-мультипликационного кино, созданного
Владимиром Старевичем. Он же поставил и первые в дореволюционной России рисованные фильмы.
Мультипликация область вымысла и реальности, мост, соединяющий фантазию с действительностью.
Если изобразить какую-нибудь фигурку в разных фазах движения, например, на
концах страниц толстой книги, а затем быстро пролистывать страницы, то появляется
иллюзия движения фигурки. Этот принцип и положен в основу программирования
движения объекта на экране.
Наша задача заставить двигаться квадратик из точки (0,0) в точку (100, 100).
Нужно изобразить квадратик в одной фазе движения, немного задержать его на экране, а
затем стереть и показать следующую фазу движения. Реализовать эту идею нам поможет
цикл с параметром. Для того, чтобы стереть старую фазу движения, нужно нарисовать на
старом месте точно такое же изображение, но цветом фона.
5. Поэтапная разработка программы движения объекта.
5.1. Запускаем Visual Basic 5.0. Задаем свойства формы: Caption= «Анимация»;
BackColor по желанию. Наносим на форму управляющие объекты Command
Button CmdStart и PictureBox Pic1. Pic1.BackColor=vbBlack.
5
5.2. Пишем программный код для построения семейства закрашенных квадратиков,
ориентированных вдоль оси x (эта задача уже разобрана в деталях).
Dim x As Integer
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 95 Step 5
Pic1.Line (x,0) Step (4, 4), vbGreen, BF
Next x
End Sub
5.3. Как расположить квадратики, чтобы они были направлены из нижнего левого угла
в верхний правый?
Пусть значение координаты х будет равно значению координаты y. Тогда квадратики
будут расположены вдоль главной диагонали окна PictureBox. При этом можно
обойтись одним параметром цикла.
Dim x,y As Integer
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 95 Step 5
Pic1.Line (x,x) Step (4, 4), vbGreen, BF (*)
Next x
End Sub
5.4. Попробуем заставить квадратики двигаться. Замаскируем старое положение
квадратика под цвет фона. Для этого скопируем строку (*), вставим ее следом за
первой, но зеленый цвет заменим на черный цвет фона.
Dim x As Integer
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 95 Step 5
Pic1.Line (x,x) Step (4, 4), vbGreen, BF (*)
Pic1.Line (x,x) Step (4, 4), vbBlack, BF (**)
Next x
End Sub
Запустите проект. Что вы видите? Ничего. Как вы думаете, почему? Квадратик так
быстро стирается, что наш глаз не успевает его зафиксировать. Между строками (*) и
(**) нужно сделать задержку. Можно воспользоваться оператором Sleep, но лучше
заставить компьютер досчитать до 3000000 между фазами рисования и стирания с
помощью пустого цикла (цикла, у которого отсутствует тело цикла). Не забудьте
описать новую переменную z.
0,0
0,0
6
Dim x As Integer
Dim z As Single
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 95 Step 5
Pic1.Line (x,x) Step (4, 4), vbGreen, BF (*)
For z = 1 To 3000000
Next z
Pic1.Line (x,x) Step (4, 4), vbBlack, BF (**)
Next x
End Sub
Граничное значении параметра z подберите экспериментальным путем.
5.5. Теперь заставим квадратик двигаться в обратном направлении. Для этого нужно
поменять местами начальное и конечное значение параметра x. Не забудьте
сделать отрицательным значение шага, ведь теперь координата изменяется от
большего значения к меньшему.
Dim x As Integer
Dim z As Single
Private Sub CmdStart_Click()
Pic1.Scale (0,100) (100,0)
For x=0 To 95 Step 5
Pic1.Line (x,x) Step (4, 4), vbGreen, BF (*)
For z = 1 To 3000000
Next z
Pic1.Line (x,x) Step (4, 4), vbBlack, BF (**)
Next x
For x=95 To 0 Step -5
Pic1.Line (x,x) Step (4, 4), vbGreen, BF (*)
For z = 1 To 3000000
Next z
Pic1.Line (x,x) Step (4, 4), vbBlack, BF (**)
Next x
End Sub
5.6. Работает. Но практически одни и те же строки пришлось повторять два раза. Цикл
в данном случае использовать нельзя. Но можно применить вспомогательный
алгоритм. А в языке VB он оформляется в виде общей процедуры. Разговор об
общих процедурах у нас еще впереди. Пусть не расстраиваются те, кто не усвоит
это понятие с первого раза. А для тех, кто понял, о чем идет речь, можно
предложить следующее красивое решение.
Dim x, A, B, S, T As Integer
Dim z As Single
Private Sub CmdStart_Click()
Pic1.Scale (0, 100)-(100, 0)
A = 0: B = 95: S = 5
Call Way
T = A: A = B: B = T: S = -S
Call Way
End Sub
Private Sub Way()
For x = A To B Step S
Pic1.Line (x, x)-Step (4, 4), vbGreen, BF
For Z = 1 To 3000000
7
Next Z
Pic1.Line (x, x)-Step (4, 4), vbBlack, BF
Next x
End Sub
Обозначим начальное значение параметра x как A, граничное значение B, шаг S.
Вспомогательная переменная Т будет необходима для обмена значениями между
переменными A и B. Переменная Т будет играть роль временной «камеры хранения»,
иначе мы потеряем одно из значений или В) вспомните тему «Операция
присваивания».
Повторяющиеся действия опишем общей процедурой Way и дважды будем
вызывать ее из основного алгоритма: сначала х будет изменяться от 0 (А) до 95 (В) с
шагом 5, а затем А и В поменяются местами, а S станет равным S. Вызов общей
процедуры из основного алгоритма осуществляется служебным словом Call, а далее
указывается имя процедуры.
Запустите программу в новом варианте. Как же теперь из нее выйти? Квадратик так
и будет летать до бесконечности? Ведь это противоречит определению алгоритма,
который состоит из конечного числа шагов.
5.7. Добавим необходимое количество повторений, например 5, с помощью еще
одного цикла (его параметр J изменяется от 1 до 5 и играет роль счетчика
повторений).
Dim x, A, B, S, T As Integer
Dim z As Single
Dim J As Byte
Private Sub CmdStart_Click()
Pic1.Scale (0, 100)-(100, 0)
For J = 1 To 5
A = 0: B = 95: S = 5
Call Way
T = A: A = B: B = T: S = -S
Call Way
Next J
End Sub
Private Sub Way()
For x = A To B Step S
Pic1.Line (x, x) - Step (4, 4), vbGreen, BF
For Z = 1 To 3000000
Next Z
Pic1.Line (x, x)-Step (4, 4), vbBlack, BF
Next x
End Sub
Теперь программа полностью готова. Сохраните проект в отдельной папке.
6. А теперь подведем итог и сформулируем основные этапы программирования
движения графического изображения:
в цикле с параметром нарисовать семейство примитивов;
добавить в цикл оператор, маскирующий изображение под цвет фона;
между фазами рисования и стирания сделать задержку.
Домашнее задание: составить программу движения небольшого закрашенного круга в
горизонтальном направлении. Те, у кого нет возможности сделать задачу на компьютере,
составляют программу в тетради.
Выставление оценок за ответ у доски и с места.
8
Литература:
А) Н. Угринович Информатика и информационные технологии. 10-11 классы.– М.:
БИНОМ. Лаборатория знаний, 2002. с. 203
Б) Н. Угринович, Л. Босова, Н. Михайлова. Практикум по информатике и
информационным технологиям.– М.: БИНОМ. Лаборатория знаний, 2002, с. 197.
VI. Самоанализ урока.
1. Достигнута основная поставленная цель урока все учащиеся поняли принцип
программирования движения и могут назвать три основные фазы движения. На
достижение этой цели были направлены поэтапная разработка решения и наглядная
демонстрация проекта.
2. Для способных учащихся имела место пропедевтика понятия общей процедуры.
3. Полезным для закрепления знаний об операторе цикла с параметром оказался разбор
программы с ошибками. Были отобраны ошибки, наиболее часто допускаемые
учащимися. Умение найти ошибку у самого себя является важным общеучебным
навыком.
4. Надо отметить, что учащиеся с интересом создавали проект, все довели задачу до
планируемого результата. Проекты были сохранены в личных папках (эти навыки
были отработаны уже давно).
5. Формирование алгоритмического мышления как развивающая цель задача сложная,
нельзя нацелить на программирование весь класс, но четыре основные
алгоритмические структуры в подгруппе могут назвать все.