function f (n:integer) : integer;
begin
if n > 0
then f : = f (n – 1) * n
else f : = 1
end.
Bu misolda ikkala zaruriy shart ham bajarilgan. Rekursiv funktsiyaga murojaat qilish shartli operatorga kiradi. n - o`zgaruvchining qiymati har bir f (n - 1) murojaat qilishda o`zgaradi, ya`ni funktsiyaning yangi nusxasida parametr qiymatidan o`zidan oldingi nusxadagiga qaraganda bitta kam bo`ladi. Ma`lum vaqtdan keyin n parametrning qiymati nolga teng bo`ladi va f funktsiyaga keyingi murojaat qilish bajarilmaydi. Funktsiya birinchi nusxaga qaytganda keyin dastur o`z ishini tamomlaydi.
Boshqa misol ko`ramiz:
function ff (n:integer) : integer;
begin
if n > 0
then ff : = ff (n + 1) * n
else ff : = 1
end.
ff(n) ga murojaat qilishda uchragan dastur n>0 da chekli bo`lmaydi.
Ba`zi hollarda rekursiv fuktsiya va protseduralarning to`g`riligiga ishonch hosil qilishga ularda yozilgan amallarning masala ta`rifiga mos kelishi zarurligi yordam beradi.
SHunday qilib, dasturni tekshirish mashaqqatli mehnat ekanligi ravshan bo`ldi. Tajriba dasturning hammasini dastlabki ma`lumotlarning mumkin bo`lgan har qanday qiymatlarida to`g`riligini isbot qilishga qaraganda ba`zi nazorat qiymatlar bo`yicha dastur natijalarining to`g`riligini tekshirish ancha soddaroq ekanligini ko`rsatadi. Ammo dastlabki ma`lumotlarning cheklangan miqdordagi variantlarida ba`zi xato natijalarni oson o`tkazib yuborish mumkin. Bundan tashqari nazorat qiymatlarni tanlashda ham ma`lum qiyinchiliklar tugiladi.
Dasturni tekshirishning quyidagi tartibini tavsiya qilish mumkin:
Dastlabki ma`lumotlarning bitta yoki ikkita tanlab olingan variantlarida dasturning amallarini qo`lda bajarib, natijaviy qiymatlarni olish.
Tekshiriladigan dasturda tsikllar, rekursiv funktsiya hamda protseduralarning chekligini ko`rsatish.
Dastlabki ma`lumotlarning mumkin bo`lgan har qanday qiymatlarida dasturning to`g`riligini isbotlashga harakat qilish. Agar buni bajarish ancha murakkab bo`lsa, unda bu dasturga xos bir nechta dastlabki ma`lumotlarni tanlab olish va shu qiymatlar bilan dasturdagi amallarni bajarish (ya`ni birinchi bosqichni nazorat qiymatlarning juda ko`p variantlarida takrorlash) kerak.
13.5. Dasturni takomillashtirish.
Har doim ham birdaniga ixcham va tejamli dastur yaratishga muvofiq bo`linavermaydi. Ba`zida dastur tuzilgan, tekshirilgan bo`lsada, dasturchida dasturni takomillashtirishning yangi fikrlari (qisqaroq, aniqroq, lo`ndaroq yoki tejamliroq qilish) tugilib qoladi. Sonning absolyut qiymatini aniqlovchi shartli operatorni misol tariqasida ko`rib chiqamiz:
Do'stlaringiz bilan baham: |