{S_links}
{ML_links}

Vlivkor.Com > Статьи, Преподавание > Графика в Turbo Pascal
{LF_links}

Графика в Turbo Pascal


17 ноября 2008. Разместил: lessons
Тема “Графика в Turbo Pascal” сама по себе является интересной для учащихся. Сыграв на этом интересе, предлагаю закрепление нового материала провести в виде соревнования между командами. При проведении соревнования увеличивается активность учащихся, что положительно отражается на усвоении нового материала.

Вид занятия: комбинированное занятие.

Цели занятия:

  • дидактическая:
    – закрепление пройденного материала;
    – обобщение и систематизация знаний о среде программирования Паскаль;
    – освоение приемов построения простых вычислительных алгоритмов и их программирование на языке Turbo Pascal;

  • воспитательная:
    – формирование мировоззрения у студентов;
    – формирование мотивации к изучению предмета “Основы алгоритмизации и программирования”;
    – формирование чувства коллективизма, дружбы;

  • развивающая:
    – развитие логического мышления;
    – развитие навыков работы с системой программирования.

Межпредметные связи: связь c алгеброй и геометрией.

Внутрипредметные связи: связь с разделами геометрии, процедуры, функции.

Обеспечение занятия: компьютер + большой экран, карточки для студентов, раздаточный материал с заданиями на закрепление, интерфейс среды программирования Turbo Pascal.

Основная литература:

  1. Попов В.Б. Turbo Pascal для школьников: учебное пособие. – М.: ФИНАНСЫ И СТАТИСТИКА, 2002.
  2. Гусева.А.И. Учимся информатике: задачи и методы их решения. – М.: Диалог – МИФИ, 2001.
  3. Шауцукова Л.З. Информатика: –М.: Просвещение, 2003.

Дополнительная литература:

  1. Информатика: учебник Под ред. Н.В. Макаровой
  2. Правильный многоугольник. /Информатика. Еженедельное приложение к газете “ПЕРВОЕ СЕНТЯБРЯ”. – 1998. № 30

Требования к результатам усвоения учебного материала.

Студенты должны знать: 

  • особенности среды Turbo Pascal;
  • особенности работы в графическом режиме CRAPH;
  • стандартные процедуры и функции модуля CRT;
  • стандартные процедуры и функции модуля CRAPH.

Студенты должны уметь:

  • производить необходимые действия с программой;
  • работать в графическом режиме;
  • правильно применять стандартные процедуры и функции модуля CRT;
  • правильно применять стандартные процедуры и функции модуля CRAPH.

Содержание занятия

1. Организационный момент.

Приветствие. Проверка присутствующих. Постановка цели. Формирование мотивации к изучению темы.

2. Изучение нового материала.

Понятие графического адаптера.

Аппаратная поддержка графики персонального компьютера обеспечивается двумя основными модулями: видеоадаптером и видеомонитором. Видеомонитор – это устройство, на котором появляется выводимый текст или графические изображения. Видеоадаптеры – это электронные устройства, управляемые собственным микропроцессором.

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

Рассмотрение работы в графическом режиме:

Для управления экраном в графическом режиме с помощью программ в Turbo Pascal существуют специальные графические процедуры и функции. Описание этих процедур и функций содержится в специальном библиотечном модуле CRAPH.

Запуск графической системы. Для запуска графической системы необходимо сделать следующее:

  1. Подключить модуль CRAPH – библиотеку графических процедур: uses graph;
  2. Установить графический режим с помощью двух переменных:

    var DriverVar, ModeVar: integer;
    begin
    DriverVar:=Detect;
    InitGraph(DriverVar, ModeVar,’\TP\GRAPH’);

С этого момента все графические средства доступны пользователю.

Процедуры и функции модуля 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));
Y = round (R*sin(Angle*i));

Где R – радиус описанной окружности.

Проводим i-ю сторону, соединяя линией найденную i-ю и предыдущую вершины. Выполнив это построение для всех i от 1 до N, получим наш многоугольник. (Отметим, что N-я вершина совпадает с начальной .)

{ Построение правильного многоугольника с N сторонами}
uses graph, crt;
Const
   PrD:real=80; { Длина диаметра описанной окружности в % от высоты экрана}
   PATH=’’; { файлы *.BGI находятся в рабочем каталоге}
Var
   W,H,gd,gm,i,N,X,Y.R:integer;
   Angle:real;
{ переход от центральных координат к экранным}
procedure WH (var W,H:integer); { ширина и высота экрана}
begin
   { функция GetMaxX и GetMaxY возвращают максимальные значения соответствующих экранных        координат}
   W:=( GetMaxX+1); { ширина}
   H:=( GetMaxY+1); { высота}
end;
Function Xscr (X:integer):integer;
Begin Xscr:=X + W div 2 end;
Function Yscr (Y:integer):integer;
Begin Yscr:=H div 2 – Y end;
BEGIN
  repeat
     write (‘ Укажите число сторон правильного многоугольника, не менее 3’);
    readln(N);
  until N>2;
  gd:=DETECT;
  initgraph (gd,gm,path);
  WH(W,H); { определяем ширину и высоту экрана}
  R:=round(PrD*0.01/*H/2); { радиус описанной окружности}
  Angle :=2*pi/N; { центральный угол стороны в радиусах}
  MoveTo (Xscr(R), Yscr(0)); { первая вершина в экранных координатах}
  SetColor (Yellow); { цвет многоугольника - желтый}
  For i:=1 to N do begin {цикл сторон}
  {X и Y – центральные координаты очередной вершины}
  X:=round (R*cos(Angle*i));
  Y:= round (R*sin(Angle*i));
  {проводим очередную сторону}
  LineTo (Xscr(X), Yscr(Y));
  End; {цикл сторон}
  Repeat until keypressed; { выход – нажатием любой клавиши}
  CloseGraph; { переход в текстовый режим}
End.

3. Закрепление и обобщение изученного материала.

Закрепление изученного материала рекомендую провести следующим образом. Группу студентов разделить на две команды и провести состязание. Состязание содержит три задания.

  1. Построить график функции y=sin(x) (y=cos(x)). График приведен в Приложении 1.
  2. Разгадать кроссворд по процедурам модуля GRAPH. Представлен в Приложении 2.
  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).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

U

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

 

 

T

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

7

 

 

 

4

C

L

E

A

R

V

I

E

W

P

O

R

T

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

5

L

I

N

E

 

 

 

 

 

 

T

 

 

 

 

 

 

I

 

 

 

 

 

 

18

 

 

 

 

 

 

 

 

 

 

 

 

S

 

I

 

 

L

 

 

 

 

 

 

L

 

 

 

 

 

 

X

 

 

10

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

E

 

N

 

 

L

 

13

 

 

 

 

I

 

 

14

 

9

R

E

C

T

A

N

G

L

E

 

 

 

 

 

 

 

 

 

 

 

 

T

 

E

 

 

I

 

S

 

 

 

 

N

 

 

F

 

 

 

L

 

 

R

 

 

 

C

 

 

 

 

 

 

 

 

 

11

M

O

V

E

T

O

 

P

 

E

 

 

 

 

E

 

 

I

 

 

 

 

 

 

C

 

 

 

T

 

 

 

 

 

 

 

 

 

 

 

 

I

 

O

 

12

S

E

T

T

E

X

T

S

T

Y

L

E

 

 

 

 

 

 

 

 

 

O

 

 

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

E

 

C

 

 

 

 

T

 

 

L

 

 

 

 

 

 

 

 

 

 

R

 

 

 

 

 

16

 

 

 

 

 

 

W

 

 

 

 

 

 

O

 

 

 

 

Y

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

15

P

I

E

S

L

I

C

E

19

 

P

 

 

 

21

 

 

L

 

 

 

 

L

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E

 

 

 

 

C

 

O

 

 

 

F

 

 

O

 

 

 

 

E

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

17

S

E

T

B

K

C

O

L

O

R

20

I

N

I

T

G

R

A

P

H

22

 

 

 

I

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

E

 

T

 

 

 

L

 

 

 

 

 

 

C

 

 

 

P

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I

 

 

 

 

A

 

 

 

 

 

L

 

 

 

 

 

 

L

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

R

 

 

 

 

 

P

 

 

 

 

 

23

O

U

T

T

E

X

T

X

Y

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

D

 

 

 

 

 

O

 

 

 

 

 

 

S

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

 

E

24

C

I

R

C

L

E

 

 

 

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

T

 

 

 

 

V

 

 

 

 

 

Y

 

 

 

 

 

 

G

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



{SL_links}

Вернуться назад