PASKAL DASTURLASH TILIDA OPERATORLAR

Yuklangan vaqt

2024-04-07

Yuklab olishlar soni

1

Sahifalar soni

26

Faytl hajmi

109,6 KB


 
144 
 
 
 
PASKAL DASTURLASH TILIDA OPERATORLAR 
 
 
 
Reja 
1. 
Turbo Paskal dasturlash tilida operatorlarning tasnifi. 
2. 
Tarmoqlanuvchi operatorlar. 
3. 
Takrorlanuvchi operatorlar. 
 
 
 
Tayanch so'z va iboralar: dasturlash, dasturlash tili, operatorlar, sodda 
operatorlar, chiziqli, tarmoqlanuvchi, takrorlanuvchi operatorlar, o'zlashtirish 
operatori, arifmetik, mantiqiy o'zlashtirish operatori. 
 
КИРИШ 
 
Ҳозирги кунда жуда кўп алгоритмик тиллар мавжуд. Бу тиллар ичида 
Паскаль тили универсал тиллардан бири бўлиб, бошқа тилларга қараганда 
имкониятлари кенгроқ 
тилдир. 
Сўнги йилларда 
Паскаль 
тили 
жуда 
такомиллашиб, тобора оммалашиб бормоқда. Паскаль тилида программа тузиш 
учун Турбо Паскаль ва Дельфи дастурлаш воситалари мавжуд. Бу дастурлаш 
воситалари замонавий компьютер технологиясининг ҳамма талабларини ўз 
ичига олган ва унда дастур тузувчи учун ҳамма қулайликлар яратилган. 
Маърузада Турбо Паскаль дастурлаш тилида операторларнинг таснифи. 
Тармоқланувчи  ва такрорланувчи операторлар келтирилган. 
 
1. Турбо Паскаль дастурлаш тилида операторларнинг таснифи. 
Содда операторлар. 
Операторларнинг бўлувчиси, содда операторлар, шартсиз ўтиш опе-
ратори, процедурани чақириш оператори, бўш оператор, ўзлаштириш 
оператори, структурали оператор.  
Turbo Pascal тилидаги дастурнинг асосий қисми операторлар кетма- 
кетлигидан иборат, ҳар битта оператор берилганлар устида амал бажаради. 
Операторларнинг  бўлувчиси сифатида нуқта вергул белгиси ишлатилади. Turbo 
Pascal тилидаги ҳамма операторлар икки гуруҳга бўлинади: содда  ва  
структурали. Таркибига бошқа операторлар кирмаган операторлар содда 
144 PASKAL DASTURLASH TILIDA OPERATORLAR Reja 1. Turbo Paskal dasturlash tilida operatorlarning tasnifi. 2. Tarmoqlanuvchi operatorlar. 3. Takrorlanuvchi operatorlar. Tayanch so'z va iboralar: dasturlash, dasturlash tili, operatorlar, sodda operatorlar, chiziqli, tarmoqlanuvchi, takrorlanuvchi operatorlar, o'zlashtirish operatori, arifmetik, mantiqiy o'zlashtirish operatori. КИРИШ Ҳозирги кунда жуда кўп алгоритмик тиллар мавжуд. Бу тиллар ичида Паскаль тили универсал тиллардан бири бўлиб, бошқа тилларга қараганда имкониятлари кенгроқ тилдир. Сўнги йилларда Паскаль тили жуда такомиллашиб, тобора оммалашиб бормоқда. Паскаль тилида программа тузиш учун Турбо Паскаль ва Дельфи дастурлаш воситалари мавжуд. Бу дастурлаш воситалари замонавий компьютер технологиясининг ҳамма талабларини ўз ичига олган ва унда дастур тузувчи учун ҳамма қулайликлар яратилган. Маърузада Турбо Паскаль дастурлаш тилида операторларнинг таснифи. Тармоқланувчи ва такрорланувчи операторлар келтирилган. 1. Турбо Паскаль дастурлаш тилида операторларнинг таснифи. Содда операторлар. Операторларнинг бўлувчиси, содда операторлар, шартсиз ўтиш опе- ратори, процедурани чақириш оператори, бўш оператор, ўзлаштириш оператори, структурали оператор. Turbo Pascal тилидаги дастурнинг асосий қисми операторлар кетма- кетлигидан иборат, ҳар битта оператор берилганлар устида амал бажаради. Операторларнинг бўлувчиси сифатида нуқта вергул белгиси ишлатилади. Turbo Pascal тилидаги ҳамма операторлар икки гуруҳга бўлинади: содда ва структурали. Таркибига бошқа операторлар кирмаган операторлар содда
 
145 
 
операторлар дейилади. Бунга ўзлаштириш оператори, шартсиз ўтиш оператори, 
процедурани чақириш оператори ва бўш операторлар киради. Ўзлаштириш  
оператори (:=) ўнг томонда берилган ифодани бажаришни  ва  унинг қийматни 
чап томонда  турган ўзгарувчига тенглаштиради. Ифода ва ўзгарувчининг 
тоифаси бир хил бўлиши керак.                                           
 Мисол: 
FuneКеy := False; 
Ch := ’F’; 
Sum:= Х + Y; 
 
 Шартсиз ўтиш оператори  (goto) "...га ўтиш" деган маънони англатади ва 
у  бирор оператор бажарилганидан кейин навбатдаги операторни бажаришга 
эмас, балки бошқа бирор белги ёрдамида белгиланган операторни бажаришда 
фойдаланилади. Эслатиб ўтамиз, белги рақам ёки ҳарф символидан иборат 
бўлиши мумкин. 
Мисол : GOTO 999; 
GOTO END Block; Goto оператори ишлатилганда белги таъсир қиладиган жой  
бу фақат шу оператор ёзилган блок бўлиши мумкин. Бошқаришни бошқа блокка 
узатиш ман этилади. 
 Процедуранинг чақириш оператори  фойдаланувчи 
томонидан белгиланган процедурани ёки стандарт процедурани ишга тушириш 
учун 
ишлатилади. 
Масалан: 
СlSer; 
{стандарт 
процедурани 
чақириш} 
UnitWоrк(True); {фойдаланувчи процедурасини чақириш} Бўш оператор хеч 
қандай амал бажармайди ва унинг таркибида хеч қандай символлар йўқ. Одатда 
бўш оператор локал ёки глобал блокнинг охирига ўтишда ишлатилади: 
LABEL Metka; 
... 
BEGIN 
... GOTO Metka; {Блок охирига ўтиш} 
... Metka: {бўш оператор Metka ёрдамида белгилаб қўйилган} 
END;  
Структурали операторлар қатиян белгиланган қоидалар бўйича бошқа 
операторлардан тузилган операторлардир. Барча структурали операторлар уч 
гуруҳга бўлинади:таркибий, шартли, қайтариладиган. Таркибий оператор бу 
145 операторлар дейилади. Бунга ўзлаштириш оператори, шартсиз ўтиш оператори, процедурани чақириш оператори ва бўш операторлар киради. Ўзлаштириш оператори (:=) ўнг томонда берилган ифодани бажаришни ва унинг қийматни чап томонда турган ўзгарувчига тенглаштиради. Ифода ва ўзгарувчининг тоифаси бир хил бўлиши керак. Мисол: FuneКеy := False; Ch := ’F’; Sum:= Х + Y; Шартсиз ўтиш оператори (goto) "...га ўтиш" деган маънони англатади ва у бирор оператор бажарилганидан кейин навбатдаги операторни бажаришга эмас, балки бошқа бирор белги ёрдамида белгиланган операторни бажаришда фойдаланилади. Эслатиб ўтамиз, белги рақам ёки ҳарф символидан иборат бўлиши мумкин. Мисол : GOTO 999; GOTO END Block; Goto оператори ишлатилганда белги таъсир қиладиган жой бу фақат шу оператор ёзилган блок бўлиши мумкин. Бошқаришни бошқа блокка узатиш ман этилади. Процедуранинг чақириш оператори фойдаланувчи томонидан белгиланган процедурани ёки стандарт процедурани ишга тушириш учун ишлатилади. Масалан: СlSer; {стандарт процедурани чақириш} UnitWоrк(True); {фойдаланувчи процедурасини чақириш} Бўш оператор хеч қандай амал бажармайди ва унинг таркибида хеч қандай символлар йўқ. Одатда бўш оператор локал ёки глобал блокнинг охирига ўтишда ишлатилади: LABEL Metka; ... BEGIN ... GOTO Metka; {Блок охирига ўтиш} ... Metka: {бўш оператор Metka ёрдамида белгилаб қўйилган} END; Структурали операторлар қатиян белгиланган қоидалар бўйича бошқа операторлардан тузилган операторлардир. Барча структурали операторлар уч гуруҳга бўлинади:таркибий, шартли, қайтариладиган. Таркибий оператор бу
 
146 
 
бир-биридан нуқта вергул белгиси ва BEGIN ва END оператори қавслар 
ёрдамида ажратилган операторлар гуруҳидир:  
BEGIN 
<оператор;> 
   ... 
<оператор> 
END; 
Таркибий оператор дастурлаш  тилининг синтаксиси  рухсат берадиган 
исталган қисмида жойлашиши мумкин . 
 
 Паскал тилининг операторлари 
Программанинг асосий вазифаси бошланғич маълумотларни қайта ишлаб, 
қўйилган масаланинг натижасини берувчи амалларни бажаришдан иборат. 
Алгоритмик тилларда бирор-бир масалани ечишда маълумотлар устидаги 
амалларни бажариш операторлар зиммасига юклатилади. Программалаш 
тилларидаги ҳар бир оператор, маълумотларни қайта ишлаш жараёнининг 
мустақил босқичи бўлиб, мантиқан якунланган ҳисобланади. Программада 
ёзилган операторларни тўғри талқин қилиш учун уларни ёзиш қоидалари 
(операторнинг синтаксиси) қатъий аниқланган бўлиши шарт. 
Шундай қилиб, айтиш мумкинки программа бу - турли хил вазифаларни 
бажарувчи ва ягона мақсадга элтувчи операторларнинг тўпламидир. Ҳар бир 
оператор ; (нуқта-вергул) белгиси билан якунланади. Мавжуд программалаш 
тили рухсат берган операторлардан унумли ва оқилона фойдаланиб, мукаммал 
программалар яратиш дастурчининг билимига, тажрибасига ва санъатига 
боғлиқдир. 
Қуйида Паскал тилининг асосий операторлари билан тўлиқроқ танишиб, 
улардан дастурлашда фойдаланиш йўлларини ўрганамиз. 
Ўзлаштириш оператори 
Одатда программа натижасини ҳосил қилиш учун жуда ҳам кўп оралиқ 
ҳисоб ишларини бажаришга тўғри келади. Оралиқ натижаларни эса маълум 
муддатга сақлаб туриш лозим бўлади. Бу ишларни бажариш учун тилнинг энг 
асосий операторларидан бири бўлмиш - ўзлаштириш оператори ишлатилади: 
146 бир-биридан нуқта вергул белгиси ва BEGIN ва END оператори қавслар ёрдамида ажратилган операторлар гуруҳидир: BEGIN <оператор;> ... <оператор> END; Таркибий оператор дастурлаш тилининг синтаксиси рухсат берадиган исталган қисмида жойлашиши мумкин . Паскал тилининг операторлари Программанинг асосий вазифаси бошланғич маълумотларни қайта ишлаб, қўйилган масаланинг натижасини берувчи амалларни бажаришдан иборат. Алгоритмик тилларда бирор-бир масалани ечишда маълумотлар устидаги амалларни бажариш операторлар зиммасига юклатилади. Программалаш тилларидаги ҳар бир оператор, маълумотларни қайта ишлаш жараёнининг мустақил босқичи бўлиб, мантиқан якунланган ҳисобланади. Программада ёзилган операторларни тўғри талқин қилиш учун уларни ёзиш қоидалари (операторнинг синтаксиси) қатъий аниқланган бўлиши шарт. Шундай қилиб, айтиш мумкинки программа бу - турли хил вазифаларни бажарувчи ва ягона мақсадга элтувчи операторларнинг тўпламидир. Ҳар бир оператор ; (нуқта-вергул) белгиси билан якунланади. Мавжуд программалаш тили рухсат берган операторлардан унумли ва оқилона фойдаланиб, мукаммал программалар яратиш дастурчининг билимига, тажрибасига ва санъатига боғлиқдир. Қуйида Паскал тилининг асосий операторлари билан тўлиқроқ танишиб, улардан дастурлашда фойдаланиш йўлларини ўрганамиз. Ўзлаштириш оператори Одатда программа натижасини ҳосил қилиш учун жуда ҳам кўп оралиқ ҳисоб ишларини бажаришга тўғри келади. Оралиқ натижаларни эса маълум муддатга сақлаб туриш лозим бўлади. Бу ишларни бажариш учун тилнинг энг асосий операторларидан бири бўлмиш - ўзлаштириш оператори ишлатилади:
 
147 
 
<ўзлаштириш оператори>:=<ўзгарувчи>:=<ифода>; 
Бу ерда := ўзлаштириш белгиси ҳисобланади, бу белгини = (тенглик) 
белгиси билан алмаштирмаслик зарур. Ўзлаштириш операторида := 
белгисининг ўнг томонидаги <ифода> қиймати аниқланилиб, сўнг чап 
томондаги ўзгарувчига ўзлаштирилади ёки бошқача қилиб айтганда, ифода 
қиймати ўзгарувчи номи билан хотирада эслаб қолинади. Ўзгарувчининг 
олдинги қиймати эса (агар у бўлса) йўқ бўлиб кетади. 
Ўзлаштириш операторини ёзишдаги энг муҳим нарса, бу ифода ва 
ўзгарувчиларнинг бир хил типли бўлишлигидир. 
Ўзлаштириш белгисининг ўнг томонидаги ифоданинг натижавий типига 
қараб, ўзлаштириш операторини уч хил гуруҳга ажратиш  мумкин: арифметик 
ўзлаштириш оператори, мантиқий ўзлаштириш оператори, белгили 
ўзлаштириш оператори. 
Арифметик ўзлаштириш оператори 
 Бутун ёки ҳақиқий типли, сонли натижа берувчи ифодани (одатда бундай 
ифодани арифметик ифода деб аталади) ҳисоблаш учун арифметик ўзлаштириш 
операторидан фойдаланилади. Арифметик ифодада қатнашувчи барча 
ўзгарувчилар ҳақиқий ёки бутун типли бўлиши керак. Арифметик ифода- 
сонлар, ўзгармаслар, ўзгарувчилар ва функциялардан ташкил топади, ҳамда +, -
, *, /, div, mod каби амаллар ёрдамида ёзилади. Арифметик  амалларни 
бажарилиши қуйидаги тартибда бўлади : *, /, div, mod, +, -.  
Ифодани бажарилишидаги бу тартибни ўзгартириш учун кичик 
қавслардан фойдаланилади. Ифоданинг қавслар ичига олиб ёзилган қисмлари 
мустақил ҳолда биринчи галда бажарилади. 
Санаб ўтилган арифметик амалларнинг вазифалари бизга математика 
курсидан маълум. Лекин, бу рўйхатдаги div ва mod амаллари билан таниш 
эмасмиз. Div – бутун бўлишни англатади, бўлинмани бутун қисми қолдирилиб, 
қолдиқ ташлаб юборилади. Мисол: 
 
  
7 div 2 қ 3 
  
5 div 3 қ 1                   
          -7 div 2 қ -3 
          -7 div –2 қ 3 
  
2 div 5 қ 0 
  
3 div 4 қ 0 
147 <ўзлаштириш оператори>:=<ўзгарувчи>:=<ифода>; Бу ерда := ўзлаштириш белгиси ҳисобланади, бу белгини = (тенглик) белгиси билан алмаштирмаслик зарур. Ўзлаштириш операторида := белгисининг ўнг томонидаги <ифода> қиймати аниқланилиб, сўнг чап томондаги ўзгарувчига ўзлаштирилади ёки бошқача қилиб айтганда, ифода қиймати ўзгарувчи номи билан хотирада эслаб қолинади. Ўзгарувчининг олдинги қиймати эса (агар у бўлса) йўқ бўлиб кетади. Ўзлаштириш операторини ёзишдаги энг муҳим нарса, бу ифода ва ўзгарувчиларнинг бир хил типли бўлишлигидир. Ўзлаштириш белгисининг ўнг томонидаги ифоданинг натижавий типига қараб, ўзлаштириш операторини уч хил гуруҳга ажратиш мумкин: арифметик ўзлаштириш оператори, мантиқий ўзлаштириш оператори, белгили ўзлаштириш оператори. Арифметик ўзлаштириш оператори Бутун ёки ҳақиқий типли, сонли натижа берувчи ифодани (одатда бундай ифодани арифметик ифода деб аталади) ҳисоблаш учун арифметик ўзлаштириш операторидан фойдаланилади. Арифметик ифодада қатнашувчи барча ўзгарувчилар ҳақиқий ёки бутун типли бўлиши керак. Арифметик ифода- сонлар, ўзгармаслар, ўзгарувчилар ва функциялардан ташкил топади, ҳамда +, - , *, /, div, mod каби амаллар ёрдамида ёзилади. Арифметик амалларни бажарилиши қуйидаги тартибда бўлади : *, /, div, mod, +, -. Ифодани бажарилишидаги бу тартибни ўзгартириш учун кичик қавслардан фойдаланилади. Ифоданинг қавслар ичига олиб ёзилган қисмлари мустақил ҳолда биринчи галда бажарилади. Санаб ўтилган арифметик амалларнинг вазифалари бизга математика курсидан маълум. Лекин, бу рўйхатдаги div ва mod амаллари билан таниш эмасмиз. Div – бутун бўлишни англатади, бўлинмани бутун қисми қолдирилиб, қолдиқ ташлаб юборилади. Мисол: 7 div 2 қ 3 5 div 3 қ 1 -7 div 2 қ -3 -7 div –2 қ 3 2 div 5 қ 0 3 div 4 қ 0
 
148 
 
Мod – бутун сонлар бўлинмасининг қолдиғини аниқлайди. m mod n 
қиймат фақат n>0 дагина аниқланган. Агар m≥0 бўлса m mod nқm-((m div n)*n), 
m<0 бўлса m mod nқm-((m div n)*n)+n,  m mod n нинг натпешщ23гижаси доим 
мусбат сондир. Мисол: 
7 mod 2 қ 1 
3 mod 5 қ 3 
(-14) mod 3 қ 1 
(-10) mod 5 қ 0  
Мантиқий ўзлаштириш оператори 
Агар ўзлаштириш операторининг чап томонидаги ўзгарувчи boolean 
(мантиқий) типига тегишли бўлса, операторнинг ўнг томонида натижаси true 
¸ки false  бўлган мантиқий ифода бўлиши шарт. 
Яъни мантиқий ифоданинг натижавий қиймати true (рост) ¸ки false 
(ёлғон) бўлади. 
Мантиқий ифодада амалларнинг бажарилиш тартиби қуйидагича: 
 
1. 
Not 
2. 
*, /, div, mod, and 
3. 
+,-,or 
4. 
қ, <, >, <қ, >қ,<> 
 
Мантиқий ифодада ҳам амаллар кетма-кетлигини ўзгартириш учун кичик 
қавслардан фойдаланилади. 
Мантиқий ифодага доир мисоллар: 
 
1. 
x<2*y 
2. 
true 
3. 
not not d 
4. 
(x>y/2) 
5. 
d and (xқy) and b 
6. 
(C or D) and (xқy) or not B 
 
Мантиқий ўзлаштириш операторига доир мисоллар: 
148 Мod – бутун сонлар бўлинмасининг қолдиғини аниқлайди. m mod n қиймат фақат n>0 дагина аниқланган. Агар m≥0 бўлса m mod nқm-((m div n)*n), m<0 бўлса m mod nқm-((m div n)*n)+n, m mod n нинг натпешщ23гижаси доим мусбат сондир. Мисол: 7 mod 2 қ 1 3 mod 5 қ 3 (-14) mod 3 қ 1 (-10) mod 5 қ 0 Мантиқий ўзлаштириш оператори Агар ўзлаштириш операторининг чап томонидаги ўзгарувчи boolean (мантиқий) типига тегишли бўлса, операторнинг ўнг томонида натижаси true ¸ки false бўлган мантиқий ифода бўлиши шарт. Яъни мантиқий ифоданинг натижавий қиймати true (рост) ¸ки false (ёлғон) бўлади. Мантиқий ифодада амалларнинг бажарилиш тартиби қуйидагича: 1. Not 2. *, /, div, mod, and 3. +,-,or 4. қ, <, >, <қ, >қ,<> Мантиқий ифодада ҳам амаллар кетма-кетлигини ўзгартириш учун кичик қавслардан фойдаланилади. Мантиқий ифодага доир мисоллар: 1. x<2*y 2. true 3. not not d 4. (x>y/2) 5. d and (xқy) and b 6. (C or D) and (xқy) or not B Мантиқий ўзлаштириш операторига доир мисоллар:
 
149 
 
 
d:қtrue; 
 
b:қ (x>y) and (kқ0); 
c:қD or B and true; 
 
VAR Global Flag:Boolean; 
FUNCTION GETSQR( x:real ); 
Const  SQRMAX=100; 
Begin  
 
X:=x*x; 
 
GlobalFlag:=( x>SQRMAX ); 
 
If  GlobalFlag  then  x:=SQRMAX; 
 
GetSQR:=x;  
End;  
 
.Муносабат амаллари ва ифодалари. 
Муносабат ифодалари натижанинг рост ёки ёлғонлигини аниқлайди. 
Муносабат амаллари иккита ифодани бир-бирига солиштириб, ифоданинг 
қиймати рост ёки ёлғонлигини  аниқлайди. Қуйидагида ШЭҲМ лар учун  Pascal 
тилининг муносабат амаллари келтирилган. Натижа  мантиқий  тоифаcида 
бўлиб, True(рост) ва False (ёлон) қийматларни қабул қилади. 
Муносабат амаллари 
Амал 
Номи 
Ифода 
Натижа 
 
= 
<> 
> 
Тенг 
тенг эмас 
катта 
А=Б 
А<>Б 
А>Б 
True, агарда А тенг Б бўлса 
True, агарда А тенг эмас Б 
True, агарда А катта Б 
149 d:қtrue; b:қ (x>y) and (kқ0); c:қD or B and true; VAR Global Flag:Boolean; FUNCTION GETSQR( x:real ); Const SQRMAX=100; Begin X:=x*x; GlobalFlag:=( x>SQRMAX ); If GlobalFlag then x:=SQRMAX; GetSQR:=x; End; .Муносабат амаллари ва ифодалари. Муносабат ифодалари натижанинг рост ёки ёлғонлигини аниқлайди. Муносабат амаллари иккита ифодани бир-бирига солиштириб, ифоданинг қиймати рост ёки ёлғонлигини аниқлайди. Қуйидагида ШЭҲМ лар учун Pascal тилининг муносабат амаллари келтирилган. Натижа мантиқий тоифаcида бўлиб, True(рост) ва False (ёлон) қийматларни қабул қилади. Муносабат амаллари Амал Номи Ифода Натижа = <> > Тенг тенг эмас катта А=Б А<>Б А>Б True, агарда А тенг Б бўлса True, агарда А тенг эмас Б True, агарда А катта Б
 
150 
 
< 
>= 
<= 
in 
кичик  
катта ёки 
тенг  
кичик ёки 
тенг 
алоқадoрлик 
А<Б 
А>=Б 
А<=В 
А in М 
True, агарда А кичик Б 
True, агарда А катта ёки тенг Б 
True, агарда А кичик ёки тенг Б       
True, агарда А  М нинг рўйхатида 
турса  
           
Мантиқий ифодалар ва  амаллар 
Мантиқий (Мантиқий) ифодалар( AND, ОR, NOT,ХОR), кўрсатгични ташкил 
этиш амаллари 
 Мантиқий  (Мантиқий) ифода  бажарилганидан кейинги натижа Trueёки 
False бўлади. Мантиқий ифодаларнинг содда кўринишлари қуйидагича: 
- мантиқий  константа; 
- мантиқий ўзгарувчилар; 
- мантиқий  тоифадаги массив элементлари; 
- мантиқий функция; 
- муносабат ифодалари. 
Тармоқланиш буйруғи 
Шартли буйруқ, шарт, жойлаштирилган буйруқлар. 
 Turbo Раскал тилида иккита шартли буйруқлар мавжуд: IF ва  CASE.  IF 
шартли буйруғи, буйруқларнинг  бажарилиш  жараёнининг табиий ҳолатини 
ўзгартирадиган энг кўп воситалардан бири. У қуйидаги кўринишлардан бирига 
эга бўлиши мумкин: 
IF <шарт> THEN <буйруқ1>  
ELSE <буйруқ2>;  
IF <шарт> THEN <буйруқ>; 
Шарт- бу  Мантиқий тоифадаги ифода. Биринчи ҳолатда, агар ифода қиймати 
ҳақиқий  бўлса, <буйруқ1>бажарилади, акс ҳолда <буйруқ2>  бажарилади. 
Иккинчи ҳолатда  - агар ифода натижаси  True бўлса, <буйруқ> бажарилади, агар  
150 < >= <= in кичик катта ёки тенг кичик ёки тенг алоқадoрлик А<Б А>=Б А<=В А in М True, агарда А кичик Б True, агарда А катта ёки тенг Б True, агарда А кичик ёки тенг Б True, агарда А М нинг рўйхатида турса Мантиқий ифодалар ва амаллар Мантиқий (Мантиқий) ифодалар( AND, ОR, NOT,ХОR), кўрсатгични ташкил этиш амаллари Мантиқий (Мантиқий) ифода бажарилганидан кейинги натижа Trueёки False бўлади. Мантиқий ифодаларнинг содда кўринишлари қуйидагича: - мантиқий константа; - мантиқий ўзгарувчилар; - мантиқий тоифадаги массив элементлари; - мантиқий функция; - муносабат ифодалари. Тармоқланиш буйруғи Шартли буйруқ, шарт, жойлаштирилган буйруқлар. Turbo Раскал тилида иккита шартли буйруқлар мавжуд: IF ва CASE. IF шартли буйруғи, буйруқларнинг бажарилиш жараёнининг табиий ҳолатини ўзгартирадиган энг кўп воситалардан бири. У қуйидаги кўринишлардан бирига эга бўлиши мумкин: IF <шарт> THEN <буйруқ1> ELSE <буйруқ2>; IF <шарт> THEN <буйруқ>; Шарт- бу Мантиқий тоифадаги ифода. Биринчи ҳолатда, агар ифода қиймати ҳақиқий бўлса, <буйруқ1>бажарилади, акс ҳолда <буйруқ2> бажарилади. Иккинчи ҳолатда - агар ифода натижаси True бўлса, <буйруқ> бажарилади, агар
 
151 
 
False  бўлса - IF буйруғидан кейинги буйруқ бажарилади. IF буйруқлари 
жойлаштирилган бўлиши мумкин. 
 
Ҳозиргача келтирилган дастурларимиз чизиқли дастурлар тоифасига 
киради. Улардаги буйруқлар кўрсатилган тартибда бажарилади. Бундай ҳолат 
ҳар доим ҳам бизни қаноатлантиравермайди.  
 
Кўпинча бирор мантиқий ифоданинг қийматига ("рост" ёки "ёлғон" 
бўлишига) қараб, икки ёки ундан ортиқ йўналишлардан бирини танлаб олишга 
тўғри келади.  
Фараз қилайлик, корхона ўз ходимларига уларнинг бир ойда ишлаган 
умумий иш соатларига қараб иш ҳақи тўлашга шартнома тузган бўлсин.  Бу 
шартномада 200 соатгача ишлаган ходимларга бир хил иш ҳақи, 200 соатдан 
ортиқ ишлаган ходимларга эса 200 соатдан ортиқ ишлаган ҳар бир соати учун 
икки баробар иш ҳақи тўлаш ҳам кўрсатиб ўтилган бўлсин. Ходимнинг бир 
соатлик иш ҳақи haq, бир ойда ишлаган умумий иш соати ish_soati бўлсин. У 
ҳолда 200 соатдан кўп ишлаган ходимларнинг маоши 
* ;2
200)*
_
(
*200
:
_
haq
soati
ish
haq
haqi
ish



  
формула билан топилади. 200 ва ундан кам ишлаган ходимнинг иш ҳақини 
ҳисоблаш учун бу формуладан фойдаланиб бўлмайди. Чунки, 200 соатдан кам 
ишлаган ходим "хақдор" бўлиш ўрнига "қарздор" бўлиб қолиши ҳам мумкин. Бу 
ҳолатни олдини олиш учун дастурчи икки ҳолатни ҳисобга олиши лозим. Ушбу 
масала қуйидаги алгоритм ёрдамида хал қилинади: дастлаб ходимнинг ишлагагн 
умумий иш соати, сўнгра 
200"
_
"
soati 
ish
  мантиқий ифоданинг қиймати 
аниқланади. Агар у "рост" бўлса, ходимнинг иш ҳақи  
* ,2
200)*
_
(
*200
:
_
haq
soati
ish
haq
haqi
ish



  
акс ҳолда эса  
soati
haq ish
haqi
ish
_
*
:
_

 
формула билан топилади.  
Паскал тилида бундай жараёнларни ифодалаш учун тармоқланиш буйруғи 
деб аталадиган буйруқ киритилган. У умумий кўринишда қуйидагича  ёзилади: 
if мантиқий ифода then 1-буйруқ elsе 2-буйруқ ; . 
 
Бу буйруқни бажаришда ЭХМ дастлаб "мантиқий ифода" нинг қийматини 
аниқлайди. Агар у "рост" бўлса 1-буйруқни бажаради, 2-буйруқни эса 
бажармайди. Агар "ёлғон" бўлса, аксинча, яъни 2-буйруқни бажариб, 1-ни 
бажармайди. (Тармоқланиш буйруғининг бажарилиш тартиби кўрсатилган блок-
151 False бўлса - IF буйруғидан кейинги буйруқ бажарилади. IF буйруқлари жойлаштирилган бўлиши мумкин. Ҳозиргача келтирилган дастурларимиз чизиқли дастурлар тоифасига киради. Улардаги буйруқлар кўрсатилган тартибда бажарилади. Бундай ҳолат ҳар доим ҳам бизни қаноатлантиравермайди. Кўпинча бирор мантиқий ифоданинг қийматига ("рост" ёки "ёлғон" бўлишига) қараб, икки ёки ундан ортиқ йўналишлардан бирини танлаб олишга тўғри келади. Фараз қилайлик, корхона ўз ходимларига уларнинг бир ойда ишлаган умумий иш соатларига қараб иш ҳақи тўлашга шартнома тузган бўлсин. Бу шартномада 200 соатгача ишлаган ходимларга бир хил иш ҳақи, 200 соатдан ортиқ ишлаган ходимларга эса 200 соатдан ортиқ ишлаган ҳар бир соати учун икки баробар иш ҳақи тўлаш ҳам кўрсатиб ўтилган бўлсин. Ходимнинг бир соатлик иш ҳақи haq, бир ойда ишлаган умумий иш соати ish_soati бўлсин. У ҳолда 200 соатдан кўп ишлаган ходимларнинг маоши * ;2 200)* _ ( *200 : _ haq soati ish haq haqi ish    формула билан топилади. 200 ва ундан кам ишлаган ходимнинг иш ҳақини ҳисоблаш учун бу формуладан фойдаланиб бўлмайди. Чунки, 200 соатдан кам ишлаган ходим "хақдор" бўлиш ўрнига "қарздор" бўлиб қолиши ҳам мумкин. Бу ҳолатни олдини олиш учун дастурчи икки ҳолатни ҳисобга олиши лозим. Ушбу масала қуйидаги алгоритм ёрдамида хал қилинади: дастлаб ходимнинг ишлагагн умумий иш соати, сўнгра 200" _ " soati  ish мантиқий ифоданинг қиймати аниқланади. Агар у "рост" бўлса, ходимнинг иш ҳақи * ,2 200)* _ ( *200 : _ haq soati ish haq haqi ish    акс ҳолда эса soati haq ish haqi ish _ * : _  формула билан топилади. Паскал тилида бундай жараёнларни ифодалаш учун тармоқланиш буйруғи деб аталадиган буйруқ киритилган. У умумий кўринишда қуйидагича ёзилади: if мантиқий ифода then 1-буйруқ elsе 2-буйруқ ; . Бу буйруқни бажаришда ЭХМ дастлаб "мантиқий ифода" нинг қийматини аниқлайди. Агар у "рост" бўлса 1-буйруқни бажаради, 2-буйруқни эса бажармайди. Агар "ёлғон" бўлса, аксинча, яъни 2-буйруқни бажариб, 1-ни бажармайди. (Тармоқланиш буйруғининг бажарилиш тартиби кўрсатилган блок-
 
152 
 
схемага эътибор беринг.)  
 
Шундан кейингина if дан кейинги буйруқни бажаришга ўтади. Тармоқланиш 
буйруғидан фойдаланиб юқоридаги жараённи қуйидагича ёзиш мумкин: 
  if 
200
_
soati 
ish
 then  
*2
200)*
_
(
*200
:
_
haq
soati
ish
haq
haqi
ish



 
else   
soati
haq ish
haqi
ish
_
*
:
_

;  
Агар 
эхтиёж 
бўлса, 
тармоқланиш 
буйруғининг 
қисқартирилган 
вариантидан ҳам фойдаланиш мумкин. У умумий ҳолда қуйидагича ёзилади: 
if мантиқий ифода then 1-буйруқ; . 
Бу ердаги 1-буйруқ мантиқий ифода "рост" қиймат олган ҳолдагина бажарилади. 
Акс ҳолда хеч бир амал бажарилмайди ва if дан кейинги буйруққа ўтилади. (Бу 
буйруққа мос келадиган блок-схемага каранг.) 
Юқоридаги жараён тармоқланиш буйруғининг тўлиқсиз варианти 
ёрдамида қуйидагича ифодаланиши мумкин:   
    
soati
haq ish
haqi
ish
_
*
:
_

; 
   if 
200
_
soati 
ish
 then  
*2
200)*
_
(
*200
:
_
haq
soati
ish
haq
haqi
ish



 ; 
Бу буйруқлар кетма-кетлигини қуйидагича изохлаш мумкин: Ходимларнинг иш 
хақлари ҳамма учун бир хил, яъни  
soati
haq ish
haqi
ish
_
*
:
_

 формула билан 
ҳисобланади. Қўшимча иш ҳақини эса фақат бир ойда 200 соатдан ортиқ умумий 
иш соатига эга бўлган ходимларгина олади.  
 
Икки ва ундан ортиқ мулохазалардан "аnd", "оr" ва "nоt" мантиқий 
амалларидан фойдаланиб ифодалар тузиш мумкин. Бунда бир мулохаза қавслар 
ичида кўрсатилиши шарт. Қуйидаги мисолларга эътибор беринг:  
1-мисол:  if 
(  2)
x
 and 
x  5
 then write (‘x soni [2, 5] ga tegishli’) 
152 схемага эътибор беринг.) Шундан кейингина if дан кейинги буйруқни бажаришга ўтади. Тармоқланиш буйруғидан фойдаланиб юқоридаги жараённи қуйидагича ёзиш мумкин: if 200 _ soati  ish then *2 200)* _ ( *200 : _ haq soati ish haq haqi ish    else soati haq ish haqi ish _ * : _  ; Агар эхтиёж бўлса, тармоқланиш буйруғининг қисқартирилган вариантидан ҳам фойдаланиш мумкин. У умумий ҳолда қуйидагича ёзилади: if мантиқий ифода then 1-буйруқ; . Бу ердаги 1-буйруқ мантиқий ифода "рост" қиймат олган ҳолдагина бажарилади. Акс ҳолда хеч бир амал бажарилмайди ва if дан кейинги буйруққа ўтилади. (Бу буйруққа мос келадиган блок-схемага каранг.) Юқоридаги жараён тармоқланиш буйруғининг тўлиқсиз варианти ёрдамида қуйидагича ифодаланиши мумкин: soati haq ish haqi ish _ * : _  ; if 200 _ soati  ish then *2 200)* _ ( *200 : _ haq soati ish haq haqi ish    ; Бу буйруқлар кетма-кетлигини қуйидагича изохлаш мумкин: Ходимларнинг иш хақлари ҳамма учун бир хил, яъни soati haq ish haqi ish _ * : _  формула билан ҳисобланади. Қўшимча иш ҳақини эса фақат бир ойда 200 соатдан ортиқ умумий иш соатига эга бўлган ходимларгина олади. Икки ва ундан ортиқ мулохазалардан "аnd", "оr" ва "nоt" мантиқий амалларидан фойдаланиб ифодалар тузиш мумкин. Бунда бир мулохаза қавслар ичида кўрсатилиши шарт. Қуйидаги мисолларга эътибор беринг: 1-мисол: if (  2) x and  x  5 then write (‘x soni [2, 5] ga tegishli’)
 
153 
 
       else write (‘x soni [2, 5] ga tegishli emas’); 
2- мисол:  if (‘bugun yakshanba’) or (‘ish vaqti tugadi’)  
       then writeln (‘dam oling‘) else writeln (‘ish bilan shugullaning‘); 
3- мисол:  if not 
(  2)
x
 then write (‘x soni 2 dan katta emas’)  
                 else write (‘x soni 2 dan katta’); . 
Юқоридаги барча мулохазаларни жамлаган ҳолда, иш ҳақини ҳисоблаш 
дастурини қуйидагича ёзиш мумкин: 
 
 
program maosh; 
 
 
var ish_haqi, ish_soati, haq : integer; 
 
begin 
 
 
writeln(‘hodim nesha soat ishladi ?’); readln(ish_soati); 
 
 
writeln(‘bir soat ushun qansha haq oladi ?’); readln(haq); 
 
 
* ;2
200)*
_
(
*200
:
_
200
_
;
*
_
:
_
haq
ish soati
haq
haqi
ish
then
ish soati
if
ish soati haq
haqi
ish





 
 
 
writeln(‘hodim ‘,ish_haqi,’ sum oladi’); 
 
end. 
Юқоридаги дастур учун ЭХМ қуйидаги натижаларни беради:  (? 
белгисидан кейин клавиатура орқали киритилган маълумотлар келтирилмоқда.) 
hodim nesha soat ishladi ?  150 
bir soat ushun qansha haq oladi? 100 
hodim 150000 sum oladi 
hodim nesha soat ishladi ?  300 
bir soat ushun qansha haq oladi? 100 
hodim 400000 sum oladi 
 
Кўпинча then ёки else хизматчи сўзларидан кейинги буйруқлар таркибида 
бошка if буйруғи ҳам келиши  мумкин. Буни ички тармоқланиш дейилади. Ички 
153 else write (‘x soni [2, 5] ga tegishli emas’); 2- мисол: if (‘bugun yakshanba’) or (‘ish vaqti tugadi’) then writeln (‘dam oling‘) else writeln (‘ish bilan shugullaning‘); 3- мисол: if not (  2) x then write (‘x soni 2 dan katta emas’) else write (‘x soni 2 dan katta’); . Юқоридаги барча мулохазаларни жамлаган ҳолда, иш ҳақини ҳисоблаш дастурини қуйидагича ёзиш мумкин: program maosh; var ish_haqi, ish_soati, haq : integer; begin writeln(‘hodim nesha soat ishladi ?’); readln(ish_soati); writeln(‘bir soat ushun qansha haq oladi ?’); readln(haq); * ;2 200)* _ ( *200 : _ 200 _ ; * _ : _ haq ish soati haq haqi ish then ish soati if ish soati haq haqi ish      writeln(‘hodim ‘,ish_haqi,’ sum oladi’); end. Юқоридаги дастур учун ЭХМ қуйидаги натижаларни беради: (? белгисидан кейин клавиатура орқали киритилган маълумотлар келтирилмоқда.) hodim nesha soat ishladi ? 150 bir soat ushun qansha haq oladi? 100 hodim 150000 sum oladi hodim nesha soat ishladi ? 300 bir soat ushun qansha haq oladi? 100 hodim 400000 sum oladi Кўпинча then ёки else хизматчи сўзларидан кейинги буйруқлар таркибида бошка if буйруғи ҳам келиши мумкин. Буни ички тармоқланиш дейилади. Ички
 
154 
 
тармоқланишда ички if ўзидан аввал келган ва энг яқин турган then (else) га 
таъалуқли бўлади.  Қуйидаги дастурга эътибор беринг; 
 
program masala; 
 
 
var x: integer; 
 
 
s: string; 
 
begin 
 
 
writeln(‘x ning qiymatini kiriting‘); readln(x); 
 
 
s : ’x soni 2 dan kichik’); 
 
 
if x>2 then if x< 5 then s : ’x soni [2, 5] oraliqqa tegishli’ 
 
 
 
 
 
     else s : ’x soni 5 dan katta’; 
 
 
writeln(s) 
 
end.   
Бу дастур учун ЭХМ қуйдаги натижаларни беради: 
 
 
x ning qiymatini kiriting  4 
x soni [2, 5] oraliqqa tegishli 
x ning qiymatini kiriting  7 
x soni 5 dan katta 
x ning qiymatini kiriting  1 
x soni 2 dan kichik 
 
Агар ички тармоқланишлар кўп бўлса, уларни ёзиш ва ўқиш ишларида 
дастурчи учун бир мунча ноқулайликлар келиб чиқиши мумкин. Буни олдини 
олиш учун ПАСКАЛ тилига танлаш буйруғи киритилган. 
Тамғалар. Шартсиз ўтиш буйруғи. 
 
Айрим бир буйруқларни бошқаларидан бирор белги билан ажратиб 
қўйилиши мумкин. Ана шу белгини тамға деб атаймиз.  
Тамға сифатида бутун сон ёки лотин алифбосидаги ҳарфларни  олиш 
154 тармоқланишда ички if ўзидан аввал келган ва энг яқин турган then (else) га таъалуқли бўлади. Қуйидаги дастурга эътибор беринг; program masala; var x: integer; s: string; begin writeln(‘x ning qiymatini kiriting‘); readln(x); s : ’x soni 2 dan kichik’); if x>2 then if x< 5 then s : ’x soni [2, 5] oraliqqa tegishli’ else s : ’x soni 5 dan katta’; writeln(s) end. Бу дастур учун ЭХМ қуйдаги натижаларни беради: x ning qiymatini kiriting 4 x soni [2, 5] oraliqqa tegishli x ning qiymatini kiriting 7 x soni 5 dan katta x ning qiymatini kiriting 1 x soni 2 dan kichik Агар ички тармоқланишлар кўп бўлса, уларни ёзиш ва ўқиш ишларида дастурчи учун бир мунча ноқулайликлар келиб чиқиши мумкин. Буни олдини олиш учун ПАСКАЛ тилига танлаш буйруғи киритилган. Тамғалар. Шартсиз ўтиш буйруғи. Айрим бир буйруқларни бошқаларидан бирор белги билан ажратиб қўйилиши мумкин. Ана шу белгини тамға деб атаймиз. Тамға сифатида бутун сон ёки лотин алифбосидаги ҳарфларни олиш
 
155 
 
мумкин. Тамғадан сўнг икки нукта (:) белгиси қўйилади. Масалан: 
 
10: x : 2; 
 
‘s’: d : x*x-4*a*c; 
 
Шундан кейин дастурнинг бирор еридан туриб, шу буйруққа мурожаат 
қилиш мумкин. Бунинг учун шартсиз ўтиш буйруғи бўлган goto  дан 
фойдаланамиз. Бу буйруқ умумий ҳолда  
goto тамға ; 
кўринишида ёзилади.  
 
Шартсиз ўтиш буйруғи goto дан кейин кўрсатилган тамғали буйруқка 
ўтилади. 
 
Дастурда қатнашган барча буйруқлар одатда дастурнинг иккинчи сатрида, 
label  хизматчи сўзидан кейин келтирилади.  
 
Аввалги бўлимда иш ҳақини ҳисоблаш дастури битта ходим учун ёзилган 
эди. Ана шу корхонада 3 та ходим ишлаб, улар 1 дан 3 гача тартиб рақамлари 
билан 
тартибланган 
бўлсин. 
 
Дастурдаги 
амаллар 
кетма-кетлигини 
ходимларнинг ҳаммаси учун бажарилишини таъминлайдиган  дастур қуйидагича 
ёзилади: 
 
 
Program utish; 
label 2; 
 
 
 var ish_haqi, ish_soati, haq, tab_nom : integer; 
 
begin 
 
 
tab_nom : 1; 
 
   2 : writeln(‘hodim nesha soat ishladi ?’); readln(ish_soati); 
 
 
writeln(‘bir soat ushun qansha haq oladi ?’); readln(haq); 
 
 
* ;2
200)*
_
(
*200
:
_
200
_
;
*
_
:
_
haq
ish soati
haq
haqi
ish
then
ish soati
if
ish soati haq
haqi
ish





 
 
 
writeln(tab_nom, ‘-hodim ‘,ish_haqi,’ sum oladi’); 
 
 
tab_nom : tab_nom 1; 
 
 
if tab_nom< 3 then goto 2;   
155 мумкин. Тамғадан сўнг икки нукта (:) белгиси қўйилади. Масалан: 10: x : 2; ‘s’: d : x*x-4*a*c; Шундан кейин дастурнинг бирор еридан туриб, шу буйруққа мурожаат қилиш мумкин. Бунинг учун шартсиз ўтиш буйруғи бўлган goto дан фойдаланамиз. Бу буйруқ умумий ҳолда goto тамға ; кўринишида ёзилади. Шартсиз ўтиш буйруғи goto дан кейин кўрсатилган тамғали буйруқка ўтилади. Дастурда қатнашган барча буйруқлар одатда дастурнинг иккинчи сатрида, label хизматчи сўзидан кейин келтирилади. Аввалги бўлимда иш ҳақини ҳисоблаш дастури битта ходим учун ёзилган эди. Ана шу корхонада 3 та ходим ишлаб, улар 1 дан 3 гача тартиб рақамлари билан тартибланган бўлсин. Дастурдаги амаллар кетма-кетлигини ходимларнинг ҳаммаси учун бажарилишини таъминлайдиган дастур қуйидагича ёзилади: Program utish; label 2; var ish_haqi, ish_soati, haq, tab_nom : integer; begin tab_nom : 1; 2 : writeln(‘hodim nesha soat ishladi ?’); readln(ish_soati); writeln(‘bir soat ushun qansha haq oladi ?’); readln(haq); * ;2 200)* _ ( *200 : _ 200 _ ; * _ : _ haq ish soati haq haqi ish then ish soati if ish soati haq haqi ish      writeln(tab_nom, ‘-hodim ‘,ish_haqi,’ sum oladi’); tab_nom : tab_nom 1; if tab_nom< 3 then goto 2;
 
156 
 
 
end. 
Бу дастур учун ЭХМ қуйдаги натижаларни беради: 
 
hodim nesha soat ishladi ?  150 
bir soat ushun qansha haq oladi? 50 
1-hodim 7500 sum oladi 
hodim nesha soat ishladi ?  300 
bir soat ushun qansha haq oladi? 100 
2-hodim 40000 sum oladi  
hodim nesha soat ishladi ?  200 
bir soat ushun qansha haq oladi? 125 
3-hodim 25000 sum oladi 
  
Бу дастур ёрдамида худди шундай тарзда ихтиёрий сондаги ходимларнинг 
иш хақларини ҳисоблашни ташкил қилиш мумкин.  
Бунинг учун дастурдаги 3 сонини ходимлар сони билан алмаштириш лозим 
бўлади.  
Case танлаш  буйруғи. 
 
Case буйруғи бир нечта имкониятлардан бирини  танлаб олиш учун 
мўлжалланган буйруқ бўлиб, ички тармоқланишларни чиройли ва тушунарли 
қилиб ёзиш мақсадида фойдаланилиши мумкин. Бу буйруқ умумий кўринишда 
қуйидагича ёзилади: 
 
Case ифода of 
 
 
1-тамға: 1-буйруқ; 
 
 
..... ......  ...... ..... ..... 
 
 
n-тамға: n-буйруқ ; 
 
end; 
 
Case ва of  хизматчи сўзлари орасида кўрсатилган ифодани селектор, яъни 
танлаш ифодаси деб аталади. Буйруқ қуйидагича бажарилади: дастлаб 
156 end. Бу дастур учун ЭХМ қуйдаги натижаларни беради: hodim nesha soat ishladi ? 150 bir soat ushun qansha haq oladi? 50 1-hodim 7500 sum oladi hodim nesha soat ishladi ? 300 bir soat ushun qansha haq oladi? 100 2-hodim 40000 sum oladi hodim nesha soat ishladi ? 200 bir soat ushun qansha haq oladi? 125 3-hodim 25000 sum oladi Бу дастур ёрдамида худди шундай тарзда ихтиёрий сондаги ходимларнинг иш хақларини ҳисоблашни ташкил қилиш мумкин. Бунинг учун дастурдаги 3 сонини ходимлар сони билан алмаштириш лозим бўлади. Case танлаш буйруғи. Case буйруғи бир нечта имкониятлардан бирини танлаб олиш учун мўлжалланган буйруқ бўлиб, ички тармоқланишларни чиройли ва тушунарли қилиб ёзиш мақсадида фойдаланилиши мумкин. Бу буйруқ умумий кўринишда қуйидагича ёзилади: Case ифода of 1-тамға: 1-буйруқ; ..... ...... ...... ..... ..... n-тамға: n-буйруқ ; end; Case ва of хизматчи сўзлари орасида кўрсатилган ифодани селектор, яъни танлаш ифодаси деб аталади. Буйруқ қуйидагича бажарилади: дастлаб
 
157 
 
селекторнинг қиймати ҳисобланади. Сўнгра ана шу қийматга мос келадиган 
тамға қидириб топилади ва шу тамға остидаги буйруқлар кетма-кетлиги 
бажарилади. Агар изланган тамға топилмаса, Case га тааллукли end  буйруғидан 
кейин кўрсатилган буйруқлар кетма-кетлиги бажарилади.  
 
Масала:  Спортчи мусобақада А - ўринни эгаллади. У қандай медал 
олганини аниқланг. 
 
Program sport; 
 
 
label 1,2,3,4; 
 
 
var a: integer;  s : string[16]; 
 
begin 
 
 
write(‘sportchi nechanchi urinn oldi?’); 
 
 
readln(a);  
  
 
s : ’sportchi medal olmagan’ 
 
 
case a of 
 
 
 
1: s : ’oltin’; 
 
 
 
2: s : ’kumush’; 
 
 
 
3: s : ’bronza’; 
 
 
end; 
 
 
writeln(s) 
 
end. 
Бу дастур учун ЭХМ қуйдаги натижаларни беради: 
 
sportchi nechanchi urinn oldi? 5 
 
sportchi m,edal olmagan 
 
 
sportchi nechanchi urinn oldi?1 
 
oltin 
 
Селектор ифоданинг қиймати real  бўлмаган ихтиёрий скаляр типда 
157 селекторнинг қиймати ҳисобланади. Сўнгра ана шу қийматга мос келадиган тамға қидириб топилади ва шу тамға остидаги буйруқлар кетма-кетлиги бажарилади. Агар изланган тамға топилмаса, Case га тааллукли end буйруғидан кейин кўрсатилган буйруқлар кетма-кетлиги бажарилади. Масала: Спортчи мусобақада А - ўринни эгаллади. У қандай медал олганини аниқланг. Program sport; label 1,2,3,4; var a: integer; s : string[16]; begin write(‘sportchi nechanchi urinn oldi?’); readln(a); s : ’sportchi medal olmagan’ case a of 1: s : ’oltin’; 2: s : ’kumush’; 3: s : ’bronza’; end; writeln(s) end. Бу дастур учун ЭХМ қуйдаги натижаларни беради: sportchi nechanchi urinn oldi? 5 sportchi m,edal olmagan sportchi nechanchi urinn oldi?1 oltin Селектор ифоданинг қиймати real бўлмаган ихтиёрий скаляр типда
 
158 
 
бўлиши мумкин. Тамғалар ҳам ана шу типга оид бўлиб, битта тамға битта case..of  
буйруғида бир неча марта кетмаслиги керак.  
 
Танлаш буйруғидан одатда бирон бир оралиққа тушмайдиган қийматлар 
учун маълум бир буйруқларни бажарилиши ёки битта ифоданинг қиймати бир 
нечта маълумотлардан бирига боғлиқ бўлган ҳолатларда фойдаланилса  яхши 
самара беради. 
 
Program baho; 
 
 
label 0,1,2,3,4,5; 
 
 
var a: integer; s: string[9]; 
 
begin 
 
 
write(‘bahoni kiriting‘); 
 
 
readln(a); 
 
 
case a of 
  
 
 
     5:  s : ’alo‘; 
 
 
 
     4:  s : ’yaxshi’   
 
 
 
 
     3:  s : 'qoniqarli' ; 
               
0,1,2:  s : 'yomon' ;  
 
        end; 
     
 
 wriieln(s)  
 
end. 
ЭХМ бу дастур учун қуйдаги натижаларни беради: 
Bahoni kiritng 4 
 yahshi 
Bahoni kiritjng 1 
уomon 
Фармойишлар 
1. Ўзлаштириш фармойиши. 
Ўзлаштириш фармойишида ўзгарувчидан сўнг «:=» белгиси ёзилади. 
158 бўлиши мумкин. Тамғалар ҳам ана шу типга оид бўлиб, битта тамға битта case..of буйруғида бир неча марта кетмаслиги керак. Танлаш буйруғидан одатда бирон бир оралиққа тушмайдиган қийматлар учун маълум бир буйруқларни бажарилиши ёки битта ифоданинг қиймати бир нечта маълумотлардан бирига боғлиқ бўлган ҳолатларда фойдаланилса яхши самара беради. Program baho; label 0,1,2,3,4,5; var a: integer; s: string[9]; begin write(‘bahoni kiriting‘); readln(a); case a of 5: s : ’alo‘; 4: s : ’yaxshi’ 3: s : 'qoniqarli' ; 0,1,2: s : 'yomon' ; end; wriieln(s) end. ЭХМ бу дастур учун қуйдаги натижаларни беради: Bahoni kiritng 4 yahshi Bahoni kiritjng 1 уomon Фармойишлар 1. Ўзлаштириш фармойиши. Ўзлаштириш фармойишида ўзгарувчидан сўнг «:=» белгиси ёзилади.
 
159 
 
Бичими: x:=a; бунда x  идентификатор, a  ифода, хусусий ҳолда сон 
бўлиши мумкин. 
Масалан, SUM:=SQR(x)+2. 
 
2. Ўқиш фармойишилари. 
Клавиатурадан киритилган маълумотларни ўзгарувчиларга ўзлаштириш 
учун read  ўқиш фармойиши ишлатилади. Бичими READ (x1[, x2[, …]]). Бунда 
қавс ичидаги ўзгарувчилар иҳтиёрий сонда бўлиб, улар бир бирлари билан 
вергул ёрдамида ажратиб ёзилади. Киритилаётгн ўзгарувчилар қиймати алоҳида 
сатрларга ёзилиши керак бўлса фармойиш номига ln қўшимчаси қўшиб ёзилади. 
Масалан, Readln(x). 
 
3. Чиқариш (ёзиш) фармойиши. 
Бичими: write(s1, s2, s3,…,sn); Бунда write  фармойиш номи, s1, s2, s3,…,sn  
ойнага чиқарилиши керак бўлган ифодалар. Натижага қўшимча равишда матн 
кўринишидаги ахборотни чиқариш учун «'»  апостроф белгисидан фойдаланиш 
мумкин. 
Мисол. 
a
y
x
x
x
z
ln
1
sin
cos





  ни ҳисоблаш дастури тузилсин. 
program sodda_dastur; 
var x,y,z,a:real; 
begin 
   read (x,y,z,a); 
   z:=(cos(x)+sin(x))/(abs(xy)+1)ln(a); 
   writeln('z=',z) 
end. 
 
4. Шартли ўтиш фармойиши. 
Шартли ўтиш фармойишининг бажарилиши жараёнида берилган 
шартнинг чин ёки ёлғонлигига қараб дастурнинг юажарилиш кетмакетлиги 
ўзгартирилади. Ушбу фармойишнинг икки хил кўриниши мавжуд: 
1) if e1  e2 then A else B; 
2) if e1  e2 then A; 
Бунда if (агар)  e1  e2 муносабатни текшириш фармойиши, e1  e2  
текширилаётган шарт, then (бўлса) ва else (акс ҳолда)  ёрдамчи сўзлар, A  
дастурнинг текширилаётган шарт чин бўлганда бажарилиши керак бўлган 
қисми, B эса ёлғон бўлганда бажарилиши керак бўлган қисми. Иккинчи 
кўринишда else ёрдамчи сўз тушириб қолдирилган. Бу ҳолда текширилаётган 
159 Бичими: x:=a; бунда x  идентификатор, a  ифода, хусусий ҳолда сон бўлиши мумкин. Масалан, SUM:=SQR(x)+2. 2. Ўқиш фармойишилари. Клавиатурадан киритилган маълумотларни ўзгарувчиларга ўзлаштириш учун read  ўқиш фармойиши ишлатилади. Бичими READ (x1[, x2[, …]]). Бунда қавс ичидаги ўзгарувчилар иҳтиёрий сонда бўлиб, улар бир бирлари билан вергул ёрдамида ажратиб ёзилади. Киритилаётгн ўзгарувчилар қиймати алоҳида сатрларга ёзилиши керак бўлса фармойиш номига ln қўшимчаси қўшиб ёзилади. Масалан, Readln(x). 3. Чиқариш (ёзиш) фармойиши. Бичими: write(s1, s2, s3,…,sn); Бунда write  фармойиш номи, s1, s2, s3,…,sn  ойнага чиқарилиши керак бўлган ифодалар. Натижага қўшимча равишда матн кўринишидаги ахборотни чиқариш учун «'»  апостроф белгисидан фойдаланиш мумкин. Мисол. a y x x x z ln 1 sin cos       ни ҳисоблаш дастури тузилсин. program sodda_dastur; var x,y,z,a:real; begin read (x,y,z,a); z:=(cos(x)+sin(x))/(abs(xy)+1)ln(a); writeln('z=',z) end. 4. Шартли ўтиш фармойиши. Шартли ўтиш фармойишининг бажарилиши жараёнида берилган шартнинг чин ёки ёлғонлигига қараб дастурнинг юажарилиш кетмакетлиги ўзгартирилади. Ушбу фармойишнинг икки хил кўриниши мавжуд: 1) if e1  e2 then A else B; 2) if e1  e2 then A; Бунда if (агар)  e1  e2 муносабатни текшириш фармойиши, e1  e2  текширилаётган шарт, then (бўлса) ва else (акс ҳолда)  ёрдамчи сўзлар, A  дастурнинг текширилаётган шарт чин бўлганда бажарилиши керак бўлган қисми, B эса ёлғон бўлганда бажарилиши керак бўлган қисми. Иккинчи кўринишда else ёрдамчи сўз тушириб қолдирилган. Бу ҳолда текширилаётган
 
160 
 
шарт бажарилса A фармойиш бажарилиб, кейинги фармойишни бажаришга 
ўтади, акс ҳолда кейинги фармойишни бажаришга тўғридан тўғри ўтади. 
Шартли 
ўтиш 
фармойиши 
ҳам 
шартнинг 
бажарилиши 
ёки 
бажарилмаслигига қараб бир марта бажарилади. 
Мисол. 








1
2
1
sin
2
x
агар
x
a
x
агар
a
x
y
 ни ҳисоблаш дастури тузилсин. 
program shart; 
var a,x,y:real; 
begin 
   read (a,x); 
   if x>1 then y:=2sin(x)+a else y:=2ax;  
   writeln('y=',y); 
end. 
Turbo Pascal муҳитининг менюлар системаси. 
Turbo Pascal менюсининг энг асосийлари билан танишиб чиқайлик. 
Ойнанинг юқори қисмида жойлашган бош меню қуйидагилардан иборат: 
File  файллар билан ишлаш; 
Edit  таҳрирлаш; 
Search  қидириш; 
Run  бажариш; 
Compile  компиляция; 
Debug  отладка; 
Tools  инструментал воситалар; 
Options  параметрлар; 
Window  ойна; 
Help  ёрдам. 
Ушбу менюлар ҳар бирининг ўз қисм менюлари бўлиб, улар шу меню 
функциялари ишини бажаради. 
 
Мураккаб (қўшма) фармойишлар. 
Мураккаб фармойиш ёки қўшма фармойиш begin ва end фармойишлари 
орасида ёзилади. Бу фармойиш битта фармойишнинг ўрнига бир нечта 
фармойиш ёзиш имконини беради. 
Масалан if фармойишидаги then (else) ёрдамчи сўзидан кейин фақат битта 
фармойиш бажарилади. Агар бу ёрдамчи сўзлардан кейин бир нечта 
160 шарт бажарилса A фармойиш бажарилиб, кейинги фармойишни бажаришга ўтади, акс ҳолда кейинги фармойишни бажаришга тўғридан тўғри ўтади. Шартли ўтиш фармойиши ҳам шартнинг бажарилиши ёки бажарилмаслигига қараб бир марта бажарилади. Мисол.         1 2 1 sin 2 x агар x a x агар a x y ни ҳисоблаш дастури тузилсин. program shart; var a,x,y:real; begin read (a,x); if x>1 then y:=2sin(x)+a else y:=2ax; writeln('y=',y); end. Turbo Pascal муҳитининг менюлар системаси. Turbo Pascal менюсининг энг асосийлари билан танишиб чиқайлик. Ойнанинг юқори қисмида жойлашган бош меню қуйидагилардан иборат: File  файллар билан ишлаш; Edit  таҳрирлаш; Search  қидириш; Run  бажариш; Compile  компиляция; Debug  отладка; Tools  инструментал воситалар; Options  параметрлар; Window  ойна; Help  ёрдам. Ушбу менюлар ҳар бирининг ўз қисм менюлари бўлиб, улар шу меню функциялари ишини бажаради. Мураккаб (қўшма) фармойишлар. Мураккаб фармойиш ёки қўшма фармойиш begin ва end фармойишлари орасида ёзилади. Бу фармойиш битта фармойишнинг ўрнига бир нечта фармойиш ёзиш имконини беради. Масалан if фармойишидаги then (else) ёрдамчи сўзидан кейин фақат битта фармойиш бажарилади. Агар бу ёрдамчи сўзлардан кейин бир нечта
 
161 
 
фармойишлар бажарилиши керак бўлса, у ҳолда бу фармойишлар then (ёки else) 
сўзидан кейин begin ва end орасига олиб ёзилади. 
Бичими: 
begin 
<1фармойиш>; 
<2фармойиш>; 
. . . 
<nфармойиш>; 
end; 
 
Мисол. Квадрат тенглама илдизларини ҳисоблаш дастури тузилсин. 
 
program kvt; 
var a,b,c,d,x1,x2: real; s: string[20]; 
begin 
   write ('a,b,c='); 
   readln(a,b,c); 
   d:=sqr(b)4ac; 
   if d<0 then begin  s:='Илдизлари мавжуд эмас';  writeln(s);  end  
            else begin if d=0 then  
                        begin 
                           s:='ягона илдизга эга: '; 
                           x1:=b/(2a); writeln(s, 'x=',x1); 
                        end  
                          else  begin 
                                      s:='иккита илдизи мавжуд:'; writeln(s); 
                                      x1:=(b+sqrt(d))/(2a); 
                                      x2:=(bsqrt(d))/(2a); 
                                      writeln('x1=',x1,', x2=',x2); 
                                   end; 
                    end; 
end. 
 
 Белги. 
Турбо Паскальда ҳам ҳар бир фармойиш ўз номерига эга бўлиши мумкин. 
Турбо Паскальдаги бундай номерлар белгилар деб юритилади. Белгилар бутун 
сонлар кўринишида 0 дан 9999 гача рақамлар ёрдамида ёки лотин харфлари 
билан бошланган иҳтиёрий сўзлар (масалан one, two, two2, …) орқали ёзилади. 
161 фармойишлар бажарилиши керак бўлса, у ҳолда бу фармойишлар then (ёки else) сўзидан кейин begin ва end орасига олиб ёзилади. Бичими: begin <1фармойиш>; <2фармойиш>; . . . <nфармойиш>; end; Мисол. Квадрат тенглама илдизларини ҳисоблаш дастури тузилсин. program kvt; var a,b,c,d,x1,x2: real; s: string[20]; begin write ('a,b,c='); readln(a,b,c); d:=sqr(b)4ac; if d<0 then begin s:='Илдизлари мавжуд эмас'; writeln(s); end else begin if d=0 then begin s:='ягона илдизга эга: '; x1:=b/(2a); writeln(s, 'x=',x1); end else begin s:='иккита илдизи мавжуд:'; writeln(s); x1:=(b+sqrt(d))/(2a); x2:=(bsqrt(d))/(2a); writeln('x1=',x1,', x2=',x2); end; end; end. Белги. Турбо Паскальда ҳам ҳар бир фармойиш ўз номерига эга бўлиши мумкин. Турбо Паскальдаги бундай номерлар белгилар деб юритилади. Белгилар бутун сонлар кўринишида 0 дан 9999 гача рақамлар ёрдамида ёки лотин харфлари билан бошланган иҳтиёрий сўзлар (масалан one, two, two2, …) орқали ёзилади.