228
7.1-мысал. y=cos(x+2)/2 функциясының графигін салатын программа жазыңыз. Алдымен берілген интервалдағы нүктелер саны анықталады жəне графикке координаталық сетка салынады.
Төменде, осы есептің программа мəтіні берілген.
Program Gr;
Uses Crt,Graph;
Const
n=5; {сан жазылатын позиция саны } m=2; {мəн шығардағы мантисса мөлшері} k=100; {нүктелер саны}
nx=5; ny=5; {x жəне y бойынша сеткадағы
түзулер саны}
kxn=60; kxk=600;
kyn=45; kyk=350; {терезе параметрі} Type arr=array[1..100] of real; ari=array[1..100] of integer; Var
gd,gm,i:integer; {адаптер типі жəне режимі} x,y:arr; {аргумент жəне функция мəні үшін жиымдар}
kx,ky:ari; {x жəне y координатаық нүктелері үшін жиым}
ymin,ymax:real; {у экстремалды мəні} dx,dy:real; {графиктегі x жəне y бойынша сетка қадамы}
dkx,dky:integer; {экрандағы x жəне y бойынша сетка қадамы}
mx,my:real; {масштаб коэффициенті} st:string[5]; {жұмыс жолы}
h,xn,xk:real; {қадам, х өсі бойынша интервал} Begin
ClrScr;
Write(‘Интервалдың бастапқы жəне соңғы мəнін
енгізіңіз:’);
ReadLn(xn,xk);
h:=(xk-xn)/(k-1);{х өсі бойынша қадамды
анықтаймыз}
229
x[1]:=xn;
ymin:=1e30;
ymax:=-1e10;
for i:=1 to k do {функцияны табуляциялап, экс-
тремумды іздейміз}
begin
y[i]:=cos(x[i]+2)/2;
if y[i]>ymax then ymax:=y[i]; if y[i]100 the x[i+1]:=x[i]+h; end;
mx:=(kxk-kxn)/(x[k]-x[1]); {х өсі бойынша мас-
штабты анықтаймыз}
my:=(kyk-kyn)/abs(ymax-ymin); {y өсі бойынша
масштабты анықтаймыз}
for i:=1 to k do {нүктелер координатасын
анықтаймыз}
begin
kx[i]:=round((x[i]-x[1])*mx)+kxn;
ky[i]:=round((ymax-y[i])*my)+kyn;
end;
gd:=detect;
InitGraph(gd,gm,’’); {графикалық режимді іске қосамыз}
SetColor(4); {ағымдағы түс - қызыл} OutTextXY(180,20,’Y=cos(x+2)/2’); {тақырыпты шығарамыз}
SetColor(17); {салу түсі – көгілдір} SetBKColor(7); {фон түсі – сұр} Rectangle(kxn,kyn,kxk,kyk); {графикті шығару үшін тікбұрыш саламыз}
SetColor(4); {ағымдағы түс - қызыл}
for i:=1 to k-1 do {графикті шығарамыз}
Line(kx[i],ky[i],kx[i+1],ky[i+1]);
dkx:=round((kxk-kxn)/nx); {х өсі бойынша сетка
қадамын анықтаймыз}
dky:=round((kyk-kyn)/ny); {y өсі бойынша сетка
қадамын анықтаймыз}
230
SetColor(17); {ағымдағы түс – ақшыл көк}
for i:=1 to nx do { х өсіне параллель торды
саламыз}
Line(kxn+dkx*i,kyn,kxn+dkx*i,kyk);
for i:=1 to ny do {y өсіне параллель торды
саламыз }
Line(kxn,kyk-dky*i,kxk,kyk-dky*i);
dx:=(x[k]-x[1])/nx; {х өсі бойынша тор қадамын
анықтаймыз}
dy:=(ymax-ymin)/ny; {y өсі бойынша тор қадамын анықтаймыз}
SetTextJustify(1,2); {“төмен қарай орталыққа” туралау}
for i:= 1 to nx+1 do {аргумент мəнін
шығарамыз}
begin
Str((x[1]+dx*(i-1)):n:m,st); {санды жолға ай-налдырамыз}
OutTextXY(kxn+dkx*(i-1), kyk+6,st); {тор сызығының астына мəндерді шығарамыз} end;
SetTextJustify(2,1); {«сол жақтан орталыққа» туралау}
for i:=1 to ny+1 do {функция мəнін шығарамыз}
begin
Str((ymin+dy*(i-1)):n:m,st); {санды жолға ай-
налдырамыз }
OutTextXY(kxn-6,kyk-dky*(i-1),st); {y өсінің
сол жағына шығару}
end;
ReadLn; {ENTER-ді басуды күтеміз}
Closegraph;
End.
Программа жұмысының нəтижесі берілген интервалдағы функция графигі.
Нəтижені графиктен басқа диаграмма немесе түрлі гистограм-малар ретінде де алуға болады. Тағы бір мысал қарастырайық.
|