Автор работы: Пользователь скрыл имя, 16 Сентября 2013 в 10:24, реферат
Основная цель данной работы - изучение основ языка программирования , cоздание компьютерных программ и графических изображений на языке Turbo Pascal. 
    Задачи:
Организация  ввода и вывода данных.
Изучение основных правил использования чисел и строк, управляющих конструкциями и циклами, переменных, констант и комментариев.
Создание графических изображений, а также интерфейс пользователя и отладку работы программы.
Введение…………………………………………………….2
                
                  Рождение Паскаль………………………………………….3
 
                  Графические возможности языка  Паскаль ……………….4
 
                  Работа в графическом видеорежиме. Общий обзор….......4
 
                  Инициализация графического режима……………………5
 
                  Управление экраном и окнами…………………………….6
 
                  Управление цветом и фоном……………………………….7
 
                  Построение простых графических изображений…………7
 
                  Реализация имитации движения графических объектов…10
 
                  Заключение………………………………………………….11
 
                  Литература…………………………………………………..12
 
                  Приложение ………………………………………………...13
      Для выхода из 
графического режима 
     При частой работе 
с графикой процесс 
                              
В графическом режиме поддерживается концепция окон. Окно представляет собой прямоугольную область экрана со своей относительной системой координат. По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего углов устанавливаются автоматически процедурой инициализации (например, (0,0) и (640,480)).
Чтобы стереть все изображения на экране, т. е. очистить его, используется процедура без параметров С1еarDevice или процедура GraphDefauits, которая не только очищает экран, а и выполняет все стартовые установки графических параметров.
Процедура SetViewPort (X1,Y1,X2,Y2 : integer; Clip: boolean); служит для организации окон. Здесь XI,Y1 —координаты левого верхнего угла, X2,Y2 — координаты правого нижнего угла. Параметр Clip определяет, будут ли фрагменты изображения отсекаться при попадании за пределы окна (Clip = True или Clip = ClipOn) или нет (Clip = False или Сliр = СlipOff). После создания окна началом координат станет верхний левый угол окна, который будет иметь координаты (0,0).
     Процедура CiearViewPort; 
используется для очистки окна. Текущее 
окно при этом заполняется фоновым цветом, 
а текущий указатель устанавливается 
в точку с координатами (0,0). Напомним, что 
это координаты во внутренней системе 
координат, связанной с данным окном, а 
не в системе координат полного экрана. 
Перейти к системе координат полного экрана 
можно с помощью процедуры ClearDevice или задав 
в процедуре установки окна максимально 
возможные значения: SetViewPort(0,0,GetMaxX,
program Prim_2;
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; {графические действия}
{Устанавливаем размеры "
Setviewport(1,1,650,450,true); {Рисуем прямоугольник}
Rectangle(50,50,200,200); {Меняем цвет линий для следующей фигуры}
Setcolor(11); {Рисуем прямоугольник}
Rectangle(300,300,400,350); {Меняем цвет линий для следующей фигуры}
Setcolor(5);{Рисуем прямоугольник}
Rectangle(400,30,600,250); {Компьютер ожидает нашего нажатия клавиши Enter}
Readln; {Очістка экрана}ClearViewPort;
{Компьютер ожидает нашего 
CloseGraph
End.
    В следующей программе 
изменили только одну строку Setviewport(1,1,650,450,true) 
нàSetviewport(1,1,250,250,
                              
Во время инициализации графического режима устанавливается палитра цветов. Палитрой называется максимальный набор цветов, поддерживаемых BGI-драйвером. Она включает 16 цветов, пронумерованных от 0 до 15, которые используются по умолчанию в режимах 640x480 для VGA (и для EGA) как в текстовом, так и в графическом режиме. Названия цветов на английском и русском языках и их номера описаны в таблице.
Имя цвета  | 
  Номер цвета  | 
  Название цвета  | 
Black  | 
  0  | 
  Черный  | 
Blue  | 
  1  | 
  Синий  | 
Оreeon  | 
  2  | 
  Зеленый  | 
Cyan  | 
  3  | 
  Голубой  | 
Red  | 
  4  | 
  Красный  | 
Magenta  | 
  5  | 
  Фиолетовый  | 
Brown  | 
  6  | 
  Коричневый  | 
LightGray  | 
  7  | 
  Светло-серый  | 
DarkGray  | 
  8  | 
  Темно-серый  | 
LighiBlue  | 
  9  | 
  Светло-синий  | 
LightGreen  | 
  10  | 
  Светло-зеленый  | 
LightCyan  | 
  11  | 
  Светло-голубой  | 
LightRed  | 
  12  | 
  Светло-красный  | 
LightMagenla  | 
  13  | 
  Сетло-филоетовый  | 
White  | 
  14  | 
  Белый  | 
Yellow  | 
  15  | 
  Желтый  | 
Для установки цвета изображения и окна применяются процедуры SetColor и SetBkColor.
Процедура SetColor((ueeT) : word); служит для задания цвета, которым будут обозначены контуры фигуры или текста. Если в качестве цвета указан недопустимый номер цвета, то текущий цвет не изменяется.
Процедура SetBkColor(<цвет>:word); устанавливает новый цвет фона.
Построение простейших графических изображений
Отображение точки
Какие бы изображения не выводились на экран, все они построены из точек. Процедура PutPixel(X,Y:integer; Color:word); отображает точку на экране, где X и Y — экранные координаты точки. Color - её цвет.
Приведем пример программы, при выполнении которой создается интересный визуальный эффект путем заполнения экрана множеством точек различных цветов.
Пример.
Uses Crt, Graph;
Var Driver,Mode : integer; Color: word;
X,Y:word; Procedure GrInit;
Begin
Driver:= Detect; {автораспознанание драйвера} InitGraph(Driver,Mode,'');
If GraphResult<>0 then Begin
Writeln ('Ошибка инициализации!');
Writeln ('Работа программы прервана');
Halt (1) {остановить выполнение программы с кодом завершения — 1}
End
End;
Begin
GrInit;
Color: =0; Randomize; Repeat
{выберем случайным образом координаты точки}
X: = Random(GetMaxX);
Y: = Random(GetMaxY);
PutPixel(X,Y,Color), {вывод точки}
Inc(Color); {изменение цвета}
{проверим, не превышает ли значение цвета максимального значения, которое определяет функция GetMaxColor}
If Color = GetMaxColor Then Color: =0;
Until KeyPressed; {повторять до нажатия любой клавиши)
ClearDevice;
{CloseGraph}
End.
Отображение отрезков прямых линий
Процедура Line(Xl,Yl,X2,Y2: integer); выводит на экран отрезок прямой линии. Здесь (X1,Y1)—координаты начальной точки, a (X2,Y2) — координаты конечной точки отрезка.
Для построения отрезков можно применять также следующие процедуры:
LineTo(X,Y); — проводит отрезок из текущей точки до точки с координатами (X,Y);
LineRel(dX,dY|; — проводит отрезок из текущей точки до точки, удаленной от нее на расстояние (dX,dY). Линии можно вычерчивать самых различных стилей: тонкие, широкие, штриховые, пунктирные и т. д. Процедура SetLineStyle(<тип линии> :word;<yзop(maблон)> : word;(толщина линии) :word); производит установку стиля. Константы типа линий и их толщины приведены в таблице.
Константа  | 
  Характеристика линий  | |
SolidLn  | 
  0  | 
  Сплошная линия  | 
DottedLn  | 
  1  | 
  Точечная линия  | 
CenterLn  | 
  2  | 
  Штрихпунктирная линии  | 
DashedLn  | 
  3  | 
  Пунктирная линия  | 
UserBitLn  | 
  4  | 
  Тип линии, определяемый пользователем  | 
NormWidth  | 
  1  | 
  Нормальная толщина линий  | 
ThickWidth  | 
  3  | 
  Жирная линия  | 
Если тип линии не равен UserBitLn, то параметр "узор(шаблон)" не используется и обычно задается равным нулю, например SetLineStyle(0,0,3) — стиль линии — сплошная, жирная.
Построение прямоугольников
Процедура Rectangle(Xl,Yl,X2,Y2: integer); строит изображение прямоугольника на плоскости. Здесь XI,Y1— координаты левого верхнего угла, X2,Y2 — координаты правого нижнего угла прямоугольника. При этом используется текущий цвет (SetColOf) и стиль линии (SetLineStyle). Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.
Процедура Bar(Xl,Yl,X2,Y2:integer); позволяет строить более эффектные прямоугольники. Она рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Обычно используется в деловой графике для построения столбиковых диаграмм, а также для "закраски" графического окна, чтобы фон графического окна не сливался с общим фоном экрана.
Рассмотрим, как производить «заливку» замкнутых областей экрана с помощью различных узоров, т. е. как выбрать узор (шаблон) и цвет заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.
    Процедура SetFillStyle(<шаблон>:word;<
Константы шаблонов закраски приведены в таблице.
Константа  | 
  Значение  | 
  Описание узора  | 
EmptyFill  | 
  0  | 
  Закраска области фоновым цветом  | 
SolidFill  | 
  1  | 
  Сплошная закраска области текущим цветом  | 
LineFill  | 
  2  | 
  Закраска линиями —  | 
LtSlashFill  | 
  3  | 
  Закраска линиями ///  | 
SlashFill  | 
  4  | 
  Закраска жирными линиями///  | 
BkSlashFill  | 
  5  | 
  Закраска жирными линиями\\\  | 
LtBkSlashFill  | 
  6  | 
  Закраска линиями ///  | 
HatchFill  | 
  7  | 
  Закраска редкой штриховкой  | 
XhalchFill  | 
  8  | 
  Закраска частой штриховкой (в обоих направлениях)  | 
InterleaveFill  | 
  9  | 
  Закраска прерывистой линией  | 
WideDotFill  | 
  10  | 
  Закраска линией из редких точек  | 
CloseDotFill  | 
  11  | 
  Закраска линией из частых точек  | 
UserFill  | 
  12  | 
  Закраска, определяемая программистом  | 
Процедура FloodFill(X,Y:integer; Border: word); заполняет ограниченную область текущим цветом и стилем заполнения (SetFillStyle). Граница закрашиваемой области высвечивается цветом, заданным в Border.
Если точка (X,Y) находится внутри области, то эта область закрашивается, если же она расположена вне области, то заполняется внешняя часть области.
Построение дуг, эллипсов и окружностей
Процедура Arc(X,Y:integer; al, a2,R: word); строит дугу. Здесь (X,Y)—центр окружности дуги, al, a2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, R—радиус. Если al=0o, а а2=360°, то вычерчивается полная окружность.
Процедура Ellipse (X,Y: integer; al,a2,Rx,Ry: word); предназначена для построения эллиптических дуг. Здесь (X,Y)—центр эллипса, al,a2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry — горизонтальная и вертикальная полуоси. Если al=0°, а а2 = 36О, то вычерчивается ПОЛНЫЙ ЭЛЛИПС.
Процедура FillEllipse(X,Y: integer; Rx,Ry: word); строит полный закрашенный эллипс.
Процедура Circle(X,Y: integer; R: word); выводит на экран изображение окружности с центром (X,Y) и радиусом R. Окружность рисуется цветом, заданным SetColor.
Процедура PieSlice(X,Y: integer; al, n2,R: word); выводит на экран изображение закрашенного сектора круга, используя и качестве центра круга точку (X,Y), начальный угол al, конечный угол a2 и радиус R. Контур сектора высвечивается текущим цветом. При заполнении сектора используются шаблон и цвет, установленные процедурой SetFillStyle. Если al =0°, а а2=360°, то на экран выводится закрашенная окружность.
Процедура Sector(X,Y: integer; al,a2,Rx;Ry: word); строит закрашенный сектор эллипса.
Реализация имитации движения графических объектов
Создать видимость движения на экране можно двумя способами. Первый способ заключается в том, что имитация движения объекта на экране создаётся за счёт многократного выполнения программой напора действий:
      нарисовать — 
пауза — стереть рисунок (
     Перед началом составления 
программы надо продумать 
Второй способ имитации движения рисунка или его части состоит и его запоминании в отдельной области оперативной памяти с тем, чтобы в дальнейшем быстро восстановить это изображение в другом месте экрана.