Программалау тілдері оқулық Қазақстан Республикасы Білім жəне ғылым министрлігі бекіткен Алматы, 2011



Pdf көрінісі
бет16/24
Дата28.01.2017
өлшемі1,6 Mb.
#2918
түріПрограмма
1   ...   12   13   14   15   16   17   18   19   ...   24

214
         SetFillStyle(LtSlashFill,Yellow);
         Bar3D (300, 50, 340, 150, 15, TopOn);
         if ReadKey=#0 then d:=ord(ReadKey);
         CloseGraph;
      end
end. 
FillPoly процедурасы тұйық көпбұрыштың шекарасын сызып, 
бояйды. Тақырыбы:
Procedure FillPoly (N: Word; var Coords);
мұндағы  N – тұйық көпбұрыштың төбелерінің саны; Coords – 
төбелер координатасы жазылған, PointType типті айнымалы.
Төбелер координатасы Integer типті екі мəн арқылы беріледі: 
біріншісі көлденең, екіншісі тік координатасы. Олар үшін мо-
дульде анықталған келесі типтерді қолдануға болады:
type
   PointType = record
   х,у: Integer
end; 
Шекара сызығының стилі жəне түсі SetLineStyle жəне SetColor 
процедураларында беріледі, бояу типі жəне түсі – SetFillStyle про-
цедурасымен.
Келесі мысалда экранға кездейсоқ боялған көпбұрыштар са-
лынады.
uses Graph, CRT;
var
   d,r,e: Integer;
   p: array [1..6] of PointType; n,k: Word;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,’’);
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
{Экран ортасында терезе саламыз}
         d:=GetMaxX div 4;

215
         r:=GetMaxY div 4;
         Rectangle(d,r,3*d,3*r);
         SetViewPort(d+l,r+l,3*d-l,3*r-
l,ClipOn);
{Боялған кездейсоқ көпбұрыштарды шығару циклі}
         repeat
{Кездейсоқ түс пен өрнекті таңдаймыз}
SetFillStyle(Random(12),Random(succ(GetMaxCol
or)));
            SetColor 
(Random(succ(GetMaxColor)));
{Кездейсоқ координаталарды белгілейміз}
            n:=Random (4) + 3;
            for k:=1 to n do with p[k] do
               begin
                  x:=Random (GetMaxX div 2);
                  у:=Random (GetMaxY div 2)
               end;
            FillPoly (n, p)
 {Шығарып бояймыз}
         until KeyPressed;
         if ReadKey=#0 then k:=ord(ReadKey);
         CloseGraph
      end
end. 
FillEllipse  процедурасы эллипс шекарасын салып бояйды. 
Тақырыбы:
Procedure FillEllipse(X, У,RX,RY: Integer);
мұндағы  X, Y – центр координатасы; RX, RY – эллипстің 
пикселмен берілген көлденең жəне тік радиусы.
Эллипс SetLineStyle жəне SetColor процедураларында берілген 
сызықпен сызылып, SetFillStyle процедурасында орнатылған па-
раметрлер көмегімен боялады. 
Sector процедурасы эллипстің секторын сызып, ішін бояйды. 
Тақырыбы:
Procedure Sector (X,Y: Integer; BegA,EndA,RX,RY: Word);
мұндағы  BegA, EndA – сəйкесінше эллипстік сектордың бас-

216
тапқы жəне соңғы бұрыштары. Басқа параметрлер FillEllipse про-
цедурасының параметрлеріне сəйкес.
Келесі программада кездейсоқ боялған эллипстер мен сек-
торлар салады. Программадан шығу үшін кез келген пернені 
басыңыз.
uses Graph, CRT;
var
   d,r,e: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,r,'');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e));
   else
      begin
{Экран ортасында терезе саламыз}
         d:=GetMaxX div 4;
         r:=GetMaxY div 4;
         Rectangle(d,r,3*d,3*r);
         SetViewPort(d+1,r+1,3*d-1,3*r-
1,ClipOn);
{Шығару циклы}
         repeat
SetFillStyle(Random(12),Random(succ(GetMaxCol
or)));
SetColor(Random(succ(GetMaxColor)));
Sector(Random(GetMaxX div),Random(GetMaxY div 2),
       Random(360),Random(360),Random(GetMaxX 
 
 
 
 
 
 
 
    div 5),Random(GetMaxY div 5));
       FillEl.lipse (Random (GetMaxX div 2),
       Random(GetMaxY div 2),Random(GetMaxX 
div 5),
            Random(GetMaxY div 5))
         until KeyPressed;

217
         if ReadKey=#0 then d:=ord(ReadKey);
         CloseGraph
      end
end. 
PieSlice  процедурасы дөңгелек секторын салып, оның ішін 
бояйды. Тақырыбы:
Procedure PieSlice(X,Y: Integer; BegA,EndA,R: Word);
Sector процедурасынан ерекшелігі тек бір көлденең ради-
ус  R көрсетіледі, қалған параметрлер Sector процедурасының 
параметрлеріне сəйкес.
Сектор  SetLineStyle жəне SetColor процедураларында көр-
сетілген сызықпен сызылады да, SetFillStyle процедурасында 
орнатылған параметрлер бойынша боялады. Процедураны дөң-
гелек диаграмма салғанда қолданған ыңғайлы, мысалы, келесі 
программадағыдай (7.10-сурет).
 7.10-сурет. PieSlice процедурасының көрінісі
uses Graph, CRT;
var
   d,r,e: Integer;
begin
   {Графиканы іске қосамыз}
   d := Detect;
   InitGraph(d, r, ‘’);
   e := GraphResult;
15–1618

218
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
         {Кішкене сектор саламыз}
         SetFillStyle(WideDotFill, White);
         PieSlice(GetMaxX div 2+5,GetMaxY div 
2+4,270,360,100);
         { Үлкен сектор саламыз }
         SetFillStyle (SolidFill, Red);
         PieSlice (GetMaxX div 2,GetMaxY div 
2, 0,270,100).;
         {Жазулар шығарамыз}
         OutTextXY (GetMaxX div 2+90,GetMaxY 
div 2+70, ‘25%’);
         OutTextXY(GetMaxX div 2-50,GetMaxY 
div 2-20, ‘75%’);
         {Кез келген перненің басылуын 
күтеміз}
         if ReadKey=#0 then d := ord(ReadKey);
      CloseGraph
   end
end. 
7.5 Графикалық режимде мəтін шығару
Төменде сипатталатын стандарт процедуралар мен функция-
лар графикалық режимде мəтін шығаруды қолдайды. Бұл Write 
немесе WriteLn процедураларын қолданудан ерекше. Себебі, 
графикалық режимде түрлі қаріптермен, көлденеңінен немесе 
тігінен, қаріп мөлшерін өзгерте отырып, экранға мəтін шығара- 
тын арнайы процедуралар бар. Бірақ Borland фирмасының 
графикалық режимде экранға шығарылатын стандартты қаріп-
терінің ішінде орыс қаріптері жоқ. Сол себепті, орысша мəтінді 
экранға шығару мүмкін емес.
Төменде Graph модулінің мəтін шығаруға арналған стандарт-
ты құралдары сипатталады.

219
QutText  процедурасы курсордың ағымдағы орнынан бастап 
мəтіндік жолды шығарады. Тақырыбы:
Procedure OutText(Txt: String); 
мұндағы Txt – шығарылатын жол.
Мəтін көлденеңінен шығарылғаннан кейін көрсеткіш мəтін 
соңында орналасады, ал егер мəтін тігінен шығарылса, көрсеткіш 
бастапқы орнында қалады. Жол алдын ала орнатылған стиль жəне 
туралау параметрлері бойынша шығарылады. Егер мəтін экран 
шекарасынан шығып кетсе, штрихтық қаріптерді қолданғанда 
шекарадан шыққан қаріптер кесіп тасталынады, ал стандартты 
қаріптер мүлде шығарылмайды.
OutTextXY  процедурасы көрсетілген орыннан бастап мəтін 
шығарады. Тақырыбы:
Procedure OutTextXY (X,Y: Integer; Txt: String); 
мұндағы X, Y – мəтін шығару нүктесінің координатасы; 
Txt – шығарылатын жол. OutText процедурасынан тек шығару 
нүктесінің координатасымен ғана ерекшеленеді. Көрсеткіш өз 
орнын өзгертпейді.
SetTextStyle процедурасы экранға шығарылатын мəтін стилін 
орнатады. Тақырыбы:
Procedure SetTextStyle(Font,Direct,Size: Word); 
мұндағы Font – қаріп коды (нөмірі); Direct – бағытталу коды; 
Size – қаріп мөлшерінің коды.
Қаріп кодын көрсету үшін төмендегідей алдын ала анықталған 
тұрақтыларды қолдануға болады:
const
   DefaultFont = 0;{Нүктелік қаріп 8x8}
   TriplexFont = 1;{Үш еселенген қаріп TRIP.CHR}
   SmallFont = 2;{Кішірейтілген қаріп LITT.CHR}
   SansSerifFont = 3;{Тік қаріп SANS.CHR}
   GothicFont = 4;{Готикалық қаріп GOTH.CHR} 
Бұл тұрақтылар 4.0, 5,0, 5.5 жəне 6.0 версиялар үшін барлық 
қаріптерді анықтайтындығын еске сала кетеміз. 7.0 версия-
да қаріптер саны əлде қайда кеңейген, алайда жаңа қаріптер 
үшін мнемоникалық тұрақтылар қарастырылмаған. Бұл версия-
да, SetTextStyle процедура 
сында келесі қаріптер нөмірін қол-
дануыңызға болады:

220
Нөмір
Файл
Қысқаша сипаттамасы
5
scri.chr
«Қолжазба» қаріп
6
simp.chr Courier типті бірштрихты қаріп 
7
tscr.chr
Times Italic типті қисайтылған қаріп 
8
Icom.chr Times Roman типті қаріп
9
euro. chr Courier типті үлкейтілген қаріп
10
bold.chr
Үлкен екіштрихты қаріп
DefaultFont қаріпі Graph модуліне кіреді жəне оған кез кел-
ген уақытта қол жеткізуге болады. Бұл жалғыз матрицалық 
қаріп, оның символдары 8x8 пиксел матрица арқылы салынады. 
Қалған қаріпердің барлығы векторлық: олардың элементтері 
бағыты жəне көлемі арқылы сипатталатын векторлар жиынығы 
арқылы құрастырылады. Векторлық қаріптер бейнелену мүм-
кіндіктерінің кеңдігімен ерекшеленеді. Ал, олардың басты ерек-
шелігі қаріп мөлшерінің бейнелену сапасын төмендетпей, өте 
жеңіл өзгеруінде. Қаріптердің əрқайсысы жеке дискілік файлда 
орналасады. Егер Сіз қандай да бір векторлық қаріпті қолданатын 
болсаңыз, ол қаріп алдын ала сіздің каталогыңызға жазылып 
қойылуы тиіс. Таңдап алынған қаріп каталогта жоқ болса, оның 
орнына стандартты қаріп шығарылады.
DefaultFont қаріпі графика іске қосылған кезде шығарыла-
тын мəтін сарапталып, графикалық драйвермен жасалынады. 
Сондықтан, егер сіздің компьютеріңіз мəтіндік режимде орыс 
əріптерін шығара алатын болса, онда осы қаріптің көмегімен 
графикалық режимде де орысша мəтін шығара аласыз. Басқа 
қаріптерді тек модификациялаудан кейін ғана шығаруға болады.
Шығарылатын мəтін бағытын беру үшін келесі тұрақтыларды 
қолдануға болады:
const
   HorizDir = 0;{солдан ңға қарай}
   VertDir = 1;{Төменнен жоғары қарай} 
Стандартты OutText жəне OutTextXY процедуралары мəтінді 
тек екі бағытта ғана шығара алады. Векторлық қаріптердің 
құрылымын біле отырып, мəтінді кез келген бағытта шығаратын 

221
жеке шығару процедураларын құрастыру қиын емес (F_GrText 
модулінің OutString процедурасы).
Əр қаріп өз өлшемін он есе өзгерте алады. Шығарылатын 
символ көлемі 1-ден 10-ға дейінгі аралықта өзгеретін Size па-
раметрімен беріледі (нүктелік қаріп – 1 мен 32 диапазонында). 
Егер параметр мəні 0 болса, нөмірі 1 көлем орнатылады, егер 10 
үлкен болса – 10 - нөмірлі көлем орнатылады. Экрандағы барлық 
мүмкіндіктерді көруді жүзеге асыратын қаріптің ең кіші көлемі - 
4 (нүктелік қаріп үшін –1) болады.
Келесі программада əртүрлі қаріптер шығарылады (7.11-су-
рет). Олардың көлемдері жолдың биіктіктері бірдей болатындай 
етіп таңда 
лып алынған. Программаны орындауға жіберер ал-
дында .CHR кеңейтілімі бар барлық қаріп файлдарын ағымдағы 
каталогқа көшіріп алу керек.
uses Graph, CRT;
const
   FontNames: array [1..10] of String[4] =
      ('TRIP','LITT','SANS','GOTH', 'SCRI', 
'SIMP', 'TSCR', 'LOOM', 'EURO','BOLD');
   Tabl=50;
 7.11-сурет.

222
   Tab2=150;
   Tab3=220;
var
   d,r,Err, {Графиканы іске қосатын айнымалы-
лар}
   Y,dY,{Шығару ординатасы жəне оның өсімшесі}
   Size,{Символдар өлшемі}
   MaxFont,{Ең үлкен қаріп нөмірі}
   k: Integer;{Қаріп нөмірі}
   NT, SizeT, SynibT: String;{Шығарылатын жол}
   c: Char;
{-------------------}
Procedure OutTextWithTab ( S1, S2, S3, S4: 
String);
{Таb1..ТаbЗ табуляция позициясын ескере оты-
рып, S1..S4 жолдарын шығарады}
begin
   MoveTo((Tab1-TextWidth(Sl)) div2,Y);
   OutText (S1);
   MoveTo(Tabl+(Tab2-Tabl-TextWidth(S2)) 
div2,Y);
   utText (S2);
   MoveTo(Tab2+(Tab3-Tab2-TextWidth(S3)) div 
2,Y);
   OutText(S3);
   if S4='Symbols' then
{Symbols бағанының тақырыбы}
      MoveTo((Tab3+GetMaxX-TextWidth(S4)) div 
2,Y)
   else {Қалған жолдар}
      MoveTo(Tab3+3,Y);
   OutText(S4)
end;
{------------}
begin
   {Графиканы іске қосамыз}
   InitGraph(d,r,'');

223
   Err:=GraphResult;
   if ErrogrOk then
      WriteLn(GraphErrorMsg(Err))
   else
      begin
 {Қаріптер санын анықтаймыз:}
         {$IFDEF VER70'}
         MaxFont:=10;
         {$ELSE}
         MaxFont:=4;
         {$ENDIF}
         SetTextStyle(l,0,4);
         Y:=0;
        OutTextWithTab('N','Name',Size','Symbo
ls');
{Тақырыптың Y сызығының биіктігін анықтаймыз}
         Y:=4*TextHeight('Z') div3;
         Line(0,Y,GetMaxX,Y);
{Кестенің Y сызығының басын жəне əр жолдың dY 
биіктігін анықтаймыз}
         Y:=3*TextHeight('Z') div 2;
         dY:=(GetMaxY-Y) div (MaxFont);
{Символдар жолын дайындаймыз}
         SymbT:='';
         for с:='a' to 'z' do
            SymbT:=SymbT+c;
{Кесте жолдарын шығару цикл}
        for k:=1 to MaxFont do
            begin
               Size:=0;
 {Жол биіктігі dY тең болғанша өлшемді 
үлкейтеміз}
               repeat
                  inc(Size);
                  SetTextStyle(k,0,Size+1);
               until (TextHeight('Z')>=dY) or 

224
(Size=10) or (TextWidth(FontNames[k])>(Tab2-
Tab1));
{Қаріптің NT нөмірін жəне и SizeT өлшемін дай-
ындаймыз}
               Str(k,NT);
               Str(Size,SizeT);
{Кесте жолын шығарамыз}
       SetTextStyle(k,HorizDir,Size);
       OutTextWithTab(NT,FontNames[k],SizeT,Sy
mbT);
               inc(Y,dY)
            end;
{Рамка сызықтарын саламыз}
         Rectangle(0,0,GetMaxX,GetMaxY);
         Line(Tab1,0,Tabl,GetMaxY);
         Line(Tab2,0,Tab2,GetMaxY);
         Line(Tab3,0,ТаЬЗ,GetMaxY);
{Тұтынушы əрекетін күтеміз}
         ReadLn;
         CloseGraph
      end
end. 
SetTextJustlfy  процедурасы енгізілетін мəтінді курсордың 
ағымдағы орнына қарай немесе берілген координаталарға байла-
нысты туралануды тағайындайды. Тақырыбы:
Procedure SetTextJustify(Huri2,Vert: Word); 
мұндағы Horiz – көлденең туралау; Vert – тігінен туралау.
Туралау мəтіннің қалай орналасатындығын – көрсетілген 
орыннан солға немесе оңға қарай, жоғары, төмен не ортаға ту-
раланатындығын анықтайды. Мұнда келесі тұрақтыларды қол-
дануға болады:
const
   LeftText = 0; {Көрсеткіш мəтіннің сол жағында }
   CenterText= 1; { Симметриялы солға жəне оңға, жоғары жəне 
төмен}
   RightText = 2; { Көрсеткіш мəтіннің оң жағында }
   BottomText= 0; { Көрсеткіш мəтіннің төменгі жағында }

225
   TopText = 2; { Көрсеткіш мəтіннің жоғарғы жағында } 
Келесі программа мəтінді графикалық экранның центріне бай-
ланысты əртүрлі орналастыру тəсілдерін бейнелейді (7.12-сурет).
uses Graph, CRT;
var
   d,r,e: Integer;
begin
{Графиканы іске қосамыз}
   d:=Detect; InitGraph(d,, r, ' ');
7.12-сурет.
 
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
{Экран ортасында қилысқан сызықтар саламыз}
  Line(0,GetMaxY div 2,GetMaxX,GetMaxY div 2);
  Line(GetMaxX div 2,0,GetMaxX div 2,GetMaxY);
Мəтінді центрдің оң жəне жоғарғы жағына орна-
ластырамыз}
         SetTextStyle(TriplexFont,HorizDir,3);
         SetTextJustify(LeftText,BottomText);
         OutTextXY (GetMaxX div 2, GetMaxY div 
2, 'LeftText,BottomText');
{Мəтінді сол жəне төменгі бөлікке орналастыра-
мыз}
  SetTextJustify (RightText, TopText);
  OutTextXY (GetMaxX div 2, GetMaxY div 2, 
'RightText, TopText');
         if ReadKey=#0 then d := ord(ReadKey);

226
         CloseGraph
      end
end. 
SetUserCharSize процедурасы берілген пропорциялар бойын-
ша енгізілетін символдар мөлшерін өзгертеді. Тақырыбы:
Procedure SetUserCharSize(XI,X2,Y1,Y2: Word); 
мұндағы XI...Y2 – көлденең жəне тік пропорцияларды 
анықтайтын Word типті өрнек.
Процедура тек векторлық қаріптерге қолданылады. Про-
порциялар қаріптің ені мен биіктігінің стандартты мəннен 
неше есе өсетіндігін көрсететін масштабтық коэффициентті бе-
реді. Көлденең коэффициент X1-дің Х2-ге қатынасы ретінде 
беріледі, тігінен –Y1-дің Y2-ге қатынасы ретінде беріледі. Мы-
салы, символдардың енін екі есе өсіру үшін Х1=2 жəне Х2=1 деп 
беру керек. Символдардың стандартты мөлшері SetUserCharSize 
про 
цеду 
ра 
сының алдыңғы параметрлерін алып тастайтын 
SetTextStyle процедурасы арқылы беріледі.
Келесі мысалда кішірейтілген қаріптің пропорцияларының 
өзгеруін көреміз.
uses Graph, CRT;
var
   d, r, e: Integer;
begin
 {Графиканы іске қосамыз}
   d:=Detect; .InitGraph (d, r, '');
   e:=GraphResult;
   if e <> grOk then
      WriteLn(GraphErrorMsg(e))
   else
      begin
         MoveTo (0, GetMaxY div 2);
        SetTextStyle (SmallFont, HorizDir, 5);
         SetTextJustify (LeftText, 
BottomText);
 {Стандартты 5 биіктікпен мəлімет шығарамыз}
         OutText ('Normal Width,');
         {Қаріптің енін екі еселейміз}

227
         SetUserCharSize (2, 1, 1, 1);
         OutText (' Double Width, ');
 {Биіктігін екі есе өсіріп, стандартты енді 
береміз}
         SetUserCharSize (I, 1, 2, 1);
         OutText ('Double Height,');
         SetUserCharSize (2, 1, 2, 1);
         OutText (' Double Width and Height');
         if ReadKey=#0 then d := ord(ReadKey);
         CloseGraph
      end
end. 
TextWidth функциясы енгізілетін жолдың пикселмен берілген 
ұзындығын қайтарады. Тақырыбы:
Function TextWidth(Txt: String): Word; 
Енгізудің ағымдағы стилі мен сəйкесінше SetTextStyle жəне 
SetUserCharSize процедураларымен берілген символдардың 
мөлшерінің өзгеру коэффициентін ескереді.
TextHeight функциясы енгізілетін жолдың пикселмен берілген 
биіктігін қайтарады. Тақырыбы:
Function TextHeight(Txt: String): Word; 
GetTextSettings  процедурасы мəтіннің ағымдағы стилі мен 
турала нуын қайтарады. Тақырыбы:
Procedure GetTextSettins(var Textlnfo: TextSettingsType); 
мұндағы Textlnfo – Graph модулінде төмендегідей анықталған 
TextSettingsType типті айнымалы:
type
   TextSettingsType = record
   Font : Word; {Қаріп нөмірі}
   Direction: Word; {Бағыты}
   CharSize : Word; {Мөлшер коды}
   Horiz : Word; {Көлденең туралау}
   Vert : Word; {Тігінен туралау }
end
InstallUserFont  функциясы программаға стандартты емес 
вектор лық қаріпті қолдануға мүмкіндік береді. Тақырыбы:

228
Function InstallUserFont(FileName: String): Integer; 
мұндағы FileName – векторлық қаріп жазылған файл аты.
InstallUserDriver  функциясы BGI – драйверлер жүйесіне 
стандартты емес графикалық драйверді қосады. Тақырыбы:
Function InstallUserDriver(FileName: String; AutoDetectPtr: 
Pointer): Integer; 
мұндағы FileName – драйвер программасы жазылған файл 
аты; AutoDetectPtr – дисплей түрін автоматты түрде анықтайтын 
арнайы процедураға кіру нүктесінің адресі, басқа процедуралар 
сияқты драйвер құрамында болуы тиіс.
Бұл функция стандартты графикалық драйверлер тобын ке-
ңейтеді жəне көбіне аппараттық құралдарды программалау үшін 
қажет.
Көп есептердің нəтижесін график түрінде берген дұрыс. Гра-
фик тұрғызу есептерінің бастапқы берілуі алуан түрлі. Мəселен, 
бір немесе бірнеше функция графигі бір немесе бірнеше мас-
штабта керек болуы мүмкін. Функциялар аналитикалық тəсілмен 
немесе кесте түрінде берілгенде функцияны іштей буындау (ин-
терполяция) қажет болуы мүмкін. Графикті қарапайым түрде не-
месе логарифмдік масштабпен, координаталық өстерді қосып не-
месе қоспай салуға болады. Алайда график тұрғызудың негізгі 
принциптері өзгеріссіз қалады.
Функция графигін салу үшін, экранда графиктің əр нүкте-
сіне сəйкес нүкте қою керек. Экрандағы нүктелер координата-
сы график ауданына қатысты, масштабты жəне өстің экранда 
төмен бағытталғандығын ескере отырып анықталады. Х жəне У 
өстерінің масштабы экрандағы график ауданына жəне мəндер ин-
тервалына байланысты алынады.
График нүктелерінің координатасы төмендегідей түрде 
анықта лады:
kx
i
 = int(x
ima
 – x
i
) · m
x
n + kx
n
,
ky
i
 = int(y
max
 - y
i
) · m
y
n + ky
n

мұндағы int – санның бүтін бөлігін алу дегенді білдіреді.
График барлық есептелген нүктелер арқлы өтетін сызықтар 
немесе сынық сызықтар жиынтығы ретінде салынады.
Координаталық сетканы салу координаталары дəл осылай 
анықталады.

229
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);{
х өсі бойынша қадамды 
анықтаймыз}


Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   24




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет