Рефераты. Основы программирования на языке Паскаль

{ конец перемножения матрицы на вектор }

writeln(' распечатка массива а ');

for i:=1 to n do

begin GotoXY(2,l); l:=l+1; { начать новую строку }

for j:=1 to m do

write(a[i,j]:5); end;

GotoXY(2,l); l:=l+1; writeln('распечатка массива  b');

GotoXY(2,l);

for j:=1 to m do

write(' ',b[j]); L:=L+1;

GotoXY(2,L); L:=L+1; writeln('результирующий массив с');

GotoXY(2,L);

for i:=1 to n do

write(' ',c[i]);

readln; END.

12. Графика в Паскале

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

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

Program имя;

Uses Graph;

var

grDriver, grMode, errCode: integer;

begin

grDriver:= Detect; {определение номера, установленного в системе драйвера}

initGraph (grDriver, grMode,''); {инициализация графического режима}

if errCode= grOK then

begin { режим открыт и можно работать}

end else

begin {графический режим не удалось открыть, проанализируйте содержание переменной errCode}

end.

Замечание. Две кавычки в initGraph правомочны только тогда, когда графическая программа находится в том же каталоге, что и библиотека Graph. В противном случае в кавычках должен стоять путь - указание, где находится библиотека Graph.

12.2. Процедуры и функции библиотеки Graph

Функции GetMaxX и GetMaxY возвращают значения типа Word, содержащие максимальные координаты, соответственно, X и Y относительно левого верхнего угла в пикселах (точках).

Различные мониторы имеют различную разрешающую способность, например: VGA - 640480 точек, IBM 8514Hi - 1024768 точек.

Функции GetX и GetY возвращают текущие координаты указателя. Процедура SetViewPort (Х1, Y1, Х2, Y2, Clipon); устанавливает прямоугольное окно на графическом экране, X1, Y1 - координаты левого верхнего угла; Х2, Y2 - координаты нижнего правого угла окна.

Если выражение Clipon имеет значение true и элементы изображения не помещаются в окне, то они отсекаются, если - false, то отсечка игнорируется.

Процедура MoveTo (Х, Y); устанавливает новое текущее положение указателя.

Процедура MoveRel (Ox, Dy); устанавливает приращения новых координат указателя относительно старых.

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

Процедура PutPixel (Х, Y, Color); выводит на экран точку Color цвета. Процедура LineTo (Х, Y); вычерчивает линию от текущего положения указателя до точки Х, Y.

Процедура SetLineStyle (Туре, Pattern, Thick);

Где Туре - тип линии. Pattern - образец линии. Thick - толщина линии.

Тип линии:

0 - сплошная,

1 - точечная,

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

3 - . . . . . . . .

4 - узор линии определяет пользователь параметром pattern.

Thick=l - толщина линии в 1 пиксел.

Thick=2 - толщина линии в 3 пиксела.

Процедура Rectangle (Х1, Y1, Х2, Y2); вычерчивает прямоугольник с использованием текущего цвета и текущего стиля линий.

Процедура DrawPoly (N, Р); вычерчивает произвольную ломаную линию. N - количество точек излома, включая крайние; Р - переменная типа PointType, которая в Graph имеет вид:

type

PointType=record

X, Y: Word

end;

При вычерчивании используются текущий цвет и текущий стиль линий. Процедура Circle (Х, Y, R); вычерчивает окружность с центром X, Y и радиусом R.

Процедура Arc (Х, Y, Beg А, End А, R); вычерчивает дугу окружности Beg А и End А, соответственно, начальный и конечный углы дуги.

Процедура Ellipse (Х, Y, Beg А, End А, RX, RY); вычерчивает дугу эллипса с центром X, Y; Beg А, End А - начальный и конечный угол, RX и RY - горизонтальный и вертикальный радиусы.

Процедура Bar (Х1, Y1, Х2, Y2); заполняет прямоугольную область экрана образцом узора и текущим цветом, которые устанавливаются процедурой SetFillStyle.

Процедура Ваr3D (Х1, Y1, Х2, Y2, Depth, Тор); вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Depth - глубина третьего измерения, Top=true - верхняя грань вычерчивается, false - нет.

Процедура FillPoly (n, Coords); обводит линией и закрашивает замкнутый многоугольник; n - количество вершин, Coords - переменная типа PointType, содержащая координаты вершин (см. DrawPoly).

Процедура FillEllipse (Х, Y, Rx, Ry); обводит линией и заполняет эллипс.

Процедура Sector (Х, Y, Beg А, End А, Rx, Ry); вычерчивает и заполняет эллипсный сектор.

Процедура PieSlice (Х, Y, Beg А, End А, R); вычерчивает и заполняет сектор окружности.

Процедура SetColor (Color); устанавливает текущий цвет для выводимых линий и символов.

Процедура SetbkColor (Color); устанавливает цвет фона окна.

Процедура SetFillStyle (Fill, Color); устанавливает стиль Fill и цвет заполнения Color.

Значения Fill:

заполнение фоном (узор отсутствует);

сплошное заполнение;

заполнение - - - - -;

- « - /////// ;

- « - утолщенными ///////;

- « - утолщенными \\\\\\ ;

- « - \\\\\\ ;

- « - + + + + + +;

- « - ******;

- « - прямоугольной клеточкой;

- « - редкими точками ;

- « - частыми точками ;

- « - узор определяется пользователем.

Процедура FloodPill (Х, Y, Color); заполняет произвольную замкнутую линию (точки соединения должны совпадать, например, концы линий не могут пересекаться) текущим стилем и текущим цветом. X, Y - координаты точки внутри фигуры, Color -- цвет ограничений линии. Если линии разомкнуты или пересекаются и концы «торчат», то цвет «разольется» по всему окну.

Функция ImageSize (X1, Y1, X2, Y2); возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения (например, окна с рисунком).

Процедура GetImage (X1, Y1, X2, Y2, Buf); помещает в память копию прямоугольного фрагмента изображения. Buf -- переменная или участки кучи, куда будет помещена копия видеопамяти с фрагментом изображения. Размер Buf должен быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами X1...Y2.

Процедура PutImage (X, Y, Buf, Mode); выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage.

X, Y -- координаты левого угла того места на экране, куда будет скопирован фрагмент изображения. Buf -- переменная, или участок кучи, откуда берется фрагмент изображения. Mode -- способ копирования.

12.3. Примеры программ

Ниже приведены программы, демонстрирующие некоторые возможности графики в Паскале.

Программа Prim 54 демонстрирует вывод различных простых объектов-окружностей, дуг, эллипсов, прямоугольников, параллелепипедов.

Program Prim54;Uses Graph;var grDriver,grMode,errCode,Radius,i,Width,y0,y1,y2,x1,x2:integer;Begin grDriver:=detect; { определение номера драйвера }

InitGraph(grDriver,grMode,'');

{ инициализация графического режима }

errCode:=GraphResult;

if errCode=grOK then

begin { графический режим открыт, можно работать }

for radius:=1 to 5 do

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.