uses graph;
var mx,my,x,dx,y:real;
grD,grM,x0,y0,i,px,py:integer;
s:string;
begin
grD:=detect;{инициализация графического режима}
initgraph(grD,grM,'');
X0:=getmaxX div 2;{начало координат в центре экрана}
Y0:=getmaxY div 2;
{коэффициенты по осям для перевода реальных координат в экранные}
mx:=30;
my:=100;
line(0,y0,getmaxX,y0); {ось Х}
line(x0,getmaxy,x0,0); {ось У}
{подписи оси Y}
line(x0-3,y0-round(sin(pi/2)*my),x0+3,y0-round(sin(pi/2)*my));
outtextXY(x0-10,y0-round(sin(pi/2)*my),'1');
line(x0-3,y0+round(sin(pi/2)*my),x0+3,y0+round(sin(pi/2)*my));
outtextXY(x0-15,y0+round(sin(pi/2)*my),'-1');
{подриси оси Х}
for i:=1 to 6 do {максимальное количество засечек в одну сторону}
begin
line(x0+round(i*pi*mx/2),y0-3,x0+round(i*pi*mx/2),y0+3); {засечки на оси Х}
line(x0-round(i*pi*mx/2),y0-3,x0-round(i*pi*mx/2),y0+3);
if i mod 2=0 then {подписи через 1}
begin
str(i div 2,s);
if s='1' then s:='';{1pi 1 не пишем}
outtextXY(x0+round(i*pi*mx/2),y0+10,s+'pi');
outtextXY(x0-round(i*pi*mx/2),y0+10,'-'+s+'pi');
end;
end;
{центр}
outtextXY(x0+5,y0+10,'0');
{подписи концов осей}
outtextXY(getmaxX-10,y0-10,'X');
outtextXY(x0-10,10, 'Y');
dx:=0.001;
{график}
x:=-3*pi;
while x<=3*pi do
begin
px:=x0+round(x*mx); {изменение по оси Х}
y:=sin(x)/x; {график в реальных координатах,
при х=0 y=1 - первый замечательный предел}
py:=y0-round(y*my);{в экранных}
putpixel(px,py,12);{график красным}
x:=x+dx; {наращиваем х}
end;
readln
end.