v:=S;
label1.Caption:='u='+floattostr(u)+#13+'v='+floattostr(v);
end.
Asosiy dasturning operatorlar qismida ikki marta yozilgan max1 parametrsiz protsedurasiga murojaat, e’lon qilingan protsedurani ikki marta asosiy dasturga olib kelib ishlatishni tashkil qiladi. Ahamiyat berilsa, ikkinchi dastur birinchi protsedurasiz tuzilgan dasturga ko‘ra ixchamroq va soddaroqdir. Biz kiritgan protsedura hozircha faqat ikkita haqiqiy son ichidan kattasini aniqlab berdi xolos, shuning uchun dastur matning hajmini kamaytirishdan erishgan yutuq salmoqli bo‘lmadi. Lekin, protseduralar asosan ko‘p hajmli matndagi amallarni, vazifalarni bajarishga mo‘ljallanadi va bu holda erishilgan yutuq salmog‘i ancha yuqori bo‘ladi.
Parametrsiz protseduraning asosiy kamchiligi, uning asosiy dasturga va undagi ma’lum parametrlarga bog‘lanib qolganligidir.
Parametrli protseduralar
Protsedura bilan asosiy dasturni bog‘laydigan asosiy faktor bu – protsedura parametrlaridir. Parametrlarni ikkita turga ajratiladi: qiymatli parametrlar (parametr-qiymat), o‘zgaruvchili parametrlar (para-metr - o‘zgaruvchi).
Parametr - qiymat bu protsedurani ishlash jarayonini ta’minlovchi parametrlar hisoblanadi, ya’ni asosiy dastur qiymatlarini protseduraga uzatadigan parametrlardir.
Endi, yuqorida ko‘rib chiqilgan sonlarni eng kattasini topish algoritmining dasturcini qiymatli parametr bilan yozilgan protseduralar orqali amalga oshiraylik:
var x, y, u, v: real; S: real;
procedure max2 ( a, b: real );
begin
if a>b then S:=a else S:=b;
end;
begin
x:=strtofloat(edit1.Text);
y:=strtofloat(edit2.Text);
max2 (x + y, x * y); u:=S;
max2 (0.5 , u); v:=S;
label1.Caption:='u='+floattostr(u)+#13+'v='+floattostr(v);
end;
bu yerda a, b - protseduraning qiymatli formal parametrlari.
Protseduraga murojaat qilishda formal va faktik parametrlarning turlari o‘zaro mos kelishi kerak, aks holda dastur xato tuzilgan hisoblanadi. Yuqoridagi dasturdan ko‘rinib turibdiki, a va b formal parametrlar o‘rniga natijaviy qiymatlari ma’lum ifodalar qo‘yildi. Demak, qiymatli faktik parametrlar o‘rniga, shu turli natijaga erishuvchi ifoda yozilishi mumkin. Bundan tashqari, protsedurada kiritilgan a va b parametrlari faqat protseduraning ichidagina ma’noga ega, tashqarida, misol uchun asosiy dasturda ular tushunarsiz, qiymatlari aniqlanmagan miqdorlardir. Shuning uchun, qiymatli parametrlarga protsedura natijalarini o‘zlashtirib, asosiy dasturga uzatib bo‘lmaydi.
Yuqorida tuzilgan dasturning asosiy kamchiligi, topilgan katta son doim S o‘zgaruvchisiga o‘zlashtirilayapti. Misolimiz shartiga ko‘ra, natijalar u va v o‘zgaruvchilariga o‘zlashtirilishi kerak. Shuning uchun, dasturda ikki marta qo‘shimcha u:=S va v:=S o‘zlashtirish operatorlari yozildi.
Bu kamchilikni tuzatish uchun protseduraga yana bir parametrni kiritamiz. Lekin, kiritilgan bu parametr protseduraga qiymat olib kirmaydi balki, protsedura natijasini asosiy dasturga olib chiqib ketadi. Bunday parametrni parametr - o‘zgaruvchi deb ataladi.
Parametr-o‘zgaruvchini parametr-qiymatdan farq qilish uchun protsedurani aniqlashdagi parametrlar ro‘yxatida o‘zgaruvchi oldidan var xizmatchi so‘zi yoziladi. Parametr - o‘zgaruvchidan so‘ng albatta, uning turi ko‘rsatib qo‘yiladi. Yuqorida aytganimizdek, formal parametr - qiymat o‘rniga protseduraga murojaat vaqtida shu turli ifoda yozish mumkin bo‘lsa, parametr - o‘zgaruvchi uchun bu hol mutlaqo mumkin emas.
Protsedurani mukammallashtirib borish dinamikasini his etish uchun yana, yuqorida ko‘rilgan maksimum topish misolining dasturini parametr - o‘zgaruvchi ishlatgan holda ko‘rib chiqamiz:
Do'stlaringiz bilan baham: |