Программирование на языке Turbo Pascal


ТЕМА №7: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ


ПРОГРАММНО -  ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. Turbo-Pascal 5.

ЦЕЛИ И ЗАДАЧИ: Знакомство с операторами графики языка Turbo-Pascal.  Выработка навыков работы  в Turbo-Pascal. Решение практических задач с использованием операторов графики.

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

-        Что такое графический режим;

-        Систему координат графического языка Turbo-Pascal;

-        Какие модули содержат графические процедуры (нестандартные операторы);

-        Основные операторы графики;

-        Как инициализировать и закрывать графический режим.

Учащиеся должны уметь:

-        Задавать координаты  точек на экране монитора;

-        Грамотно инициализировать графический режим;

-        Правильно использовать операторы графики;



-        Составлять программы с использование операторов графики;

ПЛАН-СОДЕРЖАНИЕ УРОКА

Модули Turbo Pascal. Модуль crt. Модуль graph.

В языке Turbo Pascal основная часть процедур и функций находится в так называемых модулях:

  • Модуль crt, содержащий процедуры и функции, организующие связь с консолью компьютера. Консолью компьютера называется его монитор и клавиатура.
  • Модуль graph, в котором находятся процедуры и функции, организующие работу в графическом режиме.
  • Работа Turbo Pascal может быть организована в двух режимах (экранах).

    • Текстовой экран, в котором могут отображаться только символы (25 строк по 80 символов в каждой).
    • Графический экран, в котором изображение представляется в виде точек, именуемых пикселями. Размер этого экрана зависит от типа монитора, чаще всего 640х480 пикселов. Нулевая точка системы координат находится в верхнем левом углу экрана. Это связано с тем, что в процессе создания изображения на экране, электронный луч в кинескопе движется так же, как мы читаем текст – из верхнего левого угла слева направо, и сверху вниз. Координаты точек могут принимать только целые значения.

    • Инициализация графического режима.

      Для инициализации графического режима необходимо подключение модуля graph, кроме того объявить две целочисленные переменные gd, gm, которы используются при инициализации режима. Собственно инициализация происходит при записи в первую из переменных номер драйвера, соответствующий автоматически определенному типу монитора (gd:=detect;). А так же при выполнении процедуры initgraph(gd,gm,'');. При этом в переменную gm записывается номер графического режима, а '' обозначает, что поиск графического драйвера надо проводить в текущем каталоге. Пример инициализации графического режима:

      uses crt, graph; {подключение модулей}

       var gd,gm:integer;

      begin

       clrscr;

       gd:=detect; initgraph(gd,gm,'');

       . . . . . . . . . . . . . . . . . .

      При использовании графического режима, процедуры ввода/вывода текстового режима (write, writeln и read, readln) не работают. Перед их использование сначала производится закрытие графического режима с помощью процедуры closegraph.

      Кроме того, для задания графического режима можно использовать технические характеристики, которые можно самим определить. Для определения типа вашего монитора (функция getdrivername), максимальных значений его координат по осям x

      (функция getmaxx) и y

      (функция getmaxy), а также максимального номера цвета (функция getmaxcolor) можно использовать следующую программу:

      program monitor;

       uses crt, graph; {подключение модулей}

       var gd,gm,xmax,ymax,maxcolor:integer;

      begin

       clrscr;

       gd:=detect; initgraph(gd,gm,'');

      {автоматическое определение типа монитора и запись номера драйвера в переменную gd; переменной gm присваивается номер соответствующего графического режима, а два апострофа означают, что поиск графического драйвера надо производить в текущем каталоге}

      xmax:=getmaxx; ymax:=getmaxy; maxcolor:=getmaxcolor;

       closegraph; {Закрытие графического экрана}

       writeln ('xmax=',xmax,' ymax=',ymax,' maxcolor=',maxcolor,' ',getdrivername);

       repeat until keypressed; end.

      Для монитора типа SVGA программа выдаст строку:



      xmax=639 ymax=479 maxcolor=15 EGAVGA

       

      Графические процедуры.

      -        Процедура setcolor (c) производит установку текущего цвета, процедура setbkcolor (c) производит установку цвета фона. c – номер или наименование цвета.

      0 – black

      4 – red

      8 – darkgray

      12 – lightred

      1 – blue

      5 – magenta

      9 – lightblue

      13 – lightmagenta

      2 – green

      6 – brown

      10 – lightgreen

      14 – yellow

      3 – cyan

      7 – lightgray

      11 – lightcyan

      15 – white

      -        Процедура setfillstyle (n, c) устанавливает тип заливки для замкнутой фигуры. n – номер или наименование шаблона заполнения, c – цвет заполнения.

      -        Процедура floodfill (x, y, c) после установления типа заливки производит заполнение замкнутой фигуры. x, y – координаты какой-либо точки внутри этой фигуры, c – цвет границы заполняемой фигуры.

      0

      emptyfill

      сплошная заливка текущим цветом фона

      1

      solidfill

      сплошная заливка текущим цветом вывода

      2

      linefill

      штриховка горизонтальными линиями --------

      3

      ltslashfill

      штриховка линиями вида ////

      4

      slashfill

      штриховка утолщёнными линиями вида ////

      5

      bkslashfill

      штриховка линиями вида \\\\

      6

      ltbkslashfill

      штриховка утолщёнными линиями вида \\\\

      7

      hatchfill

      заливка узором вида ++++++

      8

      xhatchfill

      заливка узором вида ххххххх

      9

      interleavefill

      частые пересекающиеся штрихи

      10

      widedotfill

      заливка узором – редкие точки

      11

      closedotfill

      заливка узором – частые точки

      12

      userfill

      шаблон пользователя

      -        Процедура setlinestyle (s, p, t) позволяет изменить стиль линии. S – номер или наименование стиля, p – задаёт шаблон линии только в том случае, если параметр s=4, в остальных случаях p=0, t – задаёт толщину линии и может иметь следующие значения: normwidth=1 (нормальная толщина – установлена по умолчанию); thickwidth=3 (утолщённая линия).

      0

      solidln

      сплошная линия – установлена по умолчанию

      1

      dottedln

      точечная линия

      2

      centerln

      штрих-пунктирная линия

      3

      dashedln

      пунктирная линия

      4

      userbitln

      Линия, заданная пользователем

      <


      -        Процедура line (x1, y1, x2,y2) проводит текущим цветом отрезок прямой между точками с координатами x1, y1 и x2, y2.

      -        Процедура putpixel (x, y, c) рисует точку (пиксель) с координатами x, y цвета c.

      -        Процедура getpixel (x, y) позволяет определить цвет точки с координатами x, y.

      -        Процедура circle (x, y, r) рисует текущим цветом окружность с центром в точке имеющей координаты x, y и радиусом r.

      -        Процедура arc (x, y, nangl, kangl, r) рисует дугу окружности с радиусом r, с центром в точке имеющей координаты x, y, начальный угол дуги nangl, заданный в градусах, конечный угол дуги kangl, заданный в градусах (с отсчётом против часовой стрелки!!!).

      -        Процедура pieslice (x, y, nangl, kangl, r) используя те же параметры, что и процедура arc рисует текущим цветом сектор круга, закрашенный в текущем стиле. Чувствительна к масштабированию по осям.

      -        Процедура ellipse (x, y, nangl, kangl, rx, ry)

      рисует текущим цветом дугу эллипса, с центром в точке имеющей координаты x, y. Начальный угол дуги - nangl, заданный в градусах, конечный угол дуги  - kangl, заданный в градусах, rx радиус эллипса по оси x, ry радиус - по оси y (если nangl=0, а kangl=360, рисуется эллипс).

      -        Процедура sector (x, y, nangl, kangl, rx, ry)

      используя те же параметры, что и процедура ellipse рисует текущим цветом сектор эллипса, закрашенный в текущем стиле.

      -        Процедура rectangle (x1, y1, x2, y2) рисует текущим цветом прямоугольник с координатами верхнего левого угла x1, y1 и координатами правого нижнего угла x2, y2, при этом x1<=x2 и y1<=y2.

      -        Процедура bar (x1, y1, x2, y2) рисует текущим цветом прямоугольник, закрашенным в текущем стиле.



      -        Процедура bar3d (x1, y1, x2, y2, d, v) рисует текущим цветом параллелепипед, закрашенный в текущем стиле. Координаты задают левый верхний и правый нижний углы передней грани. Ширина боковой d грани исчисляется числом пикселей по горизонтали. Если задают выражение v=true, верхняя грань «видна», иначе она не вычерчивается (случай, когда параллелепипед «накрыт» другим изображением).

      -        Процедура lineto (x, y) проводит текущим цветом линию из текущей позиции в точку с заданными координатами, перемещая в неё и текущую позицию.

      -        Процедура moveto (x, y) устанавливает новые координаты текущей позиции.

      -        Процедуры getx и gety выдают текущее положение курсора по координатам x и y соответственно.

      -        Процедура linerel (dx, dy) изменяя на величину dx и dy координату x и y текущей позиции, проводит текущим цветом линию между старой и новой позицией.

      -        Процедура moverel (dx, dy) изменяет координаты x и y текущей позиции на величину dx и dy соответственно.

      -        Процедура outtextxy (x, y, ‘text’) для вывода текста в графическом режиме, процедура перемещает текущую позицию в точку с координатами x, y и выводит строку text, кроме того, можно вместо текстовойконстанты использовать строковую переменную.

      -        Процедура settextstyle (sh, n, r) позволяет манипулировать стилем текста. Sh (шрифт) - имеет значения 0..4 (0 – матричный шрифт; 1 – триплекс; 2 – мелкий; 3 – прямой; 4 – готический, 1 – 4 для кириллицы не поставляются!!!). N (направление) - имеет значение 0 – текст идёт слева направо и 1 – текст идёт снизу вверх, по вертикали, символы «положены на бок». R (размер шрифта) - коэффициент увеличения 1..10.

      -        Задержка изображения на экране на доли секунды delay(5000);



      -        Очистка графического экрана    Cleardevice;

      Примеры операторов графики:

      -          Линия - line(200,200,400,400);

      -          Круг - circle(500,300,50);

      -          Прямоугольник rectangle - (100,100,600,400)

      -          Квадрат - bar(50,50,200,100);

      -          Куб - bar3d(200,200,250,300,40,topon);

      -          Эллипс - ellipse(500,100,0,360,10,30);

      -          Изменение цвета фона - setbkcolor(0);

      -          Изменение цвета переднего плана - setcolor(5);

      -          Точка - putpixel(100,100,14);

      -          Текст в графическом режиме - outtextxy(300,300,'ura');

      -          Заливка замкнутого контура:

                             setfillstyle(1,14);

                             floodfill(500,300,15);

      Принципы организации движения графических фигур:

      Можно оживить изображение на экране, если воспользоваться принципами анимации: нарисовать, стереть (нарисовать цветом фона),  нарисовать в новом месте и т.д.


      Содержание раздела