1 -mavzu: Sodda, bir va ko‘p amalli (qavsli) arifmetik ifodalarni hisoblash Reja


Download 7.86 Mb.
bet29/35
Sana21.11.2023
Hajmi7.86 Mb.
#1791814
1   ...   25   26   27   28   29   30   31   32   ...   35
Bog'liq
1 -mavzu Sodda, bir va ko‘p amalli (qavsli) arifmetik ifodalarn

Amaliy topshiriq:

MoveTo va LineTo usullari. Chizma chizishda to‘g‘ri chiziq kesmasini chizish ko‘p ishlatiladi. Bu borada Delphi qanday imkoniyatlarga ega? Canvas obyektining MoveTo (... ga o‘t) va LineTo (...gacha chiz) usullari kesma chizish uchun xizmat qiladi. Ularning ikkalasi ham butun qiymatli ikkitadan argumentga ega. Bu argumentlar yordamida rasmdagi nuqtaning koordinatalari ko‘rsatiladi.


Uchlari (x1, y1) va (x2, y2) nuqtalarda bo‘lgan kesmani chizish uchun
avval MoveTo(x1, y1) usuli bilan kesmaning birinchi uchiga o‘tiladi va
Lineto(x2,y2) usuli bilan ikkinchi uchigacha bo‘lgan kesma chiziladi. Bunda grafik kursor (x2, y2) nuqtaga o‘tadi. Agar yana bir marta Lineto(x3,y3) usuli qo‘llansa, uchlari (x2, y2) va (x3, y3) nuqtalarda bo‘lgan kesma chiziladi va grafik kursor (x3, y3) nuqtaga o‘tadi. Bu usullarning amalda qo‘llanishini Muntazam N burchak diagonallari deb nomlangan ilovada ko‘rib chiqamiz. Delphi da yangi ilova yaratamiz va unga bittadan Image, SpinEdit va Button obyektlarini joylaymiz. Buttonning sarlavhasini chiz, SpinEdit sarlavhasini esa N ga o‘zgartiramiz. SpinEditning eng katta qiymati (MaxValue) ni 40, eng kichik qiymati (MinValue) ni 3, joriy qiymati (Value) ni 7 ga teng qilib olamiz. Image ning bo‘yi (Height) va eni (Width) ni 500 ga teng qilib olamiz.
Button tugmasini ikki marta bosib, unga diagnallar degan buyruqni kiritamiz. Bunday buyruq hozircha yo‘q, shuning uchun shu nomdagi protsedurani TForm1.Button1Click protsedurasidan oldin kiritamiz:
procedure diagonallar;
var i,j,n,r:integer;
x,y: array [0..40] of integer; begin
r:=Form1.Image1.Height div 2;
Form1.Image1.Canvas.Pen.Color:=clRed;
Form1.Image1.Canvas.Rectangle(-1,-1,2*r+2,2*r+2);
n:=form1.SpinEdit1.Value;
for i:=1 to n do begin
y[i]:=round(r-r*cos(2*pi/n*i));
x[i]:=round(r+r*sin(2*pi/n*i)); end;
for i:=1 to n-1 do for j:=i+1 to n do begin
Form1.Image1.Canvas.MoveTo(x[i],y[i]);
Form1.Image1.Canvas.LineTo(x[j],y[j]); end; end;
Bu protsedurada oltita o‘zgaruvchi kiritamiz. i va j o‘zgaruvchilar siklni boshqarish uchun ishlatiladi. N o‘zgaruvchida ko‘pburchakning burchaklari soni, r o‘zgaruvchida muntazam ko‘pburchakka tashqi chizilgan aylana radiusi saqlanadi. x va y massivlarda ko‘pburchak uchlarining koordinatalari saqlanadi.
1. Quyidagi grafik vazifalarni bajaruvchi ilovalarni yarating.
1.1. Ekranga ichma-ich joylashgan 10 ta to‘g‘ri to‘rtburchak
chiqaradigan ilova yarating.
1.2. Ekranga ichma-ich joylashgan va chap quyi burchagi
o‘zgarmaydigan 12 ta kvadrat chiqaradigan ilova yarating.
1.3. Ekranga ichma-ich joylashgan va 10 ta to‘g‘ri burchakli
uchburchak chiqaradigan ilova yarating.
1.4. Ekranga ichma-ich joylashgan 15 ta va markazlari bir nuqtada
bo‘lgan 15 ta aylana chiqaradigan ilova yarating.
1.5. Ekranga ichma ich joylashgan va markazlari bir nuqtada bo‘lgan 8
ta ellips chiqaradigan ilova yarating.
1.6. Ekranga ichma ich joylashgan va turli ranglarda chizilgan 5 ta
to‘g‘ri to‘rtburchak chiqaradigan ilova yarating.
1.7. Ekranga ichma-ich joylashgan va turli qalinlikdagi chiziqlar bilan
chizilgan 5 ta aylana chiqaradigan ilova yarating.
1.8. Ekranga turli usuldagi chiziqlar bilan chizilgan 5 ta ellips
chizadigan ilova yarating.
1.9. Ekranga ichma-ich joylashgan va o‘ng yuqori burchagi
o‘zgarmaydigan 11 ta to‘g‘ri to‘rtburchak chiqaradigan ilova yarating.



Download 7.86 Mb.

Do'stlaringiz bilan baham:
1   ...   25   26   27   28   29   30   31   32   ...   35




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling