Èçìåíèòå ïðèëîæåíèå (óïðàæíåíèå 1) òàêèì îáðàçîì, ÷òîáû îíî âûïîëíÿëî ïîñòðîåíèå ãðàôèêà ôóíêöèè ó = Sqrt(x)*Sin(x), ïðè÷åì öâåò ãðàôèêà äîëæåí áûòü ñèíèì.
Äëÿ èçìåíåíèÿ âûðàæåíèÿ ôóíêöèè îòðåäàêòèðóéòå òåêñò ôóíêöèè f(x).
Ôóíêöèÿ èìåëà ñëåäóþùèé âèä:
Function f(x:real):real; {ôóíêöèÿ, ãðàôèê êîòîðîé íàäî ïåðåñòðîèòü}
begin
f:= 3*Sin(x)*Cos(x/6);
end;
Ïîñëå èçìåíåíèÿ òåëà ôóíêöèÿ áóäåò èìåòü ñëåäóþùèé âèä:
Function f(x:real):real; {ôóíêöèÿ, ãðàôèê êîòîðîé íàäî ïîñòðîèòü}
begin
f:=Sqrt(x)*Sin(x);
end;
Ïðåîáðàçóåì èñõîäíîå òåëî ïðîöåäóðû DrawGraph:
begin {îáëàñòü âûâîäà ãðàôèêà íà ôîðìå}
1:=10; {X - êîîðäèíàòà ëåâîãî âåðõíåãî óãëà}
b:=Forml.Ñ1ientHeight-20; (Ó - êîîðäèíàòà ëåâîãî âåðõíåãî óãëà}
h:=Forml.ClientHeight-40; // âûñîòà
w:=Forml.Width-40; // øèðèíà
õ1:=0; // íèæíÿÿ ãðàíèöà äèàïàçîíà àðãóìåíòà
õ2:=25; // âåðõíÿÿ ãðàíèöà äèàïàçîíà àðãóìåíòà
dx:=0.01; // øàã àðãóìåíòà
{îïðåäåëåíèå ìàêñèìàëüíîãî è ìèíèìàëüíîãî çíà÷åíèé ôóíêöèè íà îòðåçêå [xl,x2] äëÿ ìàñøòàáèðîâàíèÿ}
yl:=f(xl); {ìèíèìàëüíîå çíà÷åíèå ôóíêöèè}
y2:=f(xl); {ìàêñèìàëüíîå çíà÷åíèå ôóíêöèè}
x:=xl;
{âû÷èñëÿòü çíà÷åíèÿ ôóíêöèè äëÿ çíà÷åíèé õ<=õ2 è îïðåäåëèòü ìàêñèìàëüíîå è ìèíèìàëüíîå çíà÷åíèÿ äëÿ ìàñøòàáèðîâàíèÿ}
repeat y:=f(x); if y< then>
yl;=y; {åñëè òåêóùåå çíà÷åíèå ó ìåíüøå ìèíèìàëüíîãî, òî ó1:=ó}
if y>y2 then ó2:=ó; {åñëè òåêóùåå çíà÷åíèå ó áîëüøå ìèíèìàëüíîãî, òî ó2:=ó}
x:=x+dx; {ïåðåéòè ê ñëåäóþùåìó çíà÷åíèþ õ}
until (x>=x2); {êàê òîëüêî õ>=õ2. ïðåêðàòèòü}
my:=h/abs(y2-yl); // ìàñøòàá ïî îñè Y mx:=w/abs(x2-xl); // ìàñøòàá ïî îñè X
{çàäàòü íà÷àëî êîîðäèíàò} õ0:=1;
yO:=b-Abs(Round(yl*my));
with Forml.Canvas do {ðèñîâàíèå ãðàôèêà}
begin
{íà÷åðòèòü îñè êîîðäèíàò} MoveTo(I ,b);
LineTo(I,.b-h); {îñü x} MoveTo(xO,yO);
LineTo(xO+w.yO); {îñü ó} Text0ut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
{âûâåñòè ìàêñèìàëüíîå çíà÷åíèå}
TextOut(xO+w,yO,'x'); // ïîäïèñàòü îñü õ TextOut(1+5,b,FloatToStrF(yl,ffGeneral,6,3));
{âûâåñòè ìèíèìàëüíîå çíà÷åíèå}
Text0ut(l-7,b-h-5,'ó'); // ïîäïèñàòü îñü ó
{ïîñòðîåíèå ãðàôèêà} x:=xl:
repeat {ïîâòîðÿòü ðèñîâàòü òî÷êè}
y:=f(x); Forml. Canvas. Pixel s[xO+Round(x*mx),yO-Round(y*rny)]:=clRed;
{clRed - êðàñíûé öâåò ðèñîâàíèÿ ãðàôèêà}
x:=x+dx;
until (x>=x2); {ïðåêðàòèòü, êàê òîëüêî õ>=õ2}
end;
end;
ñëåäóþùèì îáðàçîì: äëÿ èçìåíåíèÿ öâåòà ãðàôèêà èçìåíèòå çíà÷åíèå ñâîéñòâà Forml.Canvas.Pixels ñ êðàñíîãî (cLRed) íà ñèíèé (cLBlue):
repeat {ðèñîâàòü òî÷êè}
y:=f(x);
Forml.Canvas.Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clBlue; {clBlue - ñèíèé öâåò}
x:=x+dx;
until (x>=x2); {ïðåêðàòèòü, êàê òîëüêî õ>=õ2}
Ñîõðàíèòå èçìåíåííîå ïðèëîæåíèå, îòêîìïèëèðóéòå åãî è ïðîâåðüòå åãî ðàáîòó. Óáåäèòåñü, ÷òî â îêíå ïðèëîæåíèÿ âûïîëíÿåòñÿ ïîñòðîåíèå ãðàôèêà çàäàííîé ôóíêöèè, ïðè÷åì öâåò ïèêñåëîâ ãðàôèêà – ñèíèé.
|