if a < 0
then b : = - a
а0 бўлганда b:= - а оператор бажарилади, яъни ћосил ќилинган натижа тўѓри бўлади, а0 да b=а, чунки шартли оператор бажарилмайди. Бу натижа ћам тўѓри. Демак, иккинчи ћолда дастур тўѓри тузилган.
if a > 0
then b : = a
else
if a < 0
then b : = - a
а0 бўлганда b нинг ќиймати а га а<0 да эса –а га тенг. Иккала натижа ћам тўѓри, лекин а=0 ћол кўриб чиќилмади. а=0 да b аниќланган бўлади, чунки шартли операторнинг ћеч ќайси тармоги бажарилмайди. Демак, дастур нотўѓри тузилган.
if a > 0
then b : = a
else b : = - a
а0 бўлганда b:= - а оператор бажарилади. Ќолган ћамма ћолларда b:=-а. олинган натижалар тўѓри. Барча мумкин бўлган дастлабки маълумотларнинг ќийматларида тўѓри натижалар ћосил бўлаетгани учун дастурнинг тўѓрилиги ћаќида хулоса чиќариш мумкин.
Сарлавћасида while бўлган цикл. Циклни текширишда биринчи аниќланадиган нарса шуки, ћар ќандай мумкин бўлган бошланѓич ќийматларда бу цикл якунловчи бўладими?
Масалан,
while a > 0 do
write (A)
цикл а>0 да чексиз бажарилади, чунки бу ўзгарувчининг ќиймати циклнинг ћар бир такрорланишида ўзгармайди.
Цикл ишининг тугалланишини таъминловчи зарурий (аммо етарли бўлмаган) шартни кўрсатамиз. Зарурий шарт - бу цикл сарлавћасидаги шартга кирувчи бирор ўзгарувчининг ќиймати цикл бажарилганда албатта ўзгариши кераклигидир. Мисол кўрамиз;
while a > 0 do
a : = a + 1
Цикл ичида унинг ўзгарувчисининг ќиймати ўзгариб бориши кўриниб турибди, аммо бу цикл тамом бўлмайди, чунки а нинг ќиймати доимо ошиб боради.
Бошќа мисол келтирамиз:
while a 0 do
a : = a – 1
Бу ерда цикл чекли. Циклнинг ћар бир бажарилишида а ўзгарувчининг ќиймати манфий бўлгунга ќадар 1 га камайиб боради. Унда цикл сарлавћасида ёзилган шарт бузилади ва демак, цикл ўз ишини тамомлайди. Ћар ќандай бошланѓич ќийматларда циклнинг тўѓрилигини текшириш анча мураккаб, чунки бунинг учун циклда кўрсатилган амалларни кўп марта бажариш керак.
Кейинчалик айнан бир масалани таћлил ќилишда while циклни текширишга яна ќайтамиз.
0>
Do'stlaringiz bilan baham: |