Function Addi (var x: Integer): Integer;
begin {Addi}
inc (x);
Addi:=x
end {Addi};
var
a,b: integer;
begin {main}
if (a>b) or (Addi (a)>100) then b:=a;
………………..
Bu bo`lakni bajarishda A o`zgaruvchi qiymati optsiyaga bog`liq: agar optsiya faollashtirilgan bo`lsa, A ning qiymat hamma vaqt, faollashtirilmagan bo`lsa, faqat A<=B holda 1 ga oshiriladi.
Har xil turdagi operandalar bilan amallardan foydalanish qoidalari 2.1-jadvalda keltirilgan.
2.1-jadval
Amal
| Faoliyat |
Operanda turi
|
Natija turi
|
not
|
Inkor
|
Mantiqiy
| Mantiqiy |
not
|
Inkor
|
Ixtiyoriy butun
|
Operanda turi
|
@
|
Adres
|
Ixtiyoriy
|
Ko`rsatkich
|
*
|
Ko`paytirish
|
Ixtiyoriy butun
|
Eng kichik butun
|
*
|
Ko`paytirish
| Ixtiyoriy haqiqiy |
Extended
|
*
|
To`plam kesishuvi
| To`plamli |
To`plamli
|
/
|
Bo`lish
|
Ixtiyoriy haqiqiy
|
Extended
|
div
|
Butun sonli bo`lish
|
Ixtiyoriy butun
|
Eng kichik butun
|
mod
|
Bo`lishdan koldik
|
Ixtiyoriy butun
|
Eng kichik butun
|
and
|
Mantiqiy VA
|
Mantiqiy
|
Mantiqiy
|
and
|
Mantiqiy VA
|
Ixtiyoriy butun
|
Eng kichik butun
|
Shl
|
CHapga siljish
|
Ixtiyoriy butun
|
Eng kichik butun
|
Shr
|
O`ngga siljish
|
Ixtiyoriy butun
|
Eng kichik butun
|
+
|
Qo`shish
|
Ixtiyoriy butun
|
Eng kichik butun
|
+
|
Qo`shish
|
Ixtiyoriy haqiqiy
|
Extended
|
+
|
To`plamlarni birlashtirish
|
To`plamli
|
To`plamli
|
+
|
Satrlarni ulash
|
Satrli
|
Satrli
|
-
|
Ayirish
|
Ixtiyoriy butun
|
Eng kichik butun
|
-
|
Ayirish
|
Ixtiyoriy haqiqiy
|
Extended
|
or
|
Mantiqiy YOKI
|
Mantiqiy
|
Mantiqiy
|
or
|
Mantiqiy YOKI
|
Ixtiyoriy butun
|
Eng kichik butun
|
=
|
Teng
|
Ixtiyoriy oddiy yoki satrli
|
Mantiqiy
|
<>
|
Tengmas
|
Ixtiyoriy oddiy yoki satrli
|
Mantiqiy
|
<
|
Kichik
|
Mantiqiy
|
Mantiqiy
|
<=
|
Kichik yoki teng
|
Mantiqiy
|
Mantiqiy
|
>
|
Katta
|
Mantiqiy
|
Mantiqiy
|
>=
|
Katta yoki teng
|
Mantiqiy
|
Mantiqiy
|
Haqiqiy tur bilan amal bajarishda operandalardan bittasi ixtiyoriy butun turdagi qiymat bo`lishi mumkin. Amal jadvalda ko`rsatilgan EXTENDED turi natijasiga faqat Turbo Paskal muhitida o`rnatilgan arifmetik soprotsessor yoki uning emulyatsiyasiga tayangan kod generatsiyasi rejimi uchun ega bo`ladi. Agar bu rejim o`rnatilmagan bo`lsa, natija REAL turidagi qiymatga ega bo`ladi.
Unar @ amal ixtiyoriy turdagi operandaga qo`llaniladi va operanda adresiga ega bo`lgan POINTER turidagi natijani qaytaradi. Masalan, quyidagilar berilgan bo`lsin.
type
TwoChar = array [1…2] of char;
var
Int : integer;
TwoCharPtr :^ TwoChar;
Unda
TwoCharPtr: @Int
Operatori, TwoCharPtr da ikki belgi to`plami sifatida tushuntiriladigan butun sonli INT o`zgaruvchi adresining saqlanishiga olib keladi.
SHuning uchun, masalan,
if TwoCharPtr ^ [1] = c then …
operator bo`lishi mumkin.
Agar @ amal protsedura, funktsiya yoki ob`ektdagi usulga qo`llanilsa, bu protseduraga (funktsiyaga, usulga) kirish nuqtasining adresi uning natijasi bo`ladi.
Turbo Paskalda quyidagi mantiqiy amallar aniqlangan:
not – mantiqiy inkor;
and – mantiqiy VA;
or – mantiqiy YOKI;
xor – faqat YOki.
Mantiqiy amallar butun va mantiqiy turdagi operandalarga qo`llaniladi. Agar operandalar – butun sonlar bo`lsa, mantiqiy amal natijasi ham, bitlari (ikkilamchi razryadlari) 2.2-jadvalda ko`rsatilgan qoidalar bo`yicha operanda bitlaridan tashkil topgan, butun son bo`ladi.
2.2-jadval
INTEGER turidagi berilganlar ustida mantiqiy amallar (xonalar bo`yicha )
|
1-operand
|
2-operand
|
not
|
and
|
or
|
xor
|
1
|
-
|
0
|
-
|
-
|
-
|
0
|
-
|
1
|
-
|
-
|
-
|
0
|
0
|
-
|
0
|
0
|
0
|
0
|
1
|
-
|
0
|
1
|
1
|
1
|
0
|
-
|
0
|
1
|
1
|
1
|
1
|
-
|
1
|
1
|
0
|
Turbo Paskaldagi mantiqiy amallarga odatda ikkita butun sonlar ustida bajariladigan siljish amallari ham kiradi:
i sh j – i tarkibini j xona chapga siljitish, bo`shagan kichik razryadlar nollar bilan to`ldiriladi;
i shr j – i tarkibini j xona o`ngga siljitish; bo`shagan razryadlar nollar bilan to`ldiriladi.
Bu amallarda i va j ixtiyoriy butun turdagi ifodalar.
Mantiqiy ma`lumotlar ustida bajarilgan mantiqiy amallar 2.3-jadvalda ko`rsatilgan qoidalar bo`yicha mantiqiy turdagi natijalarni beradi.
2.3-jadval
Boolean turidagi ma`lumotlar ustida mantiqiy amallar
|
1-operand
|
2-operand
|
not
|
and
|
or
|
xor
|
True
|
-
|
False
|
-
|
-
|
-
|
False
|
-
|
True
|
-
|
-
|
-
|
False
|
False
|
-
|
False
|
False
|
False
|
False
|
True
|
-
|
False
|
True
|
True
|
True
|
False
|
-
|
False
|
True
|
True
|
True
|
True
|
-
|
True
|
True
|
False
|
IN munosabat amali ikkita operandaga qo`llaniladi. Birinchi (o`ng) operanda ixtiyoriy tartib turidagi ifoda, ikkinchisi – o`sha turdagi elementlardan iborat to`plam, yoki to`plam turidagi identifikator bo`lishi mumkin. Agar chap operand to`plamga tegishli bo`lsa, amal True ni beradi, masalan:
var
c:char;
type
digit = set of 0 .. 9;
begin
if c in digit then ………
Nazorat savollari:
Turbo Paskal alfavitiga nimalar kiradi?
Rezerv so`zlar qanday so`zlar?
Standart direktivalarga nimalar kiradi?
Identifikatorlar nima?
Identifikatorga qo`yilgan talablar nimalardan iborat?
Turbo Paskalda o`zgarmaslarga nimalar kiradi?
Simvolli o`zgarmaslar qanday o`zgarmaslar?
Satrli o`zgarmas nima?
Turbo Paskalda o`zgarmaslarni e`lon qilish standart Paskaldan nimasi bilan farq qiladi?
Ifodalarga nimalar kiradi?
Turbo Paskalda qanday amallar aniqlangan?
Turbo Paskalda amal afzalliklari tartibi qanday?
Turbo Paskalda har xil turdagi operandalar bilan amallar bajarishning o`ziga xos qoidalari?
Turbo Paskalda qanday mantiqiy amallar bor va ular qanday turdagi operandalarga qo`llaniladi?
III BOB.
TURBO PASKAL DASTURLASH TILI MA`LUMOTLAR TURLARI
3.1. Turbo Paskal ma`lumotlar turlari bilan tanishish
Odatda Turbo Paskalda dastur tarkibi quyidagi ko`rinishga ega bo`ladi:
Program ;
{Bayonlar bo`limi}
begin
{operatorlar bo`limi}
end.
Program, begin va end so`zlari dasturni ikki - bayonlar va operatorlar qismlariga ajratadi. Har qanday dastur uchun bunday tasnif zarurdir. Bu tilning qat`iy talablaridan kelib chiqadi: bajariluvchi operatorlarda ishtirok etuvchi har qanday standartmas identifikator oldindan bayonlar bo`limida tavsiflanishi kerak (Standart identifikatorlar oldindan e`lon qilingan ob`ektlar bilan bog`liq va Turbo Paskal standart kutubxonasiga kiradi. Masalan, WriteLn identifikatori shunday identifikator. Standart identifikatorlar, agar ular dasturga kirsa, bayon etilmaydi). Turbo Paskalda identifikatorlarning oldindan bunday bayon etilishi, dasturni ba`zi bir xatoliklarning (identifikatorlarda belgilarning to`g`ri, to`la yozilishi) bo`lishidan himoya qiladi, uning ishonchliligini oshiradi.
Identifikatorni bayon etish – identifikator bilan bog`liq bo`lgan dastur ob`ekti turini ko`rsatish demakdir. Tur tushunchasi Turbo Paskaldagi asosiy tushunchalardan biridir. Hozircha, tilning quyida keltiriladigan xususiyatlarini tushuntirish uchun har xil turlarni batafsil ko`rib o`tirmaymiz va turga, birinchidan, komp’Yuter uchun ob`ektni ichki ifodalash usuli, ikkinchidan, uning ustidan bajarish mumkin bo`lgan amallarni aniqlovchi, deb izoh beramiz. Tur ko`rinishlarini VI (oddiy turi) va IX (murakkab turi) boblarida batafsil ko`ramiz.
Bundan keyingi dasturlarimizda ma`lumotlarni quyidagi turlari kerak bo`ladi:
INTEGER – butun sonli ma`lumotlar, ichki tasavvurda 2 baytni egallaydi, qabul qilish qiymatlari sohasi – 32768 dan +32768, ma`lumotlar aniq ifodalanadi;
REAL – haqiqiy ma`lumotlar, 6 baytni egallaydi, modulning qiymatlar qabul qilish sohasi – 2.9 E – 39 dan 1.7 E + 38 gacha, ma`lumotlarni 11 … 12 xonalargacha aniqlikda ifodalaydi;
CHAR – belgi, 1 baytni egallaydi;
STRING - belgilar satri, MAX+1 baytni egallaydi, bu erda MAX – satrdagi belgilarning maksimal soni;
BOOLEAN - mantiqiy tur, 1 baytni egallaydi va ikkita FALSE (yolgon) hamda TRUE (haqiqat) qiymatlariga ega bo`ladi.
O`zgarmas turi uning qiymatini yozish usuli bilan aniqlanadi. Masalan:
const
A1 = 25;
A2 = 2.27;
A3 = ¢S ¢
A4 = ¢2.27 ¢
A5 = FALSE
Dasturning bu bo`lagini tahlil qilishda kompilyator birinchi o`zgarmasni INTEGER, ikkinchisini – REAL, uchinchisini – CHAR, to`rtinchisini – STRING va oxirgisini BOOLEAN turiga kiritadi. O`zgarmasni INTEGER yoki REAL turga kiritish belgisi son qiymatidagi o`nlik nuqtaning bor yoki yo`qligidir. A2 va A4 o`zgarmaslar har xil turlarga kiradi: A2 – REAL (o`zgarmasda o`nlik nuqta bor), A4 – STRING (o`zgarmas apostrof ichida yozilgan). Apostrof ichida yolgiz yozilgan S o`zgarmas qiymatini kompilyator CHAR turiga, bir necha belgini esa STRING turiga kiritadi.
O`zgarmasdan farq qilib, o`zgaruvchi dasturda hisob borishi bilan o`z qiymatini o`zgartiradi. O`zgaruvchilarni bayon etishda identifikatordan keyin ikki nuqta va tur nomi qo`yiladi. Bir nechta bir xil turli o`zgaruvchilarni bitta ro`yxatga oralariga vergul qo`yib birlashtirish mumkin. O`zgaruvchilarni bayon etish bo`limi boshida VAR (VARiables - o`zgaruvchilar) rezerv so`zi turishi kerak. Masalan:
Do'stlaringiz bilan baham: |