Автор работы: Пользователь скрыл имя, 16 Сентября 2013 в 10:24, реферат
Основная цель данной работы - изучение основ языка программирования , cоздание компьютерных программ и графических изображений на языке Turbo Pascal.
Задачи:
Организация ввода и вывода данных.
Изучение основных правил использования чисел и строк, управляющих конструкциями и циклами, переменных, констант и комментариев.
Создание графических изображений, а также интерфейс пользователя и отладку работы программы.
Введение…………………………………………………….2
Рождение Паскаль………………………………………….3
Графические возможности языка Паскаль ……………….4
Работа в графическом видеорежиме. Общий обзор….......4
Инициализация графического режима……………………5
Управление экраном и окнами…………………………….6
Управление цветом и фоном……………………………….7
Построение простых графических изображений…………7
Реализация имитации движения графических объектов…10
Заключение………………………………………………….11
Литература…………………………………………………..12
Приложение ………………………………………………...13
Для хранения фрагмента
удобнее всего использовать динамическую
область памяти. Получить размер памяти
в байтах, необходимой для сохранения
образа фрагмента, позволяет функция ImageSize(X1,Yl,X2,Y2:integer)
Полученный с помощью функции ImageSize размер памяти применяют в качестве входной информации для процедуры GetMem(p,Size), которая выделяет указанный объем памяти в динамической области. Здесь р — указатель на область памяти, Size — ее размер.
Процедура GetImage(Xl,Yl,X2,
Процедура Putlmage(X,Y: integer; var BitMap, Mo-de:word); восстанавливает сохраненный в буфере Bit-Map прямоугольник, левый верхний угол которого задаётся координатами (X,Y). Параметр Mode задает режим вывода изображения.
Продемонстрируем имитацию
движения с использованием
В данной работе
описываются различные
Используя выше перечисленные
процедуры и функции, я
Написав данную работу,
я получил навык работы в
графической среде Турбо
Писать программы не легко, но и не очень трудно.
Представьте себе почти
готовую программу, где,
Мне есть ещё над чем работать. Но думаю, моя работа вам понравилась, ведь создавая его, мы с руководителем пытались заинтересовать и новичка, и профессионала.
Я считаю, что программисты – элита «компьютерщиков», они решают самые трудные задачи. Настоящие программисты, умеющие написать программу от начала и до конца, очень редки и ценятся на вес золота. Чтобы стать таким профессионалом, нужно обладать особым складом ума.
Обычно человек мыслит
приблизительными категориями,
Если Вы действительно
хотите научиться
Выбирайте эту сферу, если Вы:
– Любите информатику
– Обладаете техническим складом ума
– Внимательны, собранны
– Готовы решать сложные технические задачи
Успехов вам в изучении Паскаля.
Удовольствие, доставляемое
успехом, всегда соразмерно
Литература
1.Павловский А.И. и др. Информатика:
Учебное пособие для 10-ого кл.
с углубленным изучением
2.Павловский А.И. и др. Информатика: Учебное пособие для 11-ого кл. с углубленным изучением информатики с русским языком обучения/ А.И. Павловский, А.Е. Пупцев, Е.В. Нашкевич, Н.Н. Нарейко.- Мн.: Нар. асвета, 2000.-302 с.: ил.
3.Меженный О.А. М43 Turbo Pascal. Самоучитель.-М.: Издательский дом "Вильямс", 2004.-336с.: ил.
4.Абрамов С.А., Зима Е.В. Начало информатики.-М.: Наука. Гл. ред. физ.-мат. лит., 1989.-256с.
5.Абрамов С.А., Зима Е.В. Начало
программирования на языке
6. И. Семакин, Л. Залогова, С. Русаков, Л. Шестакова. Информатика. Базовый курс. 9 класс.
7. http://saassl.at.tut.by/
8. http://www.osnpas.com/
9. http://www.interface.ru/home.
10. http://www.welikeit.ru/pascal-
Приложение
Примеры графики в Турбо Паскаль
Пример.
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,
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,
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,
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,
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),
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;