1–misol. A nomli 7 ta elementdan iborat chiziqli jadvalni qaraymiz.
-
Tartib raqami
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
Qiymati
|
x
|
A
|
a
|
t
|
r
|
z
|
m
|
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
|
x
|
A
|
a
|
t
|
r
|
z
|
m
|
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, S[4,3] yozuvi – S nomli massivning 4satri va 3-ustuni kesishgan katakda joylashgan elementini bildiradi.
2–misol. S nomli 45 (4 ga 5, ya’ni 4 ta satrli va 5 ta ustunli) to‘g‘ri to‘rtburchakli jadvalni tasvirlaymiz (jadval elementlari - katakchada ko‘k rangda).
Ustun bo‘yicha tartib raqami -
|
-
|
2
|
3
|
4
|
5
|
6
|
1
|
3.2
S[1,2]
|
1.37
S[1,3]
|
-1.25
S[1,4]
|
7.12
S[1,5]
|
-11.4
S[1,6]
|
|
|
|
2
|
0.5
S[2,2]
|
1.1
S[2,3]
|
1.2
S[2,4]
|
-1,1
S[2,5]
|
4.22
S[2,6]
|
|
|
3
|
-0.1
S[3,2]
|
1.01
S[3,3]
|
71.2
S[3,4]
|
4.1
S[3,5]
|
-4.11
S[3,6]
|
|
|
4
|
6.3
S[4,2]
|
-7.01
S[4,3]
|
1.5
S[4,4]
|
7.5
S[4,5]
|
-1.09
S[4,6]
|
Jadvaldan ko‘rinadiki, masalan, S[1,3]=1.37, S[2,2]=0.5, S[4,6]= –1.09.
Dasturda massivlar o‘zgaruvchilar kabi albatta tavsiflanishi zarur. Buning uchun Paskal dasturlash tilining Array xizmatchi so‘zi ishlatiladi. Bu so‘zdan keyin kvadrat qavs ichida massivning birinchi va oxirgi elementlarining tartib raqamlari o‘zaro ikkita nuqta (..) bilan ajratib yoziladi. Kvadrat qavs davomida Paskalning of xizmatchi so‘zi va undan keyin massiv elementlarining turi yoziladi. Masalan:
Var
A: array[1..7] of char; {1-misoldagi elementlari 1 dan 7 gacha tartiblangan char (belgili miqdorli) turdagi A nomli chiziqli massiv}
S: array[1..4,2..6] of real; {2-misoldagi satrlari 1 dan 4 gacha va ustunlari 2 dan 6 gacha tartiblangan real (haqiqiy miqdorli) S nomli ikki o‘lchovli massiv} bma: array[-2..100] of integer; {-2 dan 100 gacha tartiblangan butun
turdagi bma nomli chiziqli massiv}
Umuman, massiv deganda, yagona nom bilan belgilangan, bir turdagi, tartiblangan miqdorlarning majmui tushuniladi. Massiv indeksi turi LongInt turdan tashqari barcha tartiblangan turdagi miqdor bo‘lishi mumkin. Paskalda dastur uchun 65520 bayt, barcha o‘zgaruvchilar birgalikda band qilishi mumkin bo‘lgan xotira 64816 bayt bo‘lishi mumkin.
3–misol. Bir o‘lchovli A jadval beshta elementga ega bo‘lsin:
-
Tartib raqami
|
–1
|
0
|
1
|
2
|
3
|
Qiymati
|
3
|
2
|
12
|
10
|
-8
|
Paskalda bu jadval elementlari quyidagicha ifodalanadi:
A[–1] = 3; A[0] = 2; A[1] = 12; A[2] = 10; A[3] = –8;
Massiv elementlari indeksini biror butun qiymatli o‘zgaruvchi (masalan, i) orqali ifodalash mumkin, masalan, agar i = 1 bo‘lsa, A[i] = 12, agar i = 3 bo‘lsa, A[i] = –8 bo‘ladi.
4–misol. Ikki o‘lchovli butun qiymatli B massiv berilgan bo‘lsin:
3 10 5 2 7 9
B =
Massiv elementlariga o‘zimiz tartib raqamlari berib B[0,0], B[0,1], B[0,2],
B[1,0], ... kabi yozib olamiz (B[0][0], B[0][1], B[0][2], B[1][0], ... kabi yozish
3 10 5 B00 B01 BB0212 = [Bij]
B =
2 7 9 B10 B11
ham mumkin):
bu yerda i = 0, 1 va j = 0, 1, 2 (i – satr tartib raqami, j – ustun tartib raqami) qiymatlarni qabul qiladi. Bu jadval Paskalda quyidagicha tavsiflanadi:
Var b: array[0..1, 0..2] of Integer;
Umumiy holda indeks sifatida o‘zgaruvchi yoki ifoda qo‘llaniladi. Masalan, i=0, j=2 bo‘lsa, 4-misolda B[i, j] = 5 va (i+1=0+1=1 va j–2=2–2=0 bo‘lgani uchun) B[i+1, j–2] = 2 bo‘ladi.
Biz jadvallarning faqat chiziqli va to‘g‘ri to‘rtburchakli shakllari bilan tanishdik. Aslida Paskal tilida ko‘p o‘lchovli (255 tagacha) jadval ko‘rinishidagi miqdorlardan ham foydalanish mumkin. Bunday jadvallarni tavsiflashga bir necha misol keltiramiz.
var s: array[boolean, 1..7, 0..10] of Byte; {s – Byte turli 3 o‘lchovli massiv} var t, k: array [1..100, byte, 1..50] of string; {t va k – 3 o‘lchovli string turli massivlar}
var f: array [-5..10, 0..10, char] of char; { f – 3 o‘lchovli char turli massiv }
Paskal dasturlash tilida tavsiflangan massivlar uchun xotiradan joy zahiralab qo‘yiladi. Shu sababli xotiraning keragidan ortiq qismini band qilmaslik uchun massivni turi bilan birga nechta elementdan iborat ekanligini bilish maqsadga muvofiq bo‘ladi. Umuman, chiziqli K dan S gacha tartiblangan massiv elementlari soni S–K+1 ta, ikki o‘lchovli satrlari B dan M gacha va ustunlari A dan G gacha tartiblangan massiv elementlari soni (M–B+1) · (G–A+1) ta bo‘ladi. Masalan, 3misoldagi –1 dan 3 gacha tartiblangan A massivda 5 ta butun qiymatli element (3–
(–1)+1=3+1+1=5), 4-misoldagi satrlari 0 dan 1 gacha va ustunlari 0 dan 2 gacha tartiblangan B massivda 6 ta butun qiymatli element bor ((1–0+1)·(2–
0+1)=2·3=6).
4-§. MIQDORLAR USTIDA BAJARILADIGAN AMALLAR
Miqdorlar ustida bajariladigan amallarni ta’sir etish xususiyatiga ko‘ra quyidagi guruhlarga bo‘lish mumkin:
-
Arifmetik
|
Mantiqiy
|
Taqqoslash
|
Razryad bo‘yicha
|
To‘plamlarga ta’sir
|
Amallar ta’sir ettiriladigan biror turdagi miqdorni operand deb ataymiz. Bitta operandga ta’sir ettiriladigan amallar unar, ikkitasiga ta’sir ettiriladigan amallar binar amallar deb ataladi.
Unar amallarga quyidagilar kiradi: not (mantiqiy yoki razryad bo‘yicha inkor), + (plyus, ya’ni ishorani saqlab qolish), – (minus, ya’ni ishorani almashtirish), in (biror qiymatni to‘plamga tegishliligini aniqlash), @ (ixtiyoriy operandga qo‘laniladi va natija operand adresi bo‘ladi). Boshqa barcha arifmetik, mantiqiy, taqqoslash, razryadi bo‘yicha va to‘plamlarga ta’sir amallari binar amallardir.
Pascalda ifodalar (yoki operandlar) hosil qilish uchun quyidagi amallar guruhi qo‘llaniladi:
-
Guruh nomi
|
Bajarilish tartibi
|
Amal
|
Unar
|
1
|
not, @, –
|
Multiplikativ
|
2
|
*, /, div, mod, and, shl , shr
|
Additiv
|
3
|
+, or, xor
|
Munosabat
|
4
|
in, =, <>, >, >=, <, <=
|
Agar biror amal bajarilish tartibini oldinga surish kerak bo‘lsa qavs ichiga yozish yetarli.
Amallarni qo‘llash qoidalari quyidagi jadvalda keltirilgan:
Amal
|
Vazifasi
|
Operandlar turi
|
Natija turi
|
not
|
Inkor
|
Mantiqiy
|
Mantiqiy
|
not
|
Razryad bo‘yicha inkor
|
Ixtiyoriy butun
|
Operand turi
|
@
|
Adres
|
Ixtiyoriy
|
Ko‘rsatkich
|
–
|
Ayirish
|
Ixtiyoriy butun
|
Butun
|
–
|
Ayirish
|
Ixtiyoriy haqiqiy
|
Haqiqiy
|
–
|
To‘plamlarda ayirish
|
To‘plam
|
To‘plam
|
*
|
Ko‘paytirish
|
Ixtiyoriy butun
|
Butun
|
*
|
Ko‘paytirish
|
Ixtiyoriy haqiqiy
|
Haqiqiy
|
*
|
To‘plamlarni kesishtirish
|
To‘plam
|
To‘plam
|
/
|
Bo‘lish
|
Ixtiyoriy haqiqiy
|
Haqiqiy
|
div
|
Butun bo‘lish
|
Ixtiyoriy butun
|
Butun
|
mod
|
Bo‘lishdagi qoldiq
|
Ixtiyoriy butun
|
Butun
|
and
|
Mantiqiy VA
|
Mantiqiy
|
Mantiqiy
|
and
|
Razryad bo‘yicha VA
|
Ixtiyoriy butun
|
Butun
|
shl
|
Chapga surish
|
Ixtiyoriy butun
|
Butun
|
shr
|
O‘ngga surish
|
Ixtiyoriy butun
|
Butun
|
+
|
Qo‘shish
|
Ixtiyoriy butun
|
Butun
|
+
|
Qo‘shish
|
Ixtiyoriy haqiqiy
|
Haqiqiy
|
+
|
Satrlarni ulash
|
Satrli
|
Satrli
|
+
|
To‘plamlarni birlashtirish
|
To‘plam
|
To‘plam
|
or
|
Mantiqiy YOKI
|
Mantiqiy
|
Mantiqiy
|
or
|
Razryad bo‘yicha YOKI
|
Ixtiyoriy butun
|
Butun
|
xor
|
Mantiqiy cheklangan YOKI
|
Mantiqiy
|
Mantiqiy
|
xor
|
Razryad bo‘yicha XOR
|
Ixtiyoriy butun
|
Butun
|
in
|
Tegishlilik
|
To‘plam
|
Mantiqiy
|
=
|
Teng
|
Ixtiyoriy sodda, satrli, to‘plam
|
Mantiqiy
|
<>
|
Teng emas
|
Ixtiyoriy sodda, satrli, to‘plam
|
Mantiqiy
|
<
|
Kichik
|
Ixtiyoriy sodda, satrli
|
Mantiqiy
|
<=
|
Kichik yoki teng
|
Ixtiyoriy sodda, satrli, to‘plam
|
Mantiqiy
|
>
|
Katta
|
Ixtiyoriy sodda, satrli
|
Mantiqiy
|
>=
|
Katta yoki teng
|
Ixtiyoriy sodda, satrli, to‘plam
|
Mantiqiy
|
Butun sonlar ustida / (bo‘lish) amali bajarish natijasi doimo haqiqiy bo‘ladi. Masalan, 15/3= 0.5000000000E+1, 1/1= 0.1000000000E+1. Shining uchun butun sonlar ustida div (butun bo‘lish) va mod (qoldiq) amallari qo‘llaniladi. Masalan:
25 div 4 = 6; 25 mod 4 = 1; 49 div 7 = 7; 49 mod 7 = 0.
Butun sonlar ustidagi boshqa arifmetik amallarni qo‘llaganda ham xato natijaga kelish mumkin. Bu xatolik natijaviy son amal bajarilayotgan turning chegaraviy qiymatlaridan chiqib ketishi oqibatida yuzaga keladi. Masalan, byte turida 255+1= 0, 10–12= 254, 100*10=232, chunki byte turining qiymatlari 0..255 oraliqqa tegishli.
Taqqoslash amallari, agar turlar mos kelsa (sonliga sonli, …), taqqoslash sharti bajarilsa True mantiqiy qiymat, aks holda False mantiqiy qiymat hosil qiladi. Masalan, 5<6 shartning natijasi True, 5<=6 shartning natijasi True, 5=6 shartning natijasi False, 5>=6 shartning natijasi False, 5>6 shartning natijasi False, 5<>6 shartning natijasi True.
Mantiqiy amallar butun hamda mantiqiy turlarga qo‘llanishi mumkin. Agar operandlar butun son bo‘lsa, u holda natija ham butun bo‘ladi, bunda natijaning bitlari (ikkilik razryadi) operandlar bitlaridan quyidagilarga asosan hosil qilinadi:
INTEGER turdagi operandlar ustidagi mantiqiy amallar (razryadi bo‘yicha)
|
1-operand
|
2-operand
|
not
|
and
|
or
|
xor
|
1
|
–
|
0
|
–
|
–
|
–
|
0
|
–
|
1
|
–
|
–
|
–
|
1
|
1
|
–
|
1
|
1
|
0
|
1
|
0
|
–
|
0
|
1
|
1
|
0
|
1
|
–
|
0
|
1
|
1
|
0
|
0
|
–
|
0
|
0
|
0
|
Mantiqiy turdagi operandlar ustida amallar quyidagicha amalga oshiriladi:
-
Mantiqiy turdagi operandlar ustidagi mantiqiy amallar
|
1-operand
|
2-operand
|
not
|
and
|
or
|
xor
|
True
|
–
|
False
|
–
|
–
|
–
|
False
|
–
|
True
|
–
|
–
|
–
|
True
|
True
|
–
|
True
|
True
|
False
|
True
|
False
|
–
|
False
|
True
|
True
|
False
|
True
|
–
|
False
|
True
|
True
|
False
|
False
|
–
|
False
|
False
|
False
|
Quyidagi misollar razryadi bo‘yicha surish amallari ishini izohlaydi (N va M operandlar ixtiyoriy butun turda bo‘lishi mumkin):
N shl M – bu amal ishi N dagi ma’lumotni M razryad chapga surish, bo‘sh qolgan kichik razryadlar 0 bilan to‘ldiriladi, masalan: 4 shl 2 = 16 (0...0100 0…010000), 6 shl 2 = 24 (0...0110 0…011000);
N shr M – bu amal ishi N dagi ma’lumotni M razryad o‘ngga surish, bo‘sh qolgan katta razryadlar 0 bilan to‘ldiriladi, masalan: 4 shr 2 =1 (0…0100
0…01), 6 shl 2 =1 (0...0110 0…01);
not N – bu amal ishi N dagi ma’lumotni razryad bo‘yicha mantiqan inkor etish, ya’ni har bir razryaddagi 1 ni 0 ga, 0 ni 1 ga almashtiradi, masalan: not 4 = – 5 (not (0…0100) 1…1011), not 11 = –12 (not (0…01011) 1…10100).
N and M – bu amal N dagi ma’lumotni M dagi ma’lumot bilan razryad bo‘yicha mantiqan ko‘paytiradi, masalan: 4 and 2 =0 ((0…0100) and (0…0010) 0…0000), 6 and 2 = 10 ((0…0110) and (0…0010) 0…0010), 11 and 7 = 3
((0…01011) and (0…0111) 0…0011);
N or M – bu amal N dagi ma’lumotni M dagi ma’lumot bilan razryad bo‘yicha mantiqan qo‘shadi, masalan: 4 or 2 = 6 ((0…0100) or (0…0010)
0…0110), 6 or 2 = 6 ((0…0110) or (0…0010) 0…0110), 11 or 7 = 15
((0…01011) or (0…0111) 0…1111);
N xor M – bu amal N dagi ma’lumotni M dagi ma’lumot bilan razryad bo‘yicha o‘xshashlikni inkor etadi, masalan: 4 xor 2 = 6 ((0…0100) xor (0…0010) 0…0110), 6 xor 2 = 4 ((0…0110) xor (0…0010) 0…0100), 11 xor 7 = 12 ((0…01011) xor (0…0111) 0…1100).
Satrlar ustidagi amallarni quyidagicha izohlash mumkin:
S1+S2 – bu amal S1 va S2 satrlarni kelish tartibi bo‘yicha ulaydi, masalan:
S1=‘A‘, S2=‘da‘ bo‘lsa, natijaviy satr ‘Ada‘, S1=‘AAAA…A‘ (‘A‘ dan 250 ta), S2=‘BB…B‘(‘B‘ dan 100 ta) bo‘lsa, natijaviy satr ‘AAAA…ABBBBB‘ (‘A‘ dan 250 ta va ‘B‘ dan 5 ta, ya’ni 255 baytdan ortgan xotiraga sig‘may qolgan ‘B‘ lar tashlab yuboriladi);
S1 = S2 – satrlar teng bo‘lsa, ya’ni ular ustma-ust tushsa True, aks holda False mantiqiy qiymat hosil qiladi, masalan: ‘AdA‘=‘AdA‘ yoki ‘ ‘=‘ ‘ yoki ‘2107‘=‘2107‘ bo‘lsa natija True, ‘ADA‘=‘AdA‘ yoki ‘000‘=‘00‘ bo‘lsa natija False;
S1 <> S2 – satrlar teng bo‘lmasa, ya’ni ulardagi belgilar soni teng bo‘lmasa yoki belgilar soni teng bo‘la turib biror teng tartib raqamli o‘rindagi belgilari farqlansa True, aks holda False mantiqiy qiymat hosil qiladi, masalan:
‘AdA‘<>‘Ad‘ yoki ‘AdA‘<>‘AAd‘ yoki ‘AdA‘<>‘Adb‘ yoki ‘AdA‘<>‘Ada‘ yoki ‘001‘<>‘01‘ yoki ‘10‘<>‘01‘ bo‘lsa natija True, ‘AdA‘<>‘AdA‘ yoki ‘2004‘<>‘2004‘ bo‘lsa natija False;
S1
‘ABCD‘<‘AC‘ yoki ‘‘<‘ ‘ yoki ‘ABCDEFGH‘<‘B‘ yoki ‘19‘<‘20‘ yoki ‘00222‘<‘010‘ amallar natijasi True, ‘A‘<‘A‘ yoki ‘Ab‘<‘A‘ yoki ‘Ab‘<‘AB‘ yoki ‘ABCdDEFGH‘<‘ABCDefgh‘ yoki ‘31‘<‘2100‘ yoki ‘1‘<‘0999‘ amallar natijasi False;
S1<=S2 – bu amal S1 satr S2 satrdan “kichik yoki teng” bo‘lsa, ya’ni S1 ni 1-belgisi ASCII kodi S2 ni 1-belgisi ASCII kodidan kichik yoki teng bo‘lsa, yoki ikkala satrning 1-belgilari ASCII kodi teng hamda S1 ni 2-belgisi ASCII kodi S2 ni 2-belgisi ASCII kodidan kichik yoki teng bo‘lsa, yoki ikkala satrning 1belgilari ASCII kodi teng va 2-belgilari ASCII kodi teng hamda S1 ni 3-belgisi ASCII kodi S2 ni 3-belgisi ASCII kodidan kichik yoki teng bo‘lsa, …, yoki biror k uchun ikkala satrning k gacha bo‘lgan, mos ravishda, har bir o‘rindagi belgilari ASCII kodi teng hamda S1 ni (k+1)-belgisi ASCII kodi S2 ni (k+1)-belgisi ASCII kodidan kichik yoki teng bo‘lsa, u holda True, aks holda False mantiqiy qiymat qabul qiladi, masalan: ‘A‘<=‘a‘ yoki ‘A‘<=‘A‘ yoki ‘Ab‘<=‘a‘ yoki ‘ABD‘<=‘AC‘ yoki ‘‘<=‘ ‘yoki ‘ ‘<=‘ ‘ yoki ‘ABCDEF‘<=‘B‘ yoki ‘ABCD‘<=‘ABCD‘ yoki ‘20‘<=‘20‘ yoki ‘19‘<=‘20‘ yoki ‘00222‘<=‘010‘ amallar natijasi True, ‘a‘<=‘A‘ yoki ‘A ‘<=‘A‘ yoki ‘Ab‘<=‘AB‘ yoki ‘ABCdDEFGH‘<=‘ABCDefgh‘ yoki ‘3000‘<=‘2100‘ yoki ‘1‘<‘0999‘ amallar natijasi False;
H) S1>S2 amali E) holda, S1>=S2 amali F) holda S1 va S2 larni o‘rnini almashtirgandagi holga teng kuchli.
6>
Do'stlaringiz bilan baham: |