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, …) орқали ёзилади.  
162 
 
Битта белги фақат битта фармойишни белгилаш учун ҳизмат қилади. 
Белгиланиши керак бўлган фармойишдан аввал белги номери, сўнгра « : » (икки 
нуқта) белгиси ёзилади. 
Барча белгилар уларни эълон қилиш сатрида эълон қилиниши шарт. 
Бундай эълон қилиш label сўзи ёрдами амалга оширилади. Белги номлари бир 
биридан вергул ёрдамида ажратиб ёзилади. Масалан, label 10, 12, one, two; 
 
Шартсиз ўтиш фармойиши. 
Шартсиз ўтиш фармойиши дастур бажарилиш тартибини бевосита 
ўзгартиради. 
Бичими: goto k; — бунда goto (…га ўт)  фармойиш номи, k  ўтиш керак 
бўлган сатр номери. Масалан, goto 10; goto one; 
Мисол. a сонини b сонига бўлгандаги қолдиқни ҳисоблаш дастури 
тузилсин. 
program qoldiqni_hisoblash; 
label 1; 
var a,b,qoldiq:byte; 
begin 
     write ('a,b  ');   readln(a,b); 
     if b=0 then 
   begin 
        writeln('0 га бўлиниш содир бўлди'); 
       goto 1; 
   end; 
qoldiq:=a mod b; 
writeln('қолдиқ : ',qoldiq); 
1: end. 
 
8. Мураккаб шартлар. 
Тармоқ фармойишида катталиклар орасида битта муносабат амали 
иштирок этган эди. Тармоқ фармойишида икки ёки ундан ортиқ муносабатлар 
бирбири билан мантиқий амаллар билан боғланган бўлиши мумкин. Бундай 
боғланишлар not  унар амали, and, or, xor  бинар амаллари билан боғланган 
бўлиши мумкин. 
162 Битта белги фақат битта фармойишни белгилаш учун ҳизмат қилади. Белгиланиши керак бўлган фармойишдан аввал белги номери, сўнгра « : » (икки нуқта) белгиси ёзилади. Барча белгилар уларни эълон қилиш сатрида эълон қилиниши шарт. Бундай эълон қилиш label сўзи ёрдами амалга оширилади. Белги номлари бир биридан вергул ёрдамида ажратиб ёзилади. Масалан, label 10, 12, one, two; Шартсиз ўтиш фармойиши. Шартсиз ўтиш фармойиши дастур бажарилиш тартибини бевосита ўзгартиради. Бичими: goto k; — бунда goto (…га ўт)  фармойиш номи, k  ўтиш керак бўлган сатр номери. Масалан, goto 10; goto one; Мисол. a сонини b сонига бўлгандаги қолдиқни ҳисоблаш дастури тузилсин. program qoldiqni_hisoblash; label 1; var a,b,qoldiq:byte; begin write ('a,b  '); readln(a,b); if b=0 then begin writeln('0 га бўлиниш содир бўлди'); goto 1; end; qoldiq:=a mod b; writeln('қолдиқ : ',qoldiq); 1: end. 8. Мураккаб шартлар. Тармоқ фармойишида катталиклар орасида битта муносабат амали иштирок этган эди. Тармоқ фармойишида икки ёки ундан ортиқ муносабатлар бирбири билан мантиқий амаллар билан боғланган бўлиши мумкин. Бундай боғланишлар not  унар амали, and, or, xor  бинар амаллари билан боғланган бўлиши мумкин.  
163 
 
Масалан, x>1 ва x<5 муносабатлар «ва» амали билан боғланган. Турбо 
Паскальда ушбу боғланиш (x>1) and (x<5) каби ёзилади. 
Мисол. A нуқта ўзининг x ва y координаталари билан 
берилган. Шу нуқтанинг расмдаги текисликка тегишли ёки 
тегишли эмаслигини аниқлаш дастури тузилсин. 
Киритилган A(x,y) нуқта шу фигурага тегишли бўлиши 
учун 
нуқтанинг 
координаталари 
қуйидаги 
системани 
қаноатлантириши керак. 







1
0
0
y
x
y
x
 
program figura; 
var x, y:real; 
begin 
       write('x,y  '); readln(x,y); 
       if (x>=0) and (y>=0) and (x+y<=1) then writeln ('(',x,',',y,') нуқта фигурага 
тегишли') 
         else   writeln('(',x,',',y,') нуқта фигурага тегишли эмас'); 
end. 
 
Стандарт ва ностандарт математик функциялар 
 
Функция 
номи 
Тилда ёзилиши 
     Маъноси 
Sinx 
Cosx 
Lnx 
ex 
x  
Arctgx 
|x| 
x2 
ab 
 
 
 
 
 
 
SIN(x) 
COS(x) 
Ln(X) 
EXP(x) 
SQRT(x) 
ARCTAN(x) 
ABS(x) 
SQR(x) 
EXP(b*LN(a)) 
Int(x) 
Round(x) 
Str(x) 
Val(x) 
Chr 
Readkey(код) 
x нинг синуси 
x нинг косинуси 
х нинг натурал логарифми 
Експонента 
Квадрат илдиз 
х нинг арктангенси 
х нинг модули 
х нинг квадрати 
a нинг b чи даражаси 
ҳақиқий сон бутун қисми 
Яхлитланган бутун сон 
Сонни матнга ўтказиш 
Матнли сонни рақамга ўтказиш 
Символни коди билан чиқариш 
Мос тугмача белгисини аниқлаш 
1 
1 
1-расм 
163 Масалан, x>1 ва x<5 муносабатлар «ва» амали билан боғланган. Турбо Паскальда ушбу боғланиш (x>1) and (x<5) каби ёзилади. Мисол. A нуқта ўзининг x ва y координаталари билан берилган. Шу нуқтанинг расмдаги текисликка тегишли ёки тегишли эмаслигини аниқлаш дастури тузилсин. Киритилган A(x,y) нуқта шу фигурага тегишли бўлиши учун нуқтанинг координаталари қуйидаги системани қаноатлантириши керак.        1 0 0 y x y x program figura; var x, y:real; begin write('x,y  '); readln(x,y); if (x>=0) and (y>=0) and (x+y<=1) then writeln ('(',x,',',y,') нуқта фигурага тегишли') else writeln('(',x,',',y,') нуқта фигурага тегишли эмас'); end. Стандарт ва ностандарт математик функциялар Функция номи Тилда ёзилиши Маъноси Sinx Cosx Lnx ex x Arctgx |x| x2 ab SIN(x) COS(x) Ln(X) EXP(x) SQRT(x) ARCTAN(x) ABS(x) SQR(x) EXP(b*LN(a)) Int(x) Round(x) Str(x) Val(x) Chr Readkey(код) x нинг синуси x нинг косинуси х нинг натурал логарифми Експонента Квадрат илдиз х нинг арктангенси х нинг модули х нинг квадрати a нинг b чи даражаси ҳақиқий сон бутун қисми Яхлитланган бутун сон Сонни матнга ўтказиш Матнли сонни рақамга ўтказиш Символни коди билан чиқариш Мос тугмача белгисини аниқлаш 1 1 1-расм  
164 
 
 
 
Ностандарт математик функциялар.  
180
; 10.
.9
;
1
cos
.8
;
1
1
sec
.7
;
1
cos
.6
;
1
sin
.5
1 ;
.4
;
.3
;
1
sec
.2
1 ;
.1
2
2
2
2















Gradius
Padian
Lna
Lnb
Log b
x
Arctg
ecx
Arc
x
Arctg
x
Arc
x
x
Arctg
x
Arc
x
x
Arctg
x
Arc
Arctg x
Arcctgx
Cosx
Sinx
Tgx
Cosx
x
Co
Sinx
Secx
a
 
 
 
Дастурда арифметик ва мантиқий ифодалар ўзгарувчи, ўзгармас, стандарт 
функциялар, қавслар ва амал белгилари орқали ташкил қилинади. 
 
Ифодаларда 
ҳисоблашлар 
тартиби 
қавслар 
ичидаги 
ифодалар 
бажарилгандан кейин қуйидаги тартибда бажарилади: 
1.NOT амали; 
2. *, /, DIV, MOD, AND; 
3.+, -, OR; 
4.таққослаш белгилари: <, >, <=, >=, <>, =, IN. 
 
Тармоқ фармойиши ёрдамида циклли алгоритмларга дастурлар 
тузиш. 
1мисол. Икки хонали, барча 4 га каррали бўлган сонлар рекуррент 
боғланиши ва шу сонлар йиғиндисини ҳисоблаш алгоритми тузилсин. 
a) икки хонали 4 га каррали сонларнинг энг кичиги 12, кейингилари 16, 20, 
… 96. Демак, биринчи ҳади 12 га қолганлари эса ўзидан аввалги сонга 4 ни 
қўшиш ёрдамида ҳосил бўлади. Шунинг учун рекуррент боғланишни қуйидагича 
ёзиш мумкин. Биринчи ҳад i=12; иккинчи ҳад i=12+4, уни ўзидан аввалги ҳад 
билан боғласак, i=i+4; учинчи ҳад i=16+4, бу ҳолда аввалгича фикр юритиб, i=i+4 
деган хулосага келамиз ва х.к. 
Юқори чегара эса i<100. Демак, кетмакетликнинг ҳар бир ҳади аввалги 
ҳади билан i=i+4 кўринишда боғланган. 
Уларнинг йиғиндисини топиш учун яна битта рекуррент боғланиш 
топилиши керак бўлади. Йиғинди учун бирор S ўзгарувчидан фойдаланайлик. 
Аввал йиғинди сақланадиган ўзгарувчи қийматини тозалаш (нолга 
тенглаш) зарур. Бунинг учун унинг биринчи қийматини 0 га тенг қилиб оламиз, 
S=0. Йиғинди (…((12+16)+20)…) га тенг. Ушбу йиғиндини хосил қилиш учун 
кетмакетликнинг ҳар бир кейинги ҳадини аввалги ҳадига қўшишга тўғри 
келади. 
164 Ностандарт математик функциялар. 180 ; 10. .9 ; 1 cos .8 ; 1 1 sec .7 ; 1 cos .6 ; 1 sin .5 1 ; .4 ; .3 ; 1 sec .2 1 ; .1 2 2 2 2                Gradius Padian Lna Lnb Log b x Arctg ecx Arc x Arctg x Arc x x Arctg x Arc x x Arctg x Arc Arctg x Arcctgx Cosx Sinx Tgx Cosx x Co Sinx Secx a Дастурда арифметик ва мантиқий ифодалар ўзгарувчи, ўзгармас, стандарт функциялар, қавслар ва амал белгилари орқали ташкил қилинади. Ифодаларда ҳисоблашлар тартиби қавслар ичидаги ифодалар бажарилгандан кейин қуйидаги тартибда бажарилади: 1.NOT амали; 2. *, /, DIV, MOD, AND; 3.+, -, OR; 4.таққослаш белгилари: <, >, <=, >=, <>, =, IN. Тармоқ фармойиши ёрдамида циклли алгоритмларга дастурлар тузиш. 1мисол. Икки хонали, барча 4 га каррали бўлган сонлар рекуррент боғланиши ва шу сонлар йиғиндисини ҳисоблаш алгоритми тузилсин. a) икки хонали 4 га каррали сонларнинг энг кичиги 12, кейингилари 16, 20, … 96. Демак, биринчи ҳади 12 га қолганлари эса ўзидан аввалги сонга 4 ни қўшиш ёрдамида ҳосил бўлади. Шунинг учун рекуррент боғланишни қуйидагича ёзиш мумкин. Биринчи ҳад i=12; иккинчи ҳад i=12+4, уни ўзидан аввалги ҳад билан боғласак, i=i+4; учинчи ҳад i=16+4, бу ҳолда аввалгича фикр юритиб, i=i+4 деган хулосага келамиз ва х.к. Юқори чегара эса i<100. Демак, кетмакетликнинг ҳар бир ҳади аввалги ҳади билан i=i+4 кўринишда боғланган. Уларнинг йиғиндисини топиш учун яна битта рекуррент боғланиш топилиши керак бўлади. Йиғинди учун бирор S ўзгарувчидан фойдаланайлик. Аввал йиғинди сақланадиган ўзгарувчи қийматини тозалаш (нолга тенглаш) зарур. Бунинг учун унинг биринчи қийматини 0 га тенг қилиб оламиз, S=0. Йиғинди (…((12+16)+20)…) га тенг. Ушбу йиғиндини хосил қилиш учун кетмакетликнинг ҳар бир кейинги ҳадини аввалги ҳадига қўшишга тўғри келади.  
165 
 
Алгоритм юқоридан i<100 билан чегараланади. Юқоридагича фикр 
юритиб, ушбу боғланишни s=s+i кўринишида эканлигига ишонч хосил қилиш 
мумкин. 
Масала. 
Фибоначчи 
кетмакетлигининг 
охирги 
nҳадини 
топиш 
рекуррент боғланиши ва алгоритми тузилсин. 
ai=ai1+ai2 (i>2 бутун сон)  
Бу боғланишда кетмакетликнинг учинчи ҳади аввалги иккита ҳадининг 
йиғиндисига тенг шунинг учун ҳисоблаш жараёнида аввалги иккита ҳад 
қийматини сақлаш зарур. Бу қийматларни a ва b катталиклар билан белгилаймиз, 
яъни a=ai1, b=ai2. 
Кетма кетликнинг учинчи элементини ҳосил қилиш учун a ни b га қўшиш 
кифоя. лекин i катталашганда a ва b ларнинг аввалги қийматларини сақлашга 
тўғри келади. 
a=ai=ai1+ai2=a+b (i>2 бутун сон) b эса a нинг аввалги қийматига тенг 
бўлганлиги учун, ушбу боғланишдан олдин c=a, қийматининг сақланиши талаб 
қилинади. Сўнгра асосий боғланиш a=a+b дан сўнг, b=c муносабатни ўрнатиш 
билан тўла рекуррент боғланиш ҳосил қилинади. 
Демак, рекуррент муносабат a=1, b=1 дан сўнг цикл ичида c=a, a=a+b, b=c 
кўринишда бўлади. 
Турбо-Паскаль муҳитида ишлаш. 
 
Бугунги 
кунда 
касб-ҳунар 
билим 
юртларида 
ва 
олий 
таълим 
муассасаларида Турбо Паскальнинг 5.5 – версияси кенг тарқалганлигини ва 
ундан фойдаланиш қулайлигини ҳисобга олинган холда қуйида Турбо 
Паскальнинг 5.5 – версияси муҳитида ишлаш ўргатилади. 
 
Турбо Паскаль муҳити Turbo.exe файлидан ишга юкланади. Унинг 
вазифаси Паскаль тилидаги программани тахрирлаш ва машина кодига 
ўтказишдир. 
 
Турбо Паскаль муҳитида юқори меню бўлиб, уни активлаштириш учун 
F10 тугмачасидан фойдаланилади. 
 
Такрорлаш буйруқлари. While такрорлаш  буйруғи. 
Цикл, такрорлаш буйруқлари,  цикл сарлавҳаси ва танаси. 
WHILE, REPEAT, FOR, такрорлаш буйруқлари ҳар хил тоифали 
циклларни яратишда ишлатилади. Кўплаб масалаларни ечиш жараёнида айрим 
бир амаллар кетма-кетлигини такрор ва такрор кўрсатишга ва демак бажаришга 
тўғри келади. Юқоридаги масалани эсга олинг. У ерда бир нечта буйруқларни 3 
та ишчиси бор корхона учун 3 марта бажаришга тўғри келади. Дастурнинг ичида 
бир неча марта бажариладиган буйруқлар кетма кетлиги цикл дейилади. While 
такрорлаш  буйруғи. 
165 Алгоритм юқоридан i<100 билан чегараланади. Юқоридагича фикр юритиб, ушбу боғланишни s=s+i кўринишида эканлигига ишонч хосил қилиш мумкин. Масала. Фибоначчи кетмакетлигининг охирги nҳадини топиш рекуррент боғланиши ва алгоритми тузилсин. ai=ai1+ai2 (i>2 бутун сон) Бу боғланишда кетмакетликнинг учинчи ҳади аввалги иккита ҳадининг йиғиндисига тенг шунинг учун ҳисоблаш жараёнида аввалги иккита ҳад қийматини сақлаш зарур. Бу қийматларни a ва b катталиклар билан белгилаймиз, яъни a=ai1, b=ai2. Кетма кетликнинг учинчи элементини ҳосил қилиш учун a ни b га қўшиш кифоя. лекин i катталашганда a ва b ларнинг аввалги қийматларини сақлашга тўғри келади. a=ai=ai1+ai2=a+b (i>2 бутун сон) b эса a нинг аввалги қийматига тенг бўлганлиги учун, ушбу боғланишдан олдин c=a, қийматининг сақланиши талаб қилинади. Сўнгра асосий боғланиш a=a+b дан сўнг, b=c муносабатни ўрнатиш билан тўла рекуррент боғланиш ҳосил қилинади. Демак, рекуррент муносабат a=1, b=1 дан сўнг цикл ичида c=a, a=a+b, b=c кўринишда бўлади. Турбо-Паскаль муҳитида ишлаш. Бугунги кунда касб-ҳунар билим юртларида ва олий таълим муассасаларида Турбо Паскальнинг 5.5 – версияси кенг тарқалганлигини ва ундан фойдаланиш қулайлигини ҳисобга олинган холда қуйида Турбо Паскальнинг 5.5 – версияси муҳитида ишлаш ўргатилади. Турбо Паскаль муҳити Turbo.exe файлидан ишга юкланади. Унинг вазифаси Паскаль тилидаги программани тахрирлаш ва машина кодига ўтказишдир. Турбо Паскаль муҳитида юқори меню бўлиб, уни активлаштириш учун F10 тугмачасидан фойдаланилади. Такрорлаш буйруқлари. While такрорлаш буйруғи. Цикл, такрорлаш буйруқлари, цикл сарлавҳаси ва танаси. WHILE, REPEAT, FOR, такрорлаш буйруқлари ҳар хил тоифали циклларни яратишда ишлатилади. Кўплаб масалаларни ечиш жараёнида айрим бир амаллар кетма-кетлигини такрор ва такрор кўрсатишга ва демак бажаришга тўғри келади. Юқоридаги масалани эсга олинг. У ерда бир нечта буйруқларни 3 та ишчиси бор корхона учун 3 марта бажаришга тўғри келади. Дастурнинг ичида бир неча марта бажариладиган буйруқлар кетма кетлиги цикл дейилади. While такрорлаш буйруғи.  
166 
 
ТУРБО ПАСКАЛ да циклларни ташкил қилишнинг бир неча усуллари 
мавжуд. Улардан бири while буйруғидир. while (инглизча сўз-"токи") буйруғи 
умумий кўринишда қуйидагича ёзилади:  
while ( мантиқий ифода ) dо 
begin 
1-буйруқ ; 2-буйруқ ; ... п-буйруқ ; 
 end ; 
Агар цикл битта буйруқдан иборат бўлса, у қуйидагича ёзилади: 
while (мантиқий ифода) dо буйруқ ; 
 
 
While буйруғининг бажарилиш тартиби мана бундай: дастлаб while 
буйруғидан кейин қавслар ичида кўрсатилган мантиқий ифода қиймати 
ҳисобланади. Агар унииг қиймати "рост" бўлса циклдаги буйруқлар кетма-
кетлиги бир марта бажарилади, сўнгра яна мантиқий ифоданинг қиймати 
ҳисобланади. Қиймат яна "рост" бўлса, цикл яна бир марта бажарилади ва 
хоказо. Бу жараён   токи    мантиқий ифоданинг қиймати "ёлғон" бўлиб қолгунча 
бажарилаверади. Агар мантиқий ифоданипг қиймати биринчи марта 
текширилган пайтдаёқ "рост" қийматини қабул қилмаса, яъни ўринли бўлмаса, 
циклдаги буйруқлар кетма-кетлиги бир марта ҳам бажарилмайди. 
Program salomlashish; 
    var marta : integer ; 
begin 
write('necha marta salomlashamiz ?') ;  
readln( marta ) ; 
 while marta>0 do begin readln('SALOM') ; 
 marta :  marta-1; end ;  
writeln( 'HAYR, JANOB!) end. 
 
ЭХМ бу дастур учун қуйдаги натижаларни беради: 
Necha marta salomlashamiz 3 
SALOM 
SALOM 
SALOM 
HAYR, JANOB 
Necha marta salomlashamiz? 0  
HAYR, JANOB 
 
Одатда while буйруғидан такрорланишлар сони олдиндан номаълум 
бўлган холларда фойдаланиш мақсадга мувофиқ ҳисобланади. 
166 ТУРБО ПАСКАЛ да циклларни ташкил қилишнинг бир неча усуллари мавжуд. Улардан бири while буйруғидир. while (инглизча сўз-"токи") буйруғи умумий кўринишда қуйидагича ёзилади: while ( мантиқий ифода ) dо begin 1-буйруқ ; 2-буйруқ ; ... п-буйруқ ; end ; Агар цикл битта буйруқдан иборат бўлса, у қуйидагича ёзилади: while (мантиқий ифода) dо буйруқ ; While буйруғининг бажарилиш тартиби мана бундай: дастлаб while буйруғидан кейин қавслар ичида кўрсатилган мантиқий ифода қиймати ҳисобланади. Агар унииг қиймати "рост" бўлса циклдаги буйруқлар кетма- кетлиги бир марта бажарилади, сўнгра яна мантиқий ифоданинг қиймати ҳисобланади. Қиймат яна "рост" бўлса, цикл яна бир марта бажарилади ва хоказо. Бу жараён токи мантиқий ифоданинг қиймати "ёлғон" бўлиб қолгунча бажарилаверади. Агар мантиқий ифоданипг қиймати биринчи марта текширилган пайтдаёқ "рост" қийматини қабул қилмаса, яъни ўринли бўлмаса, циклдаги буйруқлар кетма-кетлиги бир марта ҳам бажарилмайди. Program salomlashish; var marta : integer ; begin write('necha marta salomlashamiz ?') ; readln( marta ) ; while marta>0 do begin readln('SALOM') ; marta : marta-1; end ; writeln( 'HAYR, JANOB!) end. ЭХМ бу дастур учун қуйдаги натижаларни беради: Necha marta salomlashamiz 3 SALOM SALOM SALOM HAYR, JANOB Necha marta salomlashamiz? 0 HAYR, JANOB Одатда while буйруғидан такрорланишлар сони олдиндан номаълум бўлган холларда фойдаланиш мақсадга мувофиқ ҳисобланади.  
167 
 
Масала-1. А ва В натурал сонлаш берилган бўлсин. Уларнинг энг катта 
умумий бўлувчисини топинг. 
Eчиш ғояси: Бу масалани эчиш "Евклид алгоритми" асосида амалга 
оширилади. Бу алгоритмга кғра токи А ва В сонлари бир-бирига тенг бўлиб 
қолмагунча, каттасидан кичиги айрилаверади. Ҳар гал айирма шу сонлардан 
каттасини ифодалаб турган ўзгарувчи номи билан белгилаб қўйилади. Бу 
жараён А=В бўлганда тўхтайди. Ечим сифатида А ёки В ни олиш мумкин.  
Program Yevklid ; 
                 var a,b : integer ; 
 
begin 
 
  readln(a,b); while a<>b then a : a-b else b : b-a; 
write ( 'EKUB  ', а ) 
end. 
Ушбу дастурни а=60 ва b=36 учун бажарган ЭXМ  
EKUB   12 
кўринишидаги натижани дисплейга чикаради. 
Эслатма:   Мантиқий   ифодани  ўринли  бўлиш  ёки  бўлмаслигига қараб, while 
цикли бир марта ҳам бажарилмаслиги мумкин. 
REPEAT ... UNTIL буйруғи. 
 
Циклларни  ташкил қилишнинг бошқа бир  усули  repeat-until буйруғидир. 
У умумий кўринишда қуйидагича ёзилади: 
 
 
repeat 
 
 
 
1-buyruq; 2-buyruq; ...; p-buyruq; 
 
 
until (mаntiqiy ifodа); 
 
Циклни бу кўринишда ташкил қилинганда мантиқий ифода циклнинг 
охирида текширилади. Унинг қиймати "ёлғон" бўлса, цикл яна бир марта 
бажарилади, сўнгра яна мантиқий ифода текширилади. Бу жараён токи 
мантиқий ифоданинг қиймати "рост" бўлиб колмагунча такрорланаверади. Бй 
усулда цикл ташкил қилишниш аввалгисидан фарқи шуки, мантиқий 
ифоданинг қиймати циклнинг охирида текширилиши ҳисобига цикл хеч 
бўлмаганда бир марта бажарилади. Юқоридаги “salomlashish” дастурини   
       program salomlashish; 
 
 
var marta ; integer ; 
 
begin 
 
 
write('Necha marta salomlashamiz   ?') ; 
167 Масала-1. А ва В натурал сонлаш берилган бўлсин. Уларнинг энг катта умумий бўлувчисини топинг. Eчиш ғояси: Бу масалани эчиш "Евклид алгоритми" асосида амалга оширилади. Бу алгоритмга кғра токи А ва В сонлари бир-бирига тенг бўлиб қолмагунча, каттасидан кичиги айрилаверади. Ҳар гал айирма шу сонлардан каттасини ифодалаб турган ўзгарувчи номи билан белгилаб қўйилади. Бу жараён А=В бўлганда тўхтайди. Ечим сифатида А ёки В ни олиш мумкин. Program Yevklid ; var a,b : integer ; begin readln(a,b); while a<>b then a : a-b else b : b-a; write ( 'EKUB  ', а ) end. Ушбу дастурни а=60 ва b=36 учун бажарган ЭXМ EKUB 12 кўринишидаги натижани дисплейга чикаради. Эслатма: Мантиқий ифодани ўринли бўлиш ёки бўлмаслигига қараб, while цикли бир марта ҳам бажарилмаслиги мумкин. REPEAT ... UNTIL буйруғи. Циклларни ташкил қилишнинг бошқа бир усули repeat-until буйруғидир. У умумий кўринишда қуйидагича ёзилади: repeat 1-buyruq; 2-buyruq; ...; p-buyruq; until (mаntiqiy ifodа); Циклни бу кўринишда ташкил қилинганда мантиқий ифода циклнинг охирида текширилади. Унинг қиймати "ёлғон" бўлса, цикл яна бир марта бажарилади, сўнгра яна мантиқий ифода текширилади. Бу жараён токи мантиқий ифоданинг қиймати "рост" бўлиб колмагунча такрорланаверади. Бй усулда цикл ташкил қилишниш аввалгисидан фарқи шуки, мантиқий ифоданинг қиймати циклнинг охирида текширилиши ҳисобига цикл хеч бўлмаганда бир марта бажарилади. Юқоридаги “salomlashish” дастурини program salomlashish; var marta ; integer ; begin write('Necha marta salomlashamiz ?') ;  
168 
 
 
 
readln( marta ) ; 
 
 
repeat 
 
 
writeln(‘SAL 
OM’) ;  
 
 
marta : marta-l;  
 
 
until marta<0 ; 
 
 
writeln( 'HAYR, JANOB') 
          end. 
тарзида ҳам ёзиш мумкин. Бу дастурни ЭХМ   бажарганда, дисплейга қуйидаги 
ёзувлар чиқарилади:  
Necha marta salomlasnanuz ?  3 
SALOM  
SALOM  
SALOM  
HAYR, JANOB 
Necha marta salomlashamiz ? 0 
SALOM 
HAYR, JANOB 
FOR такрорлаш буйруғи. 
 
Кўплаб циклларни бирон бир ўзгарувчининг m, m1, ... ,N бўлган 
қийматларида бажаришга тўғри келиб қолади. Ана шундай жараёнларни ихчам 
қилиб ёзиш мақсадида янги цикл буйруғи for киритилган. Бу буйруқ умумий 
кўринишда қуйидагича ёзилади: 
for x : xl  to x2 do begin 
                 1-буйруқ ; …,  n-буйруқ ; 
end; 
Агар циклда такроран бажарилишн талаб қилинган буйруқ битта бўлса, for 
буйруғини мана бундай ёзиш мумкин : 
for x : xl to x2 do буйруқ ; 
Бу ерда х цикл жараённи бошқарадигаи ўзгарувчи, х1-х нинг бошланғич қиймати,   
х2-еса х нинг охирги   қиймати.   For буйруғи биринчи марта бажарилганда, х-
ўзгарувчига х1 бошланғич қиймат берилади. Сўнгра х-нннг ана шу қиймати учун 
цикл бир марта бажарилади. Кейин х ўзгарувчииинг қиймати 1 га орттирилади ва 
х нинг янги қийматини х2 билан солиштирилади. Агар х≤ х2 шарт ўринли бўлса, 
цикл яна бир марта бажарилади ва хоказо. Бу жараён то х>х2 шарт ўринли бўлиб 
қолгунча давом эттирилаверади. For цикли хеч бўлмаганда бир марта бажарилади.  
168 readln( marta ) ; repeat writeln(‘SAL OM’) ; marta : marta-l; until marta<0 ; writeln( 'HAYR, JANOB') end. тарзида ҳам ёзиш мумкин. Бу дастурни ЭХМ бажарганда, дисплейга қуйидаги ёзувлар чиқарилади: Necha marta salomlasnanuz ? 3 SALOM SALOM SALOM HAYR, JANOB Necha marta salomlashamiz ? 0 SALOM HAYR, JANOB FOR такрорлаш буйруғи. Кўплаб циклларни бирон бир ўзгарувчининг m, m1, ... ,N бўлган қийматларида бажаришга тўғри келиб қолади. Ана шундай жараёнларни ихчам қилиб ёзиш мақсадида янги цикл буйруғи for киритилган. Бу буйруқ умумий кўринишда қуйидагича ёзилади: for x : xl to x2 do begin 1-буйруқ ; …, n-буйруқ ; end; Агар циклда такроран бажарилишн талаб қилинган буйруқ битта бўлса, for буйруғини мана бундай ёзиш мумкин : for x : xl to x2 do буйруқ ; Бу ерда х цикл жараённи бошқарадигаи ўзгарувчи, х1-х нинг бошланғич қиймати, х2-еса х нинг охирги қиймати. For буйруғи биринчи марта бажарилганда, х- ўзгарувчига х1 бошланғич қиймат берилади. Сўнгра х-нннг ана шу қиймати учун цикл бир марта бажарилади. Кейин х ўзгарувчииинг қиймати 1 га орттирилади ва х нинг янги қийматини х2 билан солиштирилади. Агар х≤ х2 шарт ўринли бўлса, цикл яна бир марта бажарилади ва хоказо. Бу жараён то х>х2 шарт ўринли бўлиб қолгунча давом эттирилаверади. For цикли хеч бўлмаганда бир марта бажарилади.  
169 
 
Масала:   1+2+3+...+999+1000   йиғиндини топинг. 
Eчиш ғояси: Йиғиндини ҳисоблаб бориш учун S ўзгарувчи киритилади. Сўнгра i 
нинг 1 дан 1000 гача бўлган қийматлари учун 
i
S
S


 ифода қийматини 
топилади. 
 
Program yigindi ; 
var s, i : integer ; 
begin 
 
 
s : 0;, 
for i : 1 to 1000 do 
i
s
s

:
; 
  
writeln( 'S : ’, s)  
end. 
Бу дастур учун ЭХМ қуйидаги натижани беради :  
S : 500500 
Юқоридаги уч хил усул билан ташкил қилинган циклларнинг 
бажариш 
ёки 
бажарилмаслиги 
мантиқий 
ифода 
нинг 
қийматига 
боғлиқлиги кўриниб турибди.  
 
Такрорлаш учун савол ва топшириқлар 
 
1. Турбо Паскаль дастурлаш тили алифбосини баён қилинг. 
2. Турбо Паскаль дастурлаш тилида операторларнинг таснифи. 
3. Чизиқли  операторларни изоҳланг. 
4. Тармоқланувчи операторларни баён қилинг. 
5. Такрорланувчи операторлар имкониятини изоҳланг. 
6. Такрорлаш буйруқлари деганда қандай буйруқларни тушунасиз? 
7. While такрорлаш  буйруғининг ишлаш жараёни қандай? 
8. REPEAT ... UNTIL буйруғининг ишлаш жараёни қандай? 
9. FOR такрорлаш буйруғининг ишлаш жараёни қандай? 
10.  Структуралаш  буйруғи  нима? 
11.  Буйруқларни  ёзиш қоидалари нималардан иборат? 
 
 
169 Масала: 1+2+3+...+999+1000 йиғиндини топинг. Eчиш ғояси: Йиғиндини ҳисоблаб бориш учун S ўзгарувчи киритилади. Сўнгра i нинг 1 дан 1000 гача бўлган қийматлари учун i S S   ифода қийматини топилади. Program yigindi ; var s, i : integer ; begin s : 0;, for i : 1 to 1000 do i s s  : ; writeln( 'S : ’, s) end. Бу дастур учун ЭХМ қуйидаги натижани беради : S : 500500 Юқоридаги уч хил усул билан ташкил қилинган циклларнинг бажариш ёки бажарилмаслиги мантиқий ифода нинг қийматига боғлиқлиги кўриниб турибди. Такрорлаш учун савол ва топшириқлар 1. Турбо Паскаль дастурлаш тили алифбосини баён қилинг. 2. Турбо Паскаль дастурлаш тилида операторларнинг таснифи. 3. Чизиқли операторларни изоҳланг. 4. Тармоқланувчи операторларни баён қилинг. 5. Такрорланувчи операторлар имкониятини изоҳланг. 6. Такрорлаш буйруқлари деганда қандай буйруқларни тушунасиз? 7. While такрорлаш буйруғининг ишлаш жараёни қандай? 8. REPEAT ... UNTIL буйруғининг ишлаш жараёни қандай? 9. FOR такрорлаш буйруғининг ишлаш жараёни қандай? 10. Структуралаш буйруғи нима? 11. Буйруқларни ёзиш қоидалари нималардан иборат?