B. J. Boltayev, A. R. Azamatov, G. A. Azamatova, B. S. Xurramov nazariya, algoritm, dastur toshkent 2013
Download 372.89 Kb.
|
Algoritmlash va dasturlash asoslari seriyasidan Kitob – II b. J.-fayllar.org
- Bu sahifa navigatsiya:
- SetColor
320
240 (x,y ) (0,0) R y x 104
yozamiz. Aylana markazini aniqlaydigan butun o‘zgaruvchilarni kiritib olamiz: markazX va markazY. Aylana markazini (markazX, markazY) nuqtaga ko‘chirib Paskalda quyidagi formulalarni hosil qilamiz: x:= markazX +trunc(R*cos(alfa)); y:= markazY +trunc(R*sin(alfa)); Masaladagi muntazam beshburchak uchlari koordinatalarini aniqlash uchun quyidagicha muloha- za yuritamiz: Muntazam beshburchakka tashqi aylana chizish mumkin. Aylanani bir “aylanib” chiqish 360 0 yoki 2∙π ga teng. Bu burchakni 5 ga bo‘linsa, aylanani beshta teng yoyga ajratuvchi nuqtalar orasidagi burchak 2∙π/5 aniqlanadi. Ekran markazi (320, 240) ni koordinata boshi hisoblab muntazam beshburchakning yuqori uchi koordinatalarini radiusi 100 ga teng aylananing nuqtasi sifatida x:= 320 +trunc(100*cos(–pi/2)); y:= 240 +trunc(100*sin(–pi/2)); kabi aniqlash mumkin. Muntazam beshburchakning keyingi har bir nuqtasi shu formulada –pi/2 ga, mos ravishda, 1∙(2∙π/5)=2∙π/5, 2∙(2∙π/5)=4∙π/5, 3∙(2∙π/5)=6∙π/5, 4∙(2∙π/5)=8∙π/5 ni qo‘shish orqali hosil qilinadi. Endi bu nuqtalarni Line(X1,Y1,X2,Y2) protsedurasi yoki FillPoly(BS,KM) protsedurasi yordamida tutashtirish mumkin. Chiziq rangini tanlash uchun SetColor(4), fon rangini tanlash uchun esa SetBkColor(14) protseduralaridan foydalaniladi. Dasturi (Line): Uses Graph; Var gd, gm: integer; X1,Y1, X2, Y2: Integer; X3,Y3, X4,Y4, X5, Y5:Integer; Begin Gd:= 0; InitGraph(Gd, Gm, ''); Setbkcolor(14); Setcolor(4); X1:=320+trunc(100*cos( –pi/2)); Y1:=240+trunc(100*sin(–pi/2)); X2:=320+trunc(100*cos( –pi/2+2*pi/5)); Y2:=240+trunc(100*sin(–pi/2+2*pi/5)); X3:=320+trunc(100*cos( –pi/2+4*pi/5)); Y3:=240+trunc(100*sin(–pi/2+4*pi/5)); X4:=320+trunc(100*cos( –pi/2+6*pi/5)); Y4:=240+trunc(100*sin(–pi/2+6*pi/5)); X5:=320+trunc(100*cos( –pi/2+8*pi/5)); Y5:=240+trunc(100*sin(–pi/2+8*pi/5)); Line(X1,Y1,X2,Y2); Line(X2,Y2,X3,Y3); Line(X3,Y3,X4,Y4); Line(X4,Y4,X5,Y5); Line(X5,Y5,X1,Y1); Readln; CloseGraph; End. Dasturi (FillPoly): Uses Graph; Var gd, gm : Integer; bb : Array[1..5,1..2] of Integer; Begin Gd:= 0; InitGraph(Gd, Gm, ''); Setbkcolor(14); Setcolor(4); bb[1,1]:=320+trunc(100*cos( –pi/2)); bb[1,2]:=240+trunc(100*sin(–pi/2)); bb[2,1]:=320+trunc(100*cos( –pi/2+ 2*pi/5)); 105
–pi/2+ 2*pi/5)); bb[3,1]:=320+trunc(100*cos( –pi/2+ 4*pi/5)); bb[3,2]:=240+trunc(100*sin( –pi/2+ 4*pi/5)); bb[4,1]:=320+trunc(100*cos( –pi/2+ 6*pi/5)); bb[4,2]:=240+trunc(100*sin( –pi/2+ 6*pi/5)); bb[5,1]:=320+trunc(100*cos( –pi/2+ 8*pi/5)); bb[5,2]:=240+trunc(100*sin( –pi/2+ 8*pi /5)); FillPoly(5,bb); Readln; CloseGraph; End. 142*. Ichi siyrak qizil nuqtalar bilan to‘ldirilgan muntazam oltiburchak chizing. Yechim:
106
Line(X1,Y1,X2,Y2); Line(X2,Y2,X3,Y3); Line(X3,Y3,X4,Y4); Line(X4,Y4,X5,Y5); Line(X5,Y5,X6,Y6); Line(X6,Y6,X1,Y1); Floodfill( 320,240, red); Readln; CloseGraph; End. Dasturi (FillPoly): Uses Graph; Var gd, gm : Integer; A : Array[1..6,1..2] of Integer; Begin Gd:= 0; InitGraph(Gd, Gm, ''); Setbkcolor(14); Setcolor(4); SetFillStyle(10,4); A[1,1]:=320+trunc(100*cos( –pi/2)); A[1,2]:=240+trunc(100*sin(–pi/2)); A[2,1]:=320+trunc(100*cos( –pi/2+pi/3)); A[2,2]:=240+trunc(100*sin(–pi/2+pi/3)); A[3,1]:=320+trunc(100*cos( –pi/2+2*pi/3)); A[3,2]:=240+trunc(100*sin( –pi/2+2*pi/3)); A[4,1]:=320+trunc(100*cos( –pi/2+pi)); A[4,2]:=240+trunc(100*sin(–pi/2+pi)); A[5,1]:=320+trunc(100*cos( –pi/2+4*pi/3)); A[5,2]:=240+trunc(100*sin( –pi/2+4*pi/3)); A[6,1]:=320+trunc(100*cos( –pi/2+5*pi/3)); A[6,2]:=240+trunc(100*sin( –pi/2+5*pi/3)); FillPoly(6,A); Readln; CloseGraph; End . 143*. Ekran markazida muntazam sakkizburchak chizing. Yechim:
107
MoveTo(x[8], y[8]); LineTo(x[1], y[1]); LineTo(x[2], y[2]); LineTo(x[3], y[3]); LineTo(x[4], y[4]); LineTo(x[5], y[5]); LineTo(x[6], y[6]); LineTo(x[7], y[7]); LineTo(x[8], y[8]); Readln; Closegraph; End. 144. Kub rasmini chizing, barcha yoqlari turli rangda bo‘lsin. 145*. Sariq rangli to‘g‘ri chiziq va markazlari shu to‘g‘ri chiziqda joylashgan qizil rangli 5 ta aylana chizing. 146*. Radiusi R ga teng chegarasi sariq rangli, ichi ko‘k rangli doira chizing. Yechim:
1) SetColor(yellow) protsedurasi yordamida chegarasi tanlanlangan aylana Circle(320,240,R) protsedurasi yordamida markazda chiziladi. Uning ichini bo‘yash uchun rang va usulni SetFillStyle(1,blue) protsedurasi yordamida tan- lab, FloodFill(320,240,yellow) yordamida bo‘yaladi. 2) SetColor(yellow) protsedurasi yordamida chegarasi, SetFillStyle(1,blue) protsedurasi yordamida ichini bo‘yash uchun rang va usul tanlanlangan doira FillEllipse(320,240,R,R) protsedurasi yordamida markazda chiziladi. Dasturi (Circle): Uses graph; Var gd, gm, R: integer; begin Write(‘Radiusni kiriting: ‘); Readln(R); gd:=0; InitGraph(gd, gm,''); SetColor(yellow); Circle(320,240,100); SetFillStyle(1,blue); FloodFill(320,240,yellow); Readln; CloseGraph; end. Dasturi (FillEllipse): Uses Graph; var gd, gm, R: integer; Begin Write(‘Radiusni kiriting: ‘); Readln(R); gd:= 0; InitGraph(gd, gm, ''); SetColor(yellow); SetFillStyle(1,blue); FillEllipse(320,240,R,R); Readln; CloseGraph; end. 147*. Yonma-yon joylashgan tegib turadigan uch xil rangli doira chizing 148*. Uchalasi bir-biriga tegib turadigan uch xil rangli doira chizing. 149*. Olimpiada emblemasini eslatuvchi 5 ta halqa rasmini chizing. 150*. Oy rasmini chizing. Yechim:
ra bilan ichi fon rangi, ya’ni qoraga bo‘yalgan doira kesishtiriladi. Shunda bi- rinchi doiraning kerakmas qismi qora rangda aks etgani uchun ko‘rinmaydi va oy ko‘rinishi hosil bo‘ladi. Doirani oq gardishi ko‘rinmasligi uchun chegara rangini ham fon rangida olinishi muhim. 108
Uses graph; Var gd, gm: integer; Begin gd:=0; Initgraph(gd,gm,''); Setcolor(0); Setfillstyle(1,15); Fillellipse(200,200,50,50); Setfillstyle(1,0 ); Fillellipse(225,200,45,45); Readln; CloseGraph; End. Natijaning ekrandagi ko‘rinishi: 151*. Nur sochib turgan quyosh rasmini chizing. 152*. Dengiz uzra nur taratayotgan Quyosh rasmini chizing. Dengizni chizishda yoy chizish protsedurasidan foydalaning. Yechim:
chegarasi va ichi sariq rangli doira chiziladi: Setcolor(14); Setfillstyle(1,14); Fil- lellipse(510,100,50,50). Quyosh nurlarini chizish uchun quyosh markazidan chiquvchi chiziqlar olinishi hisoblashni osonlashtirgani uchun Line(500,100, X, Y); protsedurasi yordamida X va Y larni tanlash orqali chiziladi. Mavjlanayotgan dengizni chizish uchun Ellipse(X,Y,BB,OB,XR,YR) protsedurasidan foydalaniladi, bu yerda markazi (X,Y) nuqtada, x va y o‘qlari bo‘yicha radiuslari mos ravishda XR va YR ga teng ellipsning BB burchagidan OB burchagigacha bo‘lgan yoyini chizadi. Burchak gradus o‘lchov birligida ber- iladi. Dengizga rang berish uchun Floodfill protsedurasidan foydalaniladi. Dasturi: Uses graph; Var gd, gm: integer; Begin gd:=0; Initgraph(gd, gm, ''); Setbkcolor(11); Setfillstyle(1,yellow); Setcolor(yellow); Fillellipse(510,100,50,50); line(510,100,510,10); line(510,100,510,190); line(510,100,420,100); line(510,100,600,100); line(510,100,445,40); line(510,100,575,40); line(510,100,445,150); line(510,100,575,150); Setcolor(blue); Setfillstyle(1, blue); ellipse(40,300,22,145,70,45); ellipse(193,265,200,340,95,50); ellipse(340,307,40,146,70,45); ellipse(455,300,22,148,70,45); ellipse(608,265,200,340,95,50); Floodfill(40,340,blue); Readln; CloseGraph; End. Natijaning ekrandagi ko‘rinishi: 109
153*. Ekranni sariq gorizontal chiziqlar bilan to‘ldiring. Yechim:
1) To‘g‘ri to‘rtburchak chizib, uning ichini bo‘yash uchun rang va usulni SetFillStyle(usul,rang); protsedurasi yordamida tanlash orqali, bu yerda rang – tanlanayotgan rang kodi, usul – bo‘yash usuli. Bar(X1,Y1,X2,Y2) protsedurasi ekranda yuqori chap burchagi (X1,Y1) va quyi o‘ng burchagi (X2,Y2) koordina- tali nuqtalarda bo‘lgan, ichi joriy rang va joriy usulda bo‘yalgan to‘g‘ri to‘rtburchak chizadi. Joriy rangni sariq, ya’ni Yellow (kodi 14), bo‘yash usulini 2, ya’ni qalin gorizontal chiziqlar bilan to‘ldirish, X1=0, Y1=0, X2=639, Y2=479 kabi tanlash masala yechimini beradi; 2) Bar3D(X1,Y1,X2,Y2,a,b) protsedurasi joriy rang va joriy usulda bo‘yalgan parallelepiped chizadi, bu yerda a – parallelepiped yon tomonining uzunligi, b esa mantiqiy ifoda bo‘lib, uning qiymati “rost” bo‘lsa parallelepi- pedning yuqori qirrasi chiziladi, “yolg‘on” bo‘lsa chizilmaydi. Shuning uchun SetFillStyle(2,14); a=0, b=False, X1=0, Y1=0, X2=639, Y2=479 kabi tanlash masala yechimini beradi. Dasturi (Bar): uses graph; Var gd, gm: integer; begin gd := 0; InitGraph(gd, gm, ''); setfillstyle(2, yellow); Bar(0,0,639,479); Readln; CloseGraph; end. Dasturi (Bar3D): Uses Graph; Var gd, gm: integer; Begin gd:= 0; InitGraph(gd, gm, ''); SetFillStyle(2,14); Bar3D(0,0,639,479,0,False); Readln; CloseGraph; end. 154*. Ekranni teng to‘rt bo‘lakka bo‘lib, ularni mos ravishda qizil, sariq, yashil va ko‘k ranglarga bo‘yang. Yechim:
110
uchlari koordinatalari quyidagicha aniqlanadi: (0,0) va (320,240); (320,0) va (639,240); (0,240) va (320,479); (320,240) va (639,479). To‘g‘ri to‘rtburchaklar chizish uchun Bar(X1,Y1,X2,Y2); chegarasi rangini belgilash uchun SetColor(rang), ichini bo‘yash uchun SetFillStyle(usul,rang); protsedurasidan foydalanish qulay. Dasturi: Uses graph; Var gd, gm:integer; Begin gd := 0; InitGraph(gd, gm, ''); setfillstyle(1,red); bar(0,0,320,240); setfillstyle(1,yellow); bar(320,0,639,240); setfillstyle(1,green); bar(0,240,320,479); setfillstyle(1,blue); bar(320,240,639,479); Readln; CloseGraph; end. Natijaning ekrandagi ko‘rinishi: 155*. Ekranning to‘rtta burchagida eni 60 va bo‘yi 40 ga teng qizil rangli to‘rtburchaklar chizuvchi dastur tuzing. Yechim:
diagonallari uchlari koordinatalari quyidagicha aniqlanadi: chap yuqori burchak- dagi to‘g‘ri to‘rtburchakning diagonallari uchlari (0,0) va (60,40); o‘ng yuqori burchakdagi to‘g‘ri to‘rtburchakning diagonallari uchlari (639–60,0)=(579,0) va (639,40); chap quyi burchakdagi to‘g‘ri to‘rtburchakning diagonallari uchlari (0,479–40)=(0,439) va (60,479); o‘ng quyi burchakdagi to‘g‘ri to‘rtburchakning diagonallari uchlari (639–60,479–40)=(579,439) va (639,479). To‘g‘ri to‘rtburchaklar chizish uchun Bar(X1,Y1,X2,Y2); chegarasi rangini belgilash uchun SetColor(rang), ichini bo‘yash uchun SetFillStyle(usul,rang); protsedurasidan foydalanish qulay. Dasturi: Uses graph; Var gd, gm:integer; Begin gd := 0; InitGraph(gd, gm, ''); setcolor(4); setfillstyle(1, red); bar(0,0,60,40); bar(579,0,639,40); bar(0,439,60,479); bar(579,439,639,479); Readln; CloseGraph; end. Natijaning ekrandagi ko‘rinishi: 111
niga teng chegaralari va ichi turli rangli doiralar chizing. 157*. Mustaqillik maydonidagi O‘zbekiston xaritasi aks ettirilgan monument rasmini xaritasiz chizing. 158*. Mustaqillik maydonidagi O‘zbekiston xaritasi aks ettirilgan monument rasmini xaritasiz chizing va ichiga “O‘ZBEKISTON RESPUBLIKASI” matnini tagma-tag yozing. Yechim:
Download 372.89 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling