![]() |
Eugeniusz Jakubas |
Stąd można pobrać teksty źródłowe poniższych 57 programów w Pascalu pr-pascal.zip - 34 kB
35. Styczna
Program Styczna;
uses graph;
var karta,tryb,n:integer;
skala,xp,yp,ip,ips:longInt;
x,y,x0,y0,krok,h:real;
xS,yS:string;
function f(x:real):real;
begin
f:=x*x-4*x-2;
end;
procedure osie;
begin
setColor(darkGray);setLineStyle(1,0,1);
for n:=0 to 30 do line(xp mod ip+n*ip,0,xp mod ip+n*ip,380);
for n:=0 to 22 do line(0,yp mod ip+n*ip,510,yp mod ip+n*ip);
setLineStyle(0,0,1);
for n:=0 to 2*(15 div skala) do
line(xp mod ips+n*ips,0,xp mod ips+n*ips,380);
for n:=0 to 2*(11 div skala) do
line(0,yp mod ips+n*ips,510,yp mod ips+n*ips);
rectangle(0,0,510,380);setColor(lightGray);setLineStyle(0,0,3);
line(0,yp,510,yp);line(500,yp-5,508,yp);line(500,yp+5,508,yp);
line(xp,0,xp,380); line(xp-5,10,xp,2); line(xp+5,10,xp,2);
str(-16/skala+x0:2:4,xS); outTextXY(3,198,xS);
str(16/skala+x0:2:4,xS);outTextXY(510-8*length(xS),198,xS);
str(-12/skala+y0:2:4,yS); outTextXY(260,370,yS);
str(12/skala+y0:2:4,yS); outTextXY(264,5,yS);
end;
procedure wykres;
begin
x:=-16/skala+x0; krok:=0.005/skala;
repeat
x:=x+krok;
y:=-f(x)*ips+yp;
if (y>0) and (y<380) then
putPixel(round(x*ips+xp),round(y),lightcyan);
if x<x0 then h:=-0.0001/skala else h:=0.0001/skala;
putPixel(round(x*ips+xp),
round(-((f(x0+h)-f(x0))/h*(x-x0)+f(x0))*ips+yp),lightRed);
until x>16/skala+x0;
setColor(yellow);circle(255,190,2);
str(x0:2:4,xS);str(y0:2:4,yS);
outTextXY(260,200,'A ('+xS+', '+yS+')');
end;
begin
karta:=vga; tryb:=vgaHi; initgraph(karta,tryb,'c:\tp\bgi');
skala:=1; ip:=16; ips:=ip*skala;
x0:=3; xp:=round(255-x0*ips);
y0:=f(x0); yp:=round(190+y0*ips);
osie; wykres;
readln; closegraph;
end.
|
![]() |