Vlivkor.Com > Статьи, Преподавание > Графика в Turbo Pascal Графика в Turbo Pascal17 ноября 2008. Разместил: lessons |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Тема “Графика в Turbo Pascal” сама по себе является интересной для учащихся. Сыграв на этом интересе, предлагаю закрепление нового материала провести в виде соревнования между командами. При проведении соревнования увеличивается активность учащихся, что положительно отражается на усвоении нового материала.
Вид занятия: комбинированное занятие. Цели занятия:
Межпредметные связи: связь c алгеброй и геометрией. Внутрипредметные связи: связь с разделами геометрии, процедуры, функции. Обеспечение занятия: компьютер + большой экран, карточки для студентов, раздаточный материал с заданиями на закрепление, интерфейс среды программирования Turbo Pascal. Основная литература:
Дополнительная литература:
Требования к результатам усвоения учебного материала. Студенты должны знать:
Студенты должны уметь:
Содержание занятия1. Организационный момент.Приветствие. Проверка присутствующих. Постановка цели. Формирование мотивации к изучению темы. 2. Изучение нового материала.Понятие графического адаптера. Аппаратная поддержка графики персонального компьютера обеспечивается двумя основными модулями: видеоадаптером и видеомонитором. Видеомонитор – это устройство, на котором появляется выводимый текст или графические изображения. Видеоадаптеры – это электронные устройства, управляемые собственным микропроцессором. При работе с экраном в графическом режиме очень важным является то, что любая информация представляет собой совокупность пикселей. Каждый пиксель определяется своими координатами, т.е. положением относительно левого верхнего угла экрана. С помощью программ можно управлять светимостью и цветом любого пикселя, т.е. создавать любое изображение. Рассмотрение работы в графическом режиме: Для управления экраном в графическом режиме с помощью программ в Turbo Pascal существуют специальные графические процедуры и функции. Описание этих процедур и функций содержится в специальном библиотечном модуле CRAPH. Запуск графической системы. Для запуска графической системы необходимо сделать следующее:
С этого момента все графические средства доступны пользователю. Процедуры и функции модуля CRAPHПроцедуры. Arc (X,Y:Integer; U1, U2, R:Word) Строит дугу окружности текущим цветом с текущими параметрами линии. X, Y – координаты центра дуги; U1 – угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной с лева на право; U2 – угол до конечной точки дуги, отсчитываемый так же, как U1; R – радиус дуги. Bar (X1, Y1, X2, Y2:Integer) Строит прямоугольник, закрашенный текущим цветом с использованием текущего стиля (орнамента, штриховки). X1, Y1, X2, Y2 – координаты левого верхнего и правого нижнего углов прямоугольника. Bar3D (X1, Y1, X2, Y2:Integer; Glubina: Word; Top:Boolean) Строит параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, Y2 – координаты левого верхнего и правого нижнего углов передней грани; Glubina – ширина боковой грани (отсчитывается по горизонтали); Top – признак включения верхней грани (если True – верхняя грань вычерчивается, False – не вычерчивается). Circle (X, Y: Integer; R: word) Рисует текущим цветом окружность радиуса R с центром в точке (X, Y). ClearDevice Очищает графический экран, закрашивает его в цвет фона. ClearViewPort Очищает выделенное графическое окно, закрашивает его в цвет фона. CloseGraph Закрывает графический режим, т. е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана. Ellipse (X, Y: Integer; U1, U2, XR, YR: Word) Рисует дугу эллипса текущим цветом. X, Y – координаты центра эллипса; U1, U2 – углы до начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, XY – горизонтальная и вертикальная полуоси эллипса. Fill Ellipse (X, Y: Integer; U1, U2, XR, YR: Word) Рисунт заштрихованный эллипс, используя X, Y как центр и XR, YR как горизонтальную и вертикальную полуоси эллипса. FillPoly (N: Word; Var PolyPoints) Рисует и штрихует многоугольник, содержащий N вершин с координатами в поле PolyPoints. InitGraph (Var Driver, Mode:Integer; Path: String) Организует переход в графический режим. Переменные Driver и Mode содержат тип графического драйвера и его режим работы. Третий параметр определяет маршрут поиска графического драйвера. Если строка пустая (т.е. равна ’’), считается, что драйвер находится в текущем каталоге. Line (X1, Y1, X2, Y2:Integer) Рисует линию от точки X1, Y1, до точки X2, Y2. LineTo (X,Y:Integer) Рисует линию от текущего указателя к точке X, Y. MoveTo (X,Y:Integer) Смещает текущий указатель к точке X, Y. OutTextXY (X,Y:Integer; TextString: String) Выводит текст в заданное место экрана. PieSlice (X,Y:Integer; U1, U2, Radius: Word) Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения. X, Y – координаты центра сектора круга; U1 и U2 – начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной в право; Radius – радиус сектора. PutPixel (X,Y:Integer; Color: Word) Выводит точку цветом Color с координатами X, Y. Rectangle (X1, Y1, X2, Y2) Рисует контур прямоугольника, используя текущий цвет и тип линий. X1, Y1 – координаты левого верхнего угла прямоугольника; X2, Y2 - координаты левого правого нижнего угла прямоугольника. Sector (X, Y: Integer; U1, U2, XR, YR: Word) Рисует и штрихует сектор эллипса радиусом XR, YR с центром в X, Y от начального угла U1 к конечному углу U2. SetBkColor (Color: Word) Устанавливает цвет фона. SetColor (Color: Word) Устанавливает основной цвет рисования. SetFillStyle (Pattern, Color: Word) Устанавливает образец штриховки и цвета. SetLineStyle (LineStyle, Pattern, Thickness: Word) Устанавливает толщину и цвет линии. SetTextStyle (Font, Direction, CharSize: Word) Устанавливает текущий шрифт, направление (горизонтальное или вертикальное) и размер текста. SetViewPort (X1, Y1, X2, Y2:Integer; ClipOn: Boolean) Устанавливает прямоугольное окно на графическом экране. Параметр ClipOn определяет “отсечку” элементов изображения, не умещающихся в окне. Функции. GetMaxX и GetMaxY Возвращает значения максимальных координат экрана в текущем режиме работы соответственно по горизонталь и вертикали. GraphResult Возвращает значение GrOk, соответствующее коду 0, если все графические операции программы выполнились без ошибок, или возвращает числовой код ошибки (от -1 до -14). Закрытие видеорежима. Когда все запланированные графические работы выполнены, необходимо выйти из графического режима. Это делается с помощью не имеющей параметров процедуры ClozeGraph. В процессе выполнения эта процедура освобождает память, распределенную под драйверы графики, файлы шрифтов и промежуточные данные, и восстанавливает режим работы адаптера в то состояние, в котором он находился до выполнения инициализации системы. Использование процедур и функций при решении задач. Рассмотрение структуры программы. Построить правильный многоугольник с заданным числом сторон. Решение. Центр многоульника совмещаем с центром экрана. Пусть N – число его сторон. Центральный угол стороны Angle=2 * Pi / N. Начальную вершину многоугольника поместим на горизонтальной оси (правее центра). Угол наклона i-й вершины к оси Х составляет Angle * i, а ее центральные координаты X, Y – X = round (R*cos(Angle*i)); Где R – радиус описанной окружности. Проводим i-ю сторону, соединяя линией найденную i-ю и предыдущую вершины. Выполнив это построение для всех i от 1 до N, получим наш многоугольник. (Отметим, что N-я вершина совпадает с начальной .) { Построение правильного многоугольника с N сторонами} 3. Закрепление и обобщение изученного материала.Закрепление изученного материала рекомендую провести следующим образом. Группу студентов разделить на две команды и провести состязание. Состязание содержит три задания.
4. Домашнее задание.[1, с. 367 - 387]. Решить задачи 7, 10 на стр. 420, построить график функции другого варианта. 5. Итоги занятия.Выставление оценок за работу в командах. “Чему мы сегодня научились?” (Перечисляем, вспоминаем.) “Гости сами решат, к какой компании обратиться за изготовлением программных продуктов”. <!--[if gte mso 9]> Normal 0 false false false RU X-NONE X-NONE MicrosoftInternetExplorer4 <!--[if gte mso 9]> <!-- --><!--[if gte mso 10]> <!--[endif]--> ПРИЛОЖЕНИЕ 1. Построить график функции у=sin x. Учитывая центральную симметрию кривой y=sin x, начало координатной системы графика поместим в центр экрана, а оси направим, как обычно, направо и вверх. Другими словами, используется центральная система координат. Сначала выбираем масштаб по обеим осям, сообразуясь с заданными размерами поля чертежа. Угол х в градусной мере варьирует от -180 до 180 градусов, т.е. амплитуда по х составляет 360 градусов (период функции sin x). Будем считать, что нам задан процент использования ширины экрана PrW. Тогда масштаб по оси Х выражается как Mx=PrW/100*W/360, где W - ширина экрана. Аналогично амплитуда измерения функции sin x составляет, как известно, 2, и масштаб по оси Y выражается как Mн=PrH/100*H/2, Где H - высота экрана, а PrH - заданный процент использования высоты экрана. Переходим к построению графика. Выберем, достаточно малый шаг StX угла х (например, StX=5). Пусть xb - последнее уже использованное значение х, а Xcb и Ycb - центральные координаты последней точки на графике. Тогда хе =xb+StX - новое значение х, а центральные координаты новой точки выражаются как Xce=round (Mx*xe) Yce=round (My*sin(xe*Pi/180)) Соединяем точки (Xcb,Ycb) и (Xce, Yce) прямолинейным отрезком, переобозначаем: Xcb=Хcе и Ycb= Yce - и продолжаем это построение до тех пор, пока хе не получит значение 180 градусов. Осталось указать координаты начальной точки: Xcb =round (Mx * -180), Ycb=0 (поскольку синус угла -180 равен нулю).
Язык Паскаль.
{Построение графика функций y=sin(x)} uses graph, crt; Const PrW=70; {процент использования ширины экрана} PrH=70; {процент использования высоты экрана} StX=5; {шаг угла х} PATH=' ‘; {файлы *.BGI находятся в рабочем каталоге} Var W,H,gd,gm,x,Xc,Yc,XcMax,YcMax: integer; Mx,My:real; {масштаб по осям X и Y} Y:real; {Переход от центральных координат к экранным} Procedure WH(var W,H:integer); {ширина и высота экрана} Begin {функция GetMaxY и GetMax X возвращают максимальные значения соответствующих экранных координат} W:=( GetMax X+1); {ширина} H:=( GetMaxY+1); {высота} End; Fuction Xscr(X:integer):integer; Begin Xscr:=x + W div 2 end;
Fuction Yscr(Y:integer):integer; Begin Yscr:=H div 2-Y end; Begin Gd:=DETECT; Initgraph (gd,gm,path); WH(W,H); {определяем ширину и высоту экрана} {Интервал изменения угла X от -180 до 180 гродусов} Mx := PrW/100*W/360; {Интервал изменения sinx от -1 до1} My:= PrH/100*H/2; XcMax := round(Mx*180); {Максимальная центральная координата по X} YcMax := round(My); {Максимальная центральная координата по Y} SetColor(Yellow); {Цвет желтый} Line(Xscr(-XcMax), Yscr(0), Xscr( XcMax), Yscr(0)); {ось X} Line(Xscr(0), Yscr(-YcMax), Xscr(0), Yscr(YcMax)); {ось Y} x:=-180; {начальное значение x. sin(-180)=0} {Ставим курсор в начальную точку на графике} MoveTo(Xscr(-XcMax), Yscr(0)); repeat {цикл графика} x:=x+StX; {новое значение угла x} y:=sin(x*Pi/180); {значение функции} Xc;=round(Mx*x); {центральная координата по X} Yc;=round(My*y); {центральная координата по Y} {Проводим отрезок от старой до новой точки на графике} LineTo(Xscr(Xc), Yscr(Yc)); until x>=180; {цикл графика} repeat until keypressed; {Выход - нажатием любой клавиши} CloseGraph; {Переходв текстовый режим} END. ПРИЛОЖЕНИЕ 2 <!--[if gte mso 9]> Normal 0 false false false RU X-NONE X-NONE MicrosoftInternetExplorer4 <!--[if gte mso 9]> <!-- --><!--[if gte mso 10]> <!--[endif]--> Кроссворд по процедурам. По горизонтали: 4) Очищает выделенное графическое окно, закрашивает его в цвет фона. (ClearViewPort). 5) Рисует линию от точки до точки. (Line). 9) Рисует контур прямоугольника, используя текущий цвет и тип линий. (Rectangle). 11) Смещает текущий указатель к точке X,Y. (MoveTo). 12) Устанавливает текущий шрифт, направление (горизонтальное или вертикальное) и размер текста. (SetTextStyle). 15) Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения.(PieSlice). 17) Устанавливает цвет фона. (SetBkColor). 20) Организует переход в графический режим. (InitGraph). 23) Выводит текст в заданное место экрана. (OutTextXY). 24) Рисует текущим цветом окружность радиуса с центром в точке. (Circle). 25) Строит параллелепипед, используя текущий стиль и цвет. (Bar3D).
По вертикали: 1)Выводит точку цветом Color с координатами X, Y. (PutPixel). 2)Строит прямоугольник, закрашенный текущим цветом и использованием текущего стиля (орнамента, штриховки). (Bar). 3)Устанавливает толщину и стиль линии. (SetLineStyle). 6) Рисует линию от текущего указателя к точке. (LineTo). 7) Рисует дугу эллипса текущим цветом. (Ellipse). 8) Устанавливает прямоугольное окно на графическом экране. (SetViewPort). 10) Строит дугу окружности текущим цветом с текущими параметрами линии. (Arc). 13) Устанавливает основной цвет рисования. (SetColor). 14) Рисует заштрихованный эллипс, используя X,Y как центр и XR,YR как горизонтальную и вертикальную полуоси эллипса. (FillElipse). 16) Устанавливает образец штриховки и цвет. (SetFillStyle). 18) Рисует и штрихует сектор эллипса. (Sector). 19) Очищает графический экран, закрашивает его в цвет фона. (ClearDevice). 21) Рисует и штрихует многоугольник, содержащий N вершин с координатами PolyPoints. (FillPoly). 22) Закрывает графический режим, т.е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана. (CloseGraph).
|