Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Текст программы. { Программа Лабораторной работы N 8.






Program Graph_work;

{ Программа Лабораторной работы N 8.

Вариант N 31.

Построение графика функции.

А.Я.Умненькая, ст. гр. Я-007 }

Uses Graph, Crt, Print; {Print – только при наличии принтера для печати графика с экрана на бумагу }

Var

X, Y, { текущие значения переменных Х и Y }

Xmin, Xmax, {минимальное и максимальное значения Х на графике}

Ymin, Ymax, {минимальное и максимальное значения Y на графике}

DeltaX, DeltaY, {диапазоны изменения X и Y в пределах рисунка}

Dx, { шаг построения графика по Х }

Dxs, Dys, { Шаги разметки осей по Х и по Y }

Part, Pole, { Доля экрана, занятая рисунком и доля чистого поля с каждой стороны }

Mx, My {Коэффициенты пересчета Х в J и Y в I}

: real;

Imin, Imax, {координаты экрана, соответствующие Ymin и Ymax}

Jmin, Jmax, {координаты экрана, соответствующие Xmin и Xmax}

J, I, {текущие значения переменных координат экрана }

JAll, IAll, {Максимальные размеры экрана (в пикселях) по X, Y}

J0, I0, {Координаты на экране точки пересечения осей графика}

DeltaJ, DeltaI, {Экранные размеры рисунка по Х и Y в пикселях}

Nx, Ny {Шаги разметки осей Х и Y в пикселях }

: integer;

Riska: String[5]; {Строка для вывода чисел у рисок осей}

GraphDrv, {Тип графического драйвера }

GraphMode: integer; {Устанавливаемый графический режим}

Code: word; {Код завершения инициализации графики }

BEGIN { Начало программы }

{1.Задание констант, стандартных значений }

Xmin: =-1.0; Xmax: =2.0;

Dxs: =0.5; Dys: =1.0;

Part: =0.6; Dx: =0.2;

{2.Ввод исходных данных - в примере не используем}

{3.Печать исходных данных - в примере не используем}

{4.Расчет характеристик функций }

DeltaX: =Xmax-Xmin;

Ymin: =exp(Xmin);

Ymax: =exp(Xmax);

if Ymin> 0 then Ymin: =0;

if Ymax< 0 then Ymax: =0;

DeltaX: =Xmax-Xmin;

DeltaY: =Ymax-Ymin;

{5.Открытие графики с проверкой правильности срабатывания}

GraphDrv: =0; {пусть определяет режим сам }

InitGraph(GraphDrv, GraphMode, 'D: \TP6\BGI');

Code: =GraphResult;

if Code< > 0 then {если завершение с кодом не 0 - закончить программу}

Begin

writeln('Ошибка открытия графики с кодом: ', Code);

Halt; { Останов программы }

End;

{6.Настройка фона}

SetBkColor(15); {Фон белый }

ClearDevice; {Очистка экрана}

{7.Расчет параметров графика на экране}

JAll: =GetMaxX;

IAll: =GetMaxY;

Pole: =(1.0-Part)/2.0;

Jmin: =Round(Pole*JAll);

Jmax: =Round((1.0-Pole)*JAll);

Imin: =Round((1.0-Pole)*IAll);

Imax: =Round(Pole*IAll); { Imin > Imax!!! }

DeltaJ: =Jmax-Jmin;

DeltaI: =Imax-Imin;

{8.Расчет масштабных коэффициентов перехода от X к J и от Y к I}

Mx: =DeltaJ/DeltaX;

My: =DeltaI/DeltaY;

{9.Построение графика функции}

{9.1.Задание характеристик линии}

SetColor(4); { цвет красный }

SetLineStyle(3, 0, 3); { штриховая толстая }

{9.2.Начальная точка графика}

Nx: =Round(Dxs*Mx);

Ny: =Round(Dys*My); { Шаг разметки по Y - отрицательный }

J: =Jmin;

I: = Imin+Round((exp(Xmin)-Ymin)*My);

MoveTo (J, I);

{9.3.Цикл расчета экранных координат графика (X-> J, X-> Y-> I) и проведения отрезков}

X: =0;

While X< =Xmax do

Begin

X: =X+Dx;

Y: =exp(X);

J: =Jmin+Round((X-Xmin)*Mx);

I: =Imin+Round((Y-Ymin)*My);

LineTo(J, I);

End;

{10.Построение осей 10.1.Задание характеристик линии }

SetColor(8); { цвет темно-серый }

SetLineStyle(0, 0, 3); { сплошная толстая }

{10.2.Построение осей }

J0: =Jmin+Round((0-Xmin)*Mx);

I0: =Imin+Round((0-Ymin)*My);

Line(J0, Imin, J0, Imax); {Построение оси Y (где X=0)}

Line(Jmin, I0, Jmax, I0); {Построение оси Х (где Y=0)}

{11.Разметка осей 11.1.Задание характеристик линии }

SetLineStyle(0, 0, 0); { сплошная тонкая }

{11.2.Характеристики шрифта для подписи значений }

SetTextStyle(0, 0, 0); { шрифт стандартный, подпись горизонтальна }

SetTextJustify(1, 2); {Размещение текста симметрично, относительно заданной точки по горизонтали и ниже точки по вертикали}

{11.3.Цикл проведения разметки оси X, риски вверх от оси, по 10 пикселов }

J: =J0;

X: =0;

while J< =Jmax+1 do {от начала координат - вправо }

begin

Line(J, I0, J, I0-10);

Str(X: 3: 1, Riska);

OutTextXY(J, I0+5, Riska);

X: =X+Dxs;

J: =Jmin+Round((X-Xmin)*Mx);

end;

J: =J0;

X: =0;

while J> =Jmin do {от начала координат - влево }

begin

Line(J, I0, J, I0-10);

Str(X: 3: 1, Riska);

OutTextXY(J, I0+5, Riska);

X: =X-Dxs;

J: =J-Nx;

end;

{11.4.Цикл проведения разметки оси Y, риски вправо от оси, по 10 пикселов }

SetTextJustify(2, 1); {Размещение текста симметрично, относительно заданной точки по вертикали и левее точки по горизонтали }

I: =I0;

Y: =0;

while I> =Imax do {от начала координат - вверх }

begin

Line(J0, I, J0+10, I);

Str(Y: 3: 1, Riska);

OutTextXY(J0-10, I, Riska);

Y: =Y+Dxs;

I: =I+Ny;

end;

{ Для данной функции ниже оси Х разметка не нужна}

I: =I0;

while I< =Imin do

begin

Line(J0, I, J0+10, I);

I: =I-Ny;

end;

{12.Подпись графика}

{12.1.Характеристики шрифта, цвет }

SetColor(1); { цвет синий }

SetTextJustify(1, 1); {Размещение текста симметрично, относительно заданной точки по горизонтали и по вертикали}

{12.2.Вывод подписи }

I: =Round(IAll*(1-Pole/2)); {середина нижнего поля}

OutTextXY(JAll div 2, I, 'График функции Y = exp(X)');

{13.Задержка графика на экране }

while Not KeyPressed do;

{14. Вывод графика на печать (на принтер) - только если он подключен }

Pr;

CloseGraph; {14.Закрытие графического режима }

END.

Рисунок 10. Результат работы программы 31-го варианта

Разбор контрольного варианта № 32


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал