program daraja (input, output);
var k, n, p : integer;
begin
read (n);
p:=1
for k:=1 to n do
p:=p*2;
write (p);
end.
Bu dasturni tekshirish uchun bir varaq qog`oz olib, unga dastur matnida uchraydigan barcha o`zgaruvchilarni yozib chiqamiz. (jadvalning birinchi yo`li.)
-
O`zgaruvchilar qiymatlari
|
K
|
N
|
p
|
Dasturning bajarilishidan oldin
|
?
|
?
|
?
|
read (n) operatori bajarilgandan keyin
|
?
|
3
|
?
|
r: = 1 operatori bajarilgandan keyin
|
?
|
3
|
1
|
1 – tsikl bajarilgandan keyin
|
1
|
3
|
2
|
2 – tsikl bajarilgandan keyin
|
2
|
3
|
4
|
3 – tsikl bajarilgandan keyin
|
3
|
3
|
8
|
Dastur bajarilgandan keyin
|
3
|
3
|
8
|
Dastur bajarilgunga qadar o`zgaruvchilarning qiymatlari aniqlangan emas. Dasturning bajarilishida o`zgaruvchilarga aniq qiymatlar o`zlashtiriladi, ularni jadvalga ustun bo`ylab pastga tomon yozib boramiz.
Daraja dasturda read (n) operator xotiradan n ning qiymatini o`qiydi. n=3 deb, faraz qilamiz, p – o`zgaruvchiga 1 qiymat o`zlashtiriladi. TSikl operatorlari bajarilganda k va p o`zgaruvchilarning qiymatlari doim o`zgarib boradi. Hisoblash oxirida k=3, r= 8 bo`ladi. Demak, daraja dastur 2 sonini 3 – darajaga to`g`ri ko`taradi, chunki 23 = 8.
Dasturni tashkil qiluvchi funktsiyalar va protseduralarni bir-biridan mustaqil ravishda tekshirish, olingan natijalarni esa masalaning hammasini tekshirishda ishlatish maqsadga muvofiqdir. Rekursiv protsedura funktsiyalarning to`g`riligini aniqlash ancha murakkab. O`zgaruvchilarning qiymatlarini aniq ko`rsatish uchun rekursiv protsedura yoki funktsiyaning har bir nusxasini alohida jadvalga yozish kerak.
Dasturning to`g`riligini tekshirishda foydlaniladigan ma`lumotlar nazorat ma`lumotlari deyiladi. Qulay va shu bilan birga aynan shu masala uchungina xos nazorat ma`lumotlarini tanlash juda muhimdir. Masalan, agar dasturga tsikl kiritilgan va uning takrorlanish soni dastlabki ma`lumotga bog`liq bo`lsa, bu holda nazorat qiymat sifatida shunday qiymatni tanlash maqsadga muvofiqki, unda tsikl amallarini ko`p marta bajarish talab qilinmaydigan bo`lsin. Aks holda tsiklni tekshirish ko`p vaqtni oladi.
Yuqorida yozilgan daraja dasturini tekshiramiz. n = 3 da dastur to`g`ri tuzilganligi ko`rsatilgan edi. YAna n=0 va n=1 bo`lgan ikki holni ko`ramiz. Bu qiymatlar bilan dastur amallarini bajarib, mos ravishda p=1 va r=2 natijalarni olamiz. n=0 da dastur tsikli bajarilmaydi va r o`zgaruvchining qiymati 1 ga teng bo`lib qolaveradi. Demak, daraja dastur, 2 sonini, n ³ 0 darajaga ko`tarishga mo`ljallangan. SHunday qilib, tsiklning to`g`riligini tekshirish uchun shunday nazorat qiymatlarini tanlash kerakki, unda tsikl bir marta , bir necha marta bajariladigan yoki umuman bajarilmaydigan bo`lsin. SHartli operatorni tekshirishda uning har bir qismi (tarmogi) hech bo`lmaganda bir marta bajariladigan bo`lishi kerak. Masalan, kabisa funktsiyaning to`g`riligiga ishonch hosil qilish uchun ushbu 1600, 1900, 1988,1987 nazorat ma`lumotlardan foydalanamiz. Funktsiyada ko`rsatilgan amallarni bajarib, true, false, true, false to`g`ri natijalarni olamiz.
Ba`zi nazorat qiymatlarda dastur natijalari to`g`ri bo`lsa, dasturning o`zi ham to`g`ri tuzilganligin tasdiqlash mumkinmi? Yo`q, albatta.
Boshqa dastur misolida bu fikrning to`g`riligini tushuntirib boramiz. 2 sonini n darajaga ko`tarish uchun quyidagi dastur tuzilgan bo`lsin:
Do'stlaringiz bilan baham: |