Лабораторная работа 3.
Цель работы:применение изученных графических возможностей средыTurboPascal7.0 в построении графиков функций.
Практическое задание:
Получить у преподавателя уравнение функции.
Составить программу
Построить график с координатной сеткой.
Исходные данные:
Функция:
Текст программы:
Program Lab3_el;
Uses Crt,Graph;
Label 10;
Var GraphDriver,GraphMode,ErrorCode : Integer;
x,y,ux,uy,mx,my,ymf,i,sx,sy,t,r : Integer;
ch : char;
xi,xn,xk,h,A,q : real;
top : boolean;
mas : array[1..15] of PointType;
Procedure Timer(ast,qwr:word;var chr:char);
Var as:integer;
Begin
If ast=0 then ast:=65000;
If qwr=0 then qwr:=5;
for as:=1 to qwr do
if keypressed then
begin chr:=readkey; break; end
else Delay(ast);
End;
Begin
GraphDriver := Detect;
InitGraph (GraphDriver, GraphMode, 'D:\TP7');
ErrorCode := GraphResult;
if ErrorCode <> grOk then
begin
Writeln ('Ошибка: ',GraphErrorMsg(ErrorCode));
Writeln ('Работа программы прервана');
ReadKey; Halt(1);
end;
10:
ClearDevice;
SetBkColor(15);
SetColor(4);
MoveTo(10,20);
SetColor(5);
OutTextXY(10,5,'Y(x)=2*sin(2*x)*exp(-cos(2*x))');
OutText('Vvedite Xn=');
GoToXY(14,2);
Read(Xn);
MoveTo(10,36);
OutText('Vvedite Xk=');
GoToXY(14,3);
Read(Xk);
MoveTo(10,52);
OutText('Vvedite amplitudu A=');
GoToXY(23,4);
Read(A);
If Xn>=Xk then GoTo 10;
mx:=GetMaxX;
my:=GetMaxY;
t:=100;
ux:=mx div 2;
uy:=my div 2;
Rectangle(100,100,mx-100,my-100);
MoveTo(100,uy);
LineTo(mx-100,uy);
MoveTo(ux,100);
LineTo(ux,my-100);
ymf:=trunc(A*2.917);
SetColor(Yellow);
Line(100,uy-ymf,mx-100,uy-ymf);
Line(100,uy+ymf,mx-100,uy+ymf);
sx:=mx-200;
sy:=my-200;
MoveTo(100,uy);
xi:=Xn;
h:=(Xk-Xn)/sx;
r:=100;
SetColor(10);
repeat
y:=uy-trunc(A*2*sin(2*xi)*exp(-cos(2*xi)));
LineTo(r,y);
xi:=xi+h;
r:=r+1;
Timer(1000,1,ch);
until r>=sx+100;
Timer(0,20,ch); ch:=#97; {обнуляем ch}
ReadKey;
ClearDevice;
CloseGraph;
End.
Результат работы программы представлен на рис.15:
рис.15 График функции