§ 3.7. Ўтиш оператори, таркибли оператор
Ўтиш оператори Паскал тилининг асосий операторлари синфига киради ва программа операторларининг нормал кетма-кетлигини ўзгартириш учун ишлатилади. У бошқарув қайси операторга ўтиши кераклигини аниқлайди. Программанинг ихтиёрий операторига фақат битта нишон қўйиш мумкин. У оператордан олдин ёзилади ва ундан ":" ёрдамида ажратилади.
< нишонланган оператор> :: = <нишон> : < нишонланмаган оператор>;
Программада ҳамма ишлатилган нишонлар ҳар хил бўлиши шарт. Ўтиш операторида кўрсатилган нишон қайсидир операторда бўлиши шарт. Ўтиш оператори қуйидагича ёзилади:
< ўтиш оператори > :: = goto < нишон >
Масалан, goto 3;
Программада ишлатилган нишонлар нишонлар бўлимида бир марта эълон қилиниши шарт, қайси тартибида эълон қилинишини аҳамияти йўқ. Ўтиш оператори ёрдамида ҳосилавий операторининг ичига, ёки танлаш операторининг бир шоҳидан иккинчи шоҳига ўтиш мумкин эмас.
Таркибли оператор ҳосилавий операторлар синфига тегишли бўлиб, у программада операторлар кетма-кетлигини битта оператор сифатида ишлатиш зарур бўлган ҳолда ишлатилади. Таркибли оператор begin ва end калит сўзлари ичига олинган операторлар кетма-кетлигидан иборат бўлади: < таркибли оператор> ::= begin <оператор> {;<оператор>} end;
L abel 1, 3, 10; goto 10; мумкин эмас
begin begin
X : =0.5; goto 1; мумкин
g oto 1; 10:goto 3
... end;
1 :Y: =Sin(X)+1; 1:Y: =0.25;
...
end;
Мисолдан кўриниб турибдики, gоtо оператори бирор бошқа орераторнинг ички қисмига тўғридан тўғри мурожаат қилиши мумкин эмас.
Eхit ва Halt процедуралари ҳам ўтиш оператораларига ўхшаш буйруқларни бажаради. Eхit асосий программанинг тугаши ва қисмларидан чиқиб кетиши учун ишлатиш мумкин. Halt программанинг бажарилишини тўхтатади.
§ 3.8. Шартли оператор ва унинг турлари
Тармоқланувчи ҳисоблаш жараёнларида айрим босқичлари (операторлари) ҳар доим бир хил тартибида бажарилмайди, улар қандайдир текширилаётган шартларга боғлиқ бўлади. Бундай жараёнларни танлаш операторлари ёрдамида ёзиш мумкин. Танлаш операторлар ҳосилавий операторлар синфига киради ва шартли ва вариант операторларидан иборат.
Паскал тилида шартли операторнинг икки тури мавжуд: тўлиқ шартли оператор ва қисқартирилган шартли оператор:
<тўлиқ шартли оператор> :: = if <мантиқий ифода> then <оператор> else <оператор>;
Бунда if, then, else - хизматчи сўзлар.
Шундай қилиб, тўлиқ шартли оператор тузилиши қуйидагича - if B then S1 else S2;, бу ерда B - мантиқий ифода, S1 ва S2 - операторлар. Бундай шартли оператор қуйидагича бажарилади: агар B мантиқий ифода true қиймат қабул қилса, у ҳолда S1 оператор бажарилади, акс ҳолда S2 оператор бажарилади. Шартли операторга мисол:
if x<0 then i: =i+1 else k: =k+1;
Алгоритмлар ёзилишида баъзида шундай ҳоллар учраб турадики, қандайдир операторларни фақат мантиқий шарт рост бўлганда бажариш керак, акс ҳолда бу операторларни бажариш керак эмас. Шундай ҳолларда қисқартирилган шартли оператор ишлатилади: <қисқа шартли оператор>::= if <мантиқий ифода> then <оператор>.
Шундай қилиб, қисқартирилган шартли оператор - if B then S; кўринишида бўлиб қуйидагича ишлайди: агар B мантииқий ифода рост қиймат қабул қилса, у ҳолда S оператор бажарилади, акс ҳолда кейинги операторга ўтилади. Шартли операторда then ва else сўзларидан кейин фақат битта оператор туриши керак, агар алгоритмда шу жойларда бир нечта операторлар ёзилиши керак бўлса, у ҳолда улардан таркибли оператор яратилади. Қисқартирилган шартли оператор ишлатилишида эҳтиёт бўлиш керак. Масалан, қуйидаги операторни
if B1 then if B2 then S1 else S2
икки хил маънода тушуниш мумкин:
if B1 then begin if B2 then S1 end else S2
ёки
if B1 then begin if B2 then S1 else S2 end
Паскал тилининг қоидаси бўйича иккинчи операторни маъноси тўғри, яъни ҳар қайси хизматчи сўз else сўзига энг яқин бўлган хизматчи сўз true мос келади.
1-мисол:
y{х1 агар х<0
2х агар х>0
if х <0 then y:х1 else y:2х
ёки
if х<0 then y:х1
if х>0 then y:22
2-мисол
y{х4 агар <х <2
х-1 акс ҳолда
if (х<2) and (х>1)the y:х4 else y:х-1
3-мисол
F{-4 агар х<0
Х +3х4 агар 0<х<1
(х 3х4) агар х>1
if х<0 then y: =-4 else if х <1 then y:= sqr(х)3*х+4 else
y:sqr (sqr(х)3*х4)
4-мисол S1 2 3 ...n2 2
label 1;
var i,s:integer;
begin read (n);
s:0; i:0;
1: i: =i+1;
s:s sqr (i);
if i< n then gоtо1;
4-мисолда шартли операторнинг қисқа формасидан фойдаланилган.
Мустақил бажариш учун топшириқлар
1. 1 агар АВ ва С
x = 2 агар АВ ва С>=D
3 агар А# В
Агар А>В бўлса, Y17, Y2A, Y3AB
Берилган n соннинг жуфт ёки тоқлигини аниқланг.
Берилган (Х,4) нуқтанинг марказий координата бошидаги бўлган R радиусли доирага тегишли ёки тегишли эмаслигини аниқланг.
1>0>1>2>0>0>0>0>
Do'stlaringiz bilan baham: |