Delphi tilida massivlar hamda ularning tadbiqlari. Biz kundalik hayotimizda ko‘p turdagi jadvallardan foydalanamiz. Jadvalni tashkil etuvchilar uning elementlari deyiladi. Jadval ko’rinishidagi miqdorlar bir o’lchovli (chiziqli), ikki o’lchovli (to'g'ri to'rtburchakli), uch o’lchovli (parallelopipedli) va hokazo bo’ladi. Chiziqli jadvallar satr yoki ustun shaklida ifodalanadi. Masalan, talabalar ro'yxati guruh jurnalida ustun shaklidagi jadval ko'rinishida yozilgan. Talabalarning familiyalari bu jadvalning elementlarini tashkil etadi. Ularning har biri o'z tartib raqamiga ega va har bir tartib raqamga faqat bitta talabaning familiyasi mos keladi. Ikki o’lchovli jadvallar ustunlar va satrlardan tashkil topadi. Ularning elementlari ustun va satrlar kesishgan kataklarda joylashadi. Bunday jadvallarda biror elementni ko'rsatish uchun uning nechanchi satr va nechanchi ustunda joylashganligini, ya’ni satr va ustun bo’yicha tartib raqamlarini bilish kerak bo’ladi. Demak, ikki o’lchovli jadvalning har bir elementiga ikkita tartib raqami mos keladi. Dasturlash tillarida jadvallar bilan ishlash uchun massiv tushunchasi kiritilgan. Massiv – jadval ko’rinishidagi miqdor bo’lib, u aniq sondagi bir turli va tartiblangan (ya’ni, tartib raqamiga ega) elementlar majmuidan iborat. Massiv elementlarining tartib raqami butun sonlarda ifodalanadi, ya’ni ular manfiy son bo’lishi ham mumkin Delphi tilida har bir massiv o‘z nomiga ega bo’lib, ularni nomlash o'zgaruvchilarni nomlash kabidir. Masalan: M5, dars_jadvali, tub_sonlar. Massiv elementlarining tartib raqami indeks deb ataladi va indeks kvadrat qavs ichida yoziladi. Masalan, m[5] yozuvi – m nomli massivning beshinchi elementini bildiradi, ya’ni massiv nomi – m, indeks – 5. Misol. A nomli 7 ta elementdan iborat chiziqli jadvalni hosil qiling.
Tartib raqami
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
Qiymati
|
-5
|
8
|
0
|
25
|
-11
|
7
|
19
|
Demak, jadval elementlari va ularga mos qiymatlar quyidagicha moslikda ekan:
Jadval elementi
|
A[1]
|
A[2]
|
A[3]
|
A[4]
|
A[5]
|
A[6]
|
A[7]
|
Qiymati
|
-5
|
8
|
0
|
25
|
-11
|
7
|
19
| Ikki o’lchovli massiv elementlari ikkita indeks orqali aniqlanib, ular o‘zaro vergul bilan ajratib yoziladi va birinchi indeks satr tartib raqamini, ikkinchi indeks ustun tartib raqamini bildiradi. Masalan, M[4,3] yozuvi – M nomli massivning 4-satri va 3-ustuni kesishgan katakda joylashgan elementini bildiradi Delphi dasturlash tilida StringGrid jadval komponentasi mavjud bo’lib, bu komponenta yordamida bir yoki ikki o‘lchovli massivlarni jadval ko‘rinishida tasvirlash, ular qiymatini kiritish va tahrirlash uchun foydalaniladi. Bunda tasvirlanadigan jadval qator va ustun nomerlari noldan boshlanadi. Jadvalning ustun va qatorlar sonini keraklicha o‘zgartirishi mumkin. Bu uning xossasi yordamida aniqlanadi. Jadval har bir kesishgan ustun va satri yacheyka deyilib, unga kiritilgan ma’lumot simvol qatori bo‘lib aniqlanadi. Masalan, (3,5) yacheyka to‘rtinchi ustun va oltinchi qatorda joylashgan. StringGrid jadval komponentasining asosiy xossalari: ColCount – jadvaldagi ustunlar sonini aniqlaydi; RowCount – jadvaldagi satrlar sonini aniqlaydi; FixedCols – fiksirlangan ustunlar sonini aniqlaydi; FixedRows – fiksirlangan satrlar sonini aniqlaydi; Options –jadvad holatini aniqlaydi (aniqlash uning parametrlariga asosan bajariladi, masalan GoEditing parametr true qiymatiga ega bo‘lsa yacheykani tahrirlash mumkin, aks holda mumkin emas. Bu parametrlami aniqlash uchun Options xossasiga o‘tib. u ikki marta tez-tez bosiladi); ColWidths – jadvaldagi har bir ustun kengligini aniqlaydi; DefaultColWidth – jadvalning boshlang‘ich ustunlar kengligini aniqlaydi; DefaultRowHeight – jadval satrining boshlang‘ich balandligini aniqlaydi; FixedColor – fiksirlangan yacheyka rangini aniqlaydi; RowHeiohts – jadval satri balandligini aniqlaydi; Cells – simvol qatorli ikki o‘lchamli massivni aniqlaydi. Misol-1. Butun qiymatli A(10,10) massiv bosh va teskari diagonallari elementlari yig‘indisini toping. procedure TForm1.Button1Click(Sender: TObject); Var i,j,с:integer; A:array[1..10,1..10] of Real; S:real; sl:String; Begin For i:=1 to 10 do For j:=1 to 10 do StringGrid1.cells[i-1,j-1]:=inttostr(i*j); For i:=1 to 10 do For j:=1 to 10 do Val(StringGrid1.cells[i-1,j-1], a[i,j], с); S:=0; For i:=1 to 10 do For j:=1 to 10 do begin if (i=j) or (i+j=11) then StringGrid2.cells[i-1,j-1]:=StringGrid1.cells[i-1,j-1]; s:=s+a[i,j]; end; Str(s:7:2, sl); Memo1.Clear; Memo1.Lines.add('Summa ='+sl); end; end. - Etiboringiz uchun tashakkur
Do'stlaringiz bilan baham: |