Графические возможности языка Паскаль

Автор работы: Пользователь скрыл имя, 16 Сентября 2013 в 10:24, реферат

Краткое описание

Основная цель данной работы - изучение основ языка программирования , cоздание компьютерных программ и графических изображений на языке Turbo Pascal.
Задачи:
Организация ввода и вывода данных.
Изучение основных правил использования чисел и строк, управляющих конструкциями и циклами, переменных, констант и комментариев.
Создание графических изображений, а также интерфейс пользователя и отладку работы программы.

Содержание работы

Введение…………………………………………………….2

Рождение Паскаль………………………………………….3

Графические возможности языка Паскаль ……………….4

Работа в графическом видеорежиме. Общий обзор….......4

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

Управление экраном и окнами…………………………….6

Управление цветом и фоном……………………………….7

Построение простых графических изображений…………7

Реализация имитации движения графических объектов…10

Заключение………………………………………………….11

Литература…………………………………………………..12

Приложение ………………………………………………...13

Содержимое работы - 1 файл

Литература.doc

— 440.00 Кб (Скачать файл)

    Для хранения фрагмента  удобнее всего использовать динамическую область памяти. Получить размер памяти в байтах, необходимой для сохранения образа фрагмента, позволяет функция ImageSize(X1,Yl,X2,Y2:integer): word. Здесь (X1,YI) и (X2,Y2) — координаты верхнего левого и нижнего правого углов прямоугольника. Если полученный размер памяти больше 64Кб, то значение ImageSize = 0, a GraphResult=-1. Чтобы этого избежать, следует сохранять изображение по частям.

    Полученный с помощью  функции ImageSize размер памяти применяют  в качестве входной информации для процедуры GetMem(p,Size), которая выделяет указанный объем памяти в динамической области. Здесь р — указатель на область памяти,  Size — ее размер.

    Процедура GetImage(Xl,Yl,X2,Y2:integer; var BitMap: word); сохраняет образ фрагмента  в памяти, где XI,Y1,X2,Y2 — координаты фрагмента, BitMap — переменная, которая указывает, где сохраняется образ изображения. 

    Процедура Putlmage(X,Y: integer; var BitMap, Mo-de:word); восстанавливает сохраненный  в буфере Bit-Map прямоугольник, левый  верхний угол которого задаётся координатами (X,Y). Параметр Mode задает режим вывода изображения.

     Продемонстрируем имитацию  движения с использованием выше  описанных процедур при решении  следующей задачи.

 

 

 

 

 

 

 

 

 

 

 

                                                                 Заключение

 

     В данной  работе  описываются  различные процедуры  и функции, предназначенные   для создания  графических объектов  в Турбо Паскаль.

    Используя выше  перечисленные   процедуры  и функции, я научился  изображать различные фигуры различных форм и размеров, так же смог показать движение фигуры.

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

Писать программы не легко, но и  не очень трудно.

    Представьте себе почти  готовую программу, где, скажем, порядка 10 тысяч команд, которая  почему-то не желает работать. Компьютер пишет «ошибка», «ошибка», и чтобы понять, в чем она заключается, нужно поставить себя на место компьютера и в голове мысленно прокрутить всю программу за него.

    Мне есть ещё над чем работать. Но думаю, моя работа вам понравилась, ведь создавая его, мы с руководителем пытались заинтересовать и новичка, и профессионала.

    Я считаю, что программисты  – элита «компьютерщиков», они  решают самые трудные задачи. Настоящие программисты, умеющие  написать программу от начала  и до конца, очень редки и  ценятся на вес золота. Чтобы стать таким профессионалом, нужно обладать особым складом ума.

    Обычно человек мыслит  приблизительными категориями, а  язык программирования, даже самый  простой, никакой приблизительности не терпит. Компьютеру нужно «говорить» абсолютно четко, по пунктам. Если хотя бы одно место прописано недостаточно четко, компьютер остановится и выдаст ошибку.

    Если Вы действительно  хотите научиться программировать,  то из своего опыта скажу,  что достаточно изучить один  базовый язык программирования  и Вы сможете освоить и другие языки программирования без особых проблем, так как нужно понять основные принципы программирования, а затем уже переходить на изучение того языка, который Вы захотите еще освоить.

     Выбирайте эту сферу,  если Вы:

– Любите информатику

– Обладаете техническим складом  ума 

– Внимательны, собранны

– Готовы решать сложные технические  задачи

     Успехов вам в изучении Паскаля.

     Удовольствие, доставляемое  успехом, всегда соразмерно труду,  которого он стоил.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Литература

 

1.Павловский А.И. и др. Информатика:  Учебное пособие для 10-ого кл. с углубленным изучением информатики  с русским языком обучения/ А.И.  Павловский, А.Е. Пупцев, П.Л. Гращенко.- Мн.: Нар. асвета, 2000.-223 с.: ил.

 

2.Павловский А.И. и др. Информатика:  Учебное пособие для 11-ого кл. с углубленным изучением информатики с русским языком обучения/ А.И. Павловский, А.Е. Пупцев, Е.В. Нашкевич, Н.Н. Нарейко.- Мн.: Нар. асвета, 2000.-302 с.: ил.

 

3.Меженный О.А. М43 Turbo Pascal. Самоучитель.-М.: Издательский дом "Вильямс", 2004.-336с.: ил.

 

4.Абрамов С.А., Зима Е.В. Начало  информатики.-М.: Наука. Гл. ред. физ.-мат.  лит., 1989.-256с. 

 

5.Абрамов С.А., Зима Е.В. Начало  программирования на языке паскаль.-М.: Наука. Гл. ред. физ.-мат. лит., 1987.-112с. 

 

6. И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова. Информатика. Базовый курс. 9 класс.

 

7. http://saassl.at.tut.by/Grafika_Pascal/index16.htm

 

8. http://www.osnpas.com/

 

9. http://www.interface.ru/home.asp?artId=2962

 

10. http://www.welikeit.ru/pascal-graficavturbo.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение

Примеры графики  в Турбо Паскаль

 

       Пример.

Uses Graph;

Var Driver, Mode: integer;

Procedure GrInit;

Begin

Driver:= Detect; {автораспознавание драйвера}

InitGraph (Driver,  Mode,'');

If GraphResult<>0 then

    Begin

      Writeln ('Ошибка   инициализации!');

      Writeln ('Работа  программы   прервана');

      Halt (1) {остановить  выполнение программы с кодом   завершения — 1}

    End

End;

Begin

GrInit;   {графические действия}

Readln;

CloseGraph

End.

 

 

 

 

 

 

    

 

 

 

 

 

 

Пример "Будильник".

Program Budil;

uses graph;

var  grDriver:integer;  grMode:integer;

Begin

grDriver:=Detect;

InitGraph(grDriver,grMode,''); {Смена цвета фона}

SetBkColor(14);  {Смена цвета линии}

SetColor(5); {Рисование окружности}

Circle(250,180,60);

Circle(270,180,60);

Circle(210,235,7);

Circle(310,235,7);

Circle(260,180,7);

Circle(260,115,10);

SetColor(9); {Рисование линии}

Line(260,180,260,140);

Line(260,180,270,150);

Circle(260,230,5);

Circle(260,125,5);

Circle(230,180,5);

Circle(290,180,5);

readln;

End.

 

Пример Elka.

program elka;

uses graph;

var

grDriver:integer;

grMode:integer;

begin

grDriver:=Detect;

InitGraph(grDriver,grMode,'');

setbkcolor (14);

SetColor(0);

lineTo(100,250);

SetColor(6);

lineTo(100,275);

lineTo(150,275);

lineTo(150,250);

SetColor(2);

line(125,25,75,100);

line(75,100,175,100);

line(175,100,125,25);

line(125,100,50,175);

line(50,175,200,175);

line(200,175,125,100);

line(125,175,25,250);

line(25,250,225,250);

line(225,250,125,175);

readln;

end. 

 

Пример Dom.

program dom;

uses graph;

var

grDriver:integer;

grMode:integer;

begin

grDriver:=Detect;

InitGraph(grDriver,grMode,'');

{Смена цвета фона}

setbkcolor (14);

{Смена цвета линии}

SetColor(5);

{Рисование прямоугольников}

rectangle(25,75,100,150);

rectangle(100,75,225,150);

rectangle(50,100,75,150);

rectangle(150,100,175,125);

{Рисование линий}

line(25,75,75,25);

line(75,25,100,75);

line(200,25,225,75);

line(75,25,200,25);

readln;

end. 

 

Пример Машина_2.

PROGRAM MASHINA;

Uses graph;

Var

grdriver:integer;

grmode:integer;

begin;

grdriver:=detect;

Initgraph(grdriver,grmode,'c');

rectangle(120,90,160,120);

setcolor(7);

rectangle(160,120,240,160);

setcolor(8);

line(120,120,70,120);

line(70,120,80,160);

line(80,160,160,160);

setcolor(2);

circle(110,160,25);

setcolor(5);

circle(200,160,25);

setcolor(5);

line(50,80,20,120);

line(20,120,80,120);

line(80,120,50,80);

line(50,120,20,160);

line(20,160,80,160);

line(80,160,50,120);

readln

End. 

 

Пример Снеговики.

program snegoviki;

uses graph;

var

i,j,x,y:integer;

grdriver:integer;

grmode:integer;

begin

grdriver:=detect;

initgraph(grdriver,grmode,'c');

x:=50;y:=30;

for i:=1 to 10 do

begin

for j:=1 to 10 do

begin

setcolor(blue);

circle(x,y,10);

circle(x,y+30,20);

circle(x,y+80,30);

circle(x-30,y+30,10);

circle(x+30,y+30,10);

setcolor(5);

line(x,y-5,x+15,y);

line(x,y+5,x+15,y);

setcolor(white);

line(x-5,y+5,x+5,y+5);

putpixel(x-5,y-5,white);

putpixel(x+5,y-5,white);

putpixel(x,y+20,white);

putpixel(x,y+30,white);

putpixel(x,y+40,white);

putpixel(x,y+60,white);

putpixel(x,y+70,white);

putpixel(x,y+80,white);

putpixel(x,y+90,white);

putpixel(x,y+100,white);

setcolor(3);

line(x-5,y-10,x+5,y-10);

line(x+5,y-10,x,y-20);

line(x,y-20,x-5,y-10);

x:=x+90;

end;

y:=y+160;x:=50;

end;

readln

end.

 

Пример машина.    Организовать имитацию движения   автомобиля   по экрану  компьютера.

 

 

 

Uses crt,Graph;

Var u,gm,gd: integer;

BEGIN

gd:= detect;

initgraph(gd,gm,'');

if graphresult<>0 then halt (1);

setviewport(1,1,600,450,true);

setbkcolor(lightgray);

setcolor( brown);

line(1,401,700,401); {нарисуем дорогу}

u:= 1;

while u<=600 do begin setcolor(darkgray);

rectangle(40 + u,315,90+u,350); {кабина машины}

setfillstyle(1,darkgray);

bar(5 + u,350,120+u,390); {кузов машины}

setfillstyle(1, yellow); setcolor(yellow);

line(121 + u,360,160 + u,400); {свет от}

line( 160 + u,400,200 + u,400);

line(200 + u,400,121 + u,360); {фар }

floodfill(180 + u,399,yellow);

pieslice(40 + u,385,0,360,15); { }

pieslice(90 + u,385,0,360,15); delay(5000);

setfillstyle(1,lightgray);

bar(5+u,300,210 + u,400); {очистка места расположения  машины}

u:=u+3 end; readln; closegraph END.

 

 

Пример башня

Построить на экране компьютера башню, имитируя  процесс ее построения снизу  вверх.

 

Uses crt, Graph;

Var P:pointer;{указатель на область}

Size:Word; {размер области}

X1,Y1:Word; {координаты начальной точки}

gd,gm: integer;

Begin gd:=detect;

InitGraph(gd,gm,'');

IF GraphResult<>0 THEN Halt(1);

SetViewPort(0,0,640,80,TRUE);

ClearViewPort;

SetBkColor(black);

SetColor(yellow);

SetLineStyle(0,1,Thickwidth);

Rectangle(120,400,200,440); {рисуем первый кирпич}

Size:=ImageSize(120,400,200,440); {определяем размер  области}

GetMem(p,Size); {выделяем память для  области}

GetImage(120,400,200,440,P^); {сохраняем область  в памяти}

Y1:=440;

WHILE Y1>=40 DO begin X1:= 120;

begin PutImage(X1,Y1,p^,CopyPut); {строим башню}

Delay(59000);

X1:=X1+80

end;

Y1:=Y1-40 end; x1:=x1-160;WHILE X1<=280 DO {строим верх башни}

begin

PutImage(X1,Y1,p^,CopyPut);

{CopyPut = 0 - режим копирования изображений}

X1:=X1 +160

end;

setfillstyle(8,red);

Bar(200,40,280,500); {строим стены башни}

Bar(40,40,120,500);

{Добавляем надпись}

SetColor(11);SETTEXTSTYLE(6,7,6);

outtextxy(350,100,'BASHNYA!');

Readln;

CloseGraph

End.

 

ГРИБ

Program GRIB

Uses crt, Graph;

Var P:pointer;

Size:Word;

X1,Y1:Word; gd,gm: integer;

Begin gd:=detect;

InitGraph(gd,gm,'');

SetColor(15);

rectangle(100,125,150,250);

SetColor(6);

line(25,125,125,50);

line(125,50,225,125);

line(225,125,25,125);

SetColor(2);

line(100,250,50,200);

line(50,250,50,200);

line(50,250,100,250);

line(150,250,200,200);

line(200,200,200,250);

line(200,250,150,250);

SetColor(11);SETTEXTSTYLE(7,0,6);

outtextxy(300,300,'GRIB');

Readln;

CloseGraph End.

 

НАДПИСЬ

Program Privet

Uses crt, Graph;

Var P:pointer;

Size:Word;

X1,Y1:Word;

gd,gm: integer;

Begin gd:=detect;

InitGraph(gd,gm,'');

SetColor(11);SETTEXTSTYLE(4,0,7);

outtextxy(20,200,'My name is Denis!');

Readln;

CloseGraph End.

 

КРАН

Program KRAN

uses Graph;

  Const uMin=50; uMax=600; vMin=50; vMax=450;

  {Окно графика функции}

Var grDriver: integer;

   grMode: integer;

    xStep:real;   {Шаг по х}

    n,k:integer;  {Число точек графика}

    x,y,px,py:real;

    xMin, yMin,yMax, xMax:real;{Область функции}

 

    Procedure Grlnit;

    Begin

   grDriver:=Detect;

    InitGraph(grDriver,grMode,'');

    IF GraphResult<>0 then

     begin

     Writeln('Ошибка инициализации!');

     writeln('Работа программы  прервана');

     Halt(1)

     end

End;

Function xScr(x: real):integer;

{Преобразование координаты х  в u}

begin

xScr:=Round((x-xMin)*px+uMin);

end;

Function yScr(y:real):integer;

{Преобразование координаты y в  v}

begin

begin

yScr:=Round((y-yMax)*py+vMin);

end;

Function f(x:real):real;

{Вид функции}

begin

f:=X*X-5*X+6;

end;

Begin

{Ввод исходных значений области  функции}

write('xMin='); readln(xMin);

write('xMax='); readln(xMax);

write('yMin='); readln(yMin);

write('yMax='); readln(yMax);

px:=(uMax-uMin)/(xMax-xMin);

py:=-(vMax-vMin)/(yMax-yMin);

Grlnit;

{Построение рамки прямоугольника}

SetLineStyle(0,0,3);

Rectangle(uMin,vMin,uMax,vMax);

{Построение осей координат}

SetLineStyle(0,0,1);

If (xMin<0) and (xMax>0) then

Line (xScr(0),vMin,xScr(0),vMax);

If(yMin<0) and(yMax>0) then

Line(uMin,yScr(0),uMax,yScr(0));

{Определение количества точек  графика}

n:=uMax-uMin;

{Вычисление шага}

xStep:=(xMax-xMin)/n;

x:=xMin;

{Вывод графика в виде n точек  желтого цвета, преобразовывая  при этом х в u, у в v}

for k:=1 to n do

begin

y:=f(x);

if(y> yMin) and (y<yMax) then PutPixel(xScr(x),yScr(y),Yellow);

x:=x+xStep

end;

readln;

Closegraph

End.

 

ГРУЗОВИК

 

program gryzovik;

uses graph;

var

grDriver:integer;

grMode:integer;

begin

grDriver:=Detect;

InitGraph(grDriver,grMode,'');

SetColor(5);

bar(100,100,300,200);

bar(300,200,400,50);

bar(400,200,511,130);

rectangle(310,60,390,140);

line(450,130,420,30);

line(420,30,500,30);

line(500,30,470,130);

SetColor(7);

circle(140,230,30);

circle(210,230,30);

circle(400,230,30);

circle(470,230,30);

readln;

end.

 

ЧЕЛОВЕЧЕК

 

program chel;

uses graph;

var

grDriver:integer;

grMode:integer;

begin

grDriver:=Detect;

InitGraph(grDriver,grMode,'');

SetColor(5); SetBkColor(1);

SetColor(7);circle(160,120,10);

circle(160,120,5);

circle(175,120,8);

circle(173,110,8);

circle(173,100,8);

  circle(175,95,8);

circle(180,90,8);

circle(185,85,8);

circle(190,83,8);

circle(195,83,8);

circle(200,83,8);

circle(205,83,8);

circle(210,83,8);

circle(215,83,8);

circle(200,85,8);

circle(225,90,7);

circle(230,95,8);

circle(230,100,8);

circle(233,105,8);

circle(233,110,8);

circle(233,115,8);

circle(232,120,8);

circle(245,120,10);

  circle(245,120,5);

circle(190,110,5);

circle(210,110,5);

circle(200,120,5);

 circle(200,135,6);

circle(200,118,30);

circle(200,118,60);

readln;

end.

 

БРОУНОВСКОЕ ДВИЖЕНИЕ

 

uses crt, graph;

const N = 200;

var gd, gm : integer;

    x, y : array [1..N] of integer;

    dx, dy : integer;

    i : integer;

    x1, y1, x2, y2 : integer;

begin

  gd := detect;

  initgraph ( gd, gm, '' );

  randomize;

  setbkcolor (8);

  x1 := 250; y1 := 180;

  x2 := 340; y2 := 300;

 

  setfillstyle ( 1, 14 );

  bar ( 100, 300, 500, 310 );

  bar ( 160, 300, 165, 400 );

  bar ( 440, 300, 445, 400 );

 

  setfillstyle ( 1, 11 );

  bar ( x1, y1, x2, y2 );

  line ( x1-1, y1-30, x1-1, y2+1 );

  line ( x2+1, y1-30, x2+1, y2+1 );

  line ( x1-1, y2+1, x2+1, y2+1 );

  line ( x1-1, y1-1, x2+1, y1-1 );

  ellipse ( x1+(x2-x1)div 2, y1-30, 0, 360, (x2-x1) div 2, 4 );

 

  for i := 1 to N do begin

    x[i] := x1 + random (x2-x1);

    y[i] := y1 + random (y2-y1);

    putpixel ( x[i], y[i], 0 );

  end;

  repeat

    for i := 1 to N do putpixel ( x[i], y[i], 11 );

    for i := 1 to N do begin

      dx := 2 - random (5);

      dy := 2 - random (5);

      if ( x[i] + dx > x1 ) and ( x[i] + dx < x2 ) then x[i] := x[i] + dx;

Информация о работе Графические возможности языка Паскаль