function ff (n:integer) : integer;
begin
if n > 0
then ff : = ff (n + 1) * n
else ff : = 1
end.
ff(n) га мурожаат ќилишда учраган дастур n0 да чекли бўлмайди.
Баъзи ћолларда рекурсив фукция ва процедураларнинг тўѓрилигига ишонч ћосил ќилишга уларда ёзилган амалларнинг масала таърифига мос келиши зарурлиги ёрдам беради.
Шундай ќилиб, дастурни текшириш машаќќатли мећнат эканлиги равшан бўлди. Тажриба дастурнинг ћаммасини дастлабки маълумотларнинг мумкин бўлган ћар ќандай ќийматларида тўѓрилигини исбот ќилишга ќараганда баъзи назорат ќийматлар бўйича дастур натижаларининг тўѓрилигини текшириш анча соддароќ эканлигини кўрсатади. Аммо дастлабки маълумотларнинг чекланган миќдордаги вариантларида баъзи хато натижаларни осон ўтказиб юбориш мумкин. Бундан ташќари назорат ќийматларни танлашда ћам маълум ќийинчиликлар тугилади.
Дастурни текширишнинг ќуйидаги тартибини тавсия ќилиш мумкин:
Дастлабки маълумотларнинг битта ёки иккита танлаб олинган вариантларида дастурнинг амалларини ќўлда бажариб, натижавий ќийматларни олиш.
Текшириладиган дастурда цикллар, рекурсив функция ћамда процедураларнинг чеклигини кўрсатиш.
Дастлабки маълумотларнинг мумкин бўлган ћар ќандай ќийматларида дастурнинг тўѓрилигини исботлашга ћаракат ќилиш. Агар буни бажариш анча мураккаб бўлса, унда бу дастурга хос бир нечта дастлабки маълумотларни танлаб олиш ва шу ќийматлар билан дастурдаги амалларни бажариш (яъни биринчи босќични назорат ќийматларнинг жуда кўп вариантларида такрорлаш) керак.
13.6. Дастурни такомиллаштириш.
Ћар доим ћам бирданига ихчам ва тежамли дастур яратишга мувофиќ бўлинавермайди. Баъзида дастур тузилган, текширилган бўлсада, дастурчида дастурни такомиллаштиришнинг янги фикрлари (ќисќароќ, аниќроќ, лўндароќ ёки тежамлироќ ќилиш) тугилиб ќолади. Соннинг абсолют ќийматини аниќловчи шартли операторни мисол тариќасида кўриб чиќамиз:
Do'stlaringiz bilan baham: |