§3.14. Protseduralar
Programmalashda shunday holatlar kuzatiladiki, unda programmaning turli joylarida mazmuni jihatidan bir xil algoritmni bajarishga to‘g‘ri keladiki, u mustaqil qiymatga ega, ya’ni yechilayotgan asosiy masalaning biror bir qism masalasini yechishga mo‘ljallangan bo‘ladi. Masalan ikkita natural sonning eng katta umumiy bo‘luvchisini topish, vektorning komponentalarini o‘sish yoki kamayish ko‘rinishda tartiblash va boshqa masalalar.
Agar bu xususiy algoritm hajm jihatidan katta va murakkab bo‘lsa, u holda bu algoritmni har safar qayta yozish programmani murakkablashtirish bilan bir qatorda uni yozish jarayonida grammatik xatolarga yo‘l quyish ehtimolini oshiradi. Yuqoridagi kamchiliklarni oldini olish maqsadida, hamda uning ixchamligini va tushinarli ko‘rinishini ta’minlash uchun Paskal tili har qanday xususiy algoritmni asosiy programmani matnidan ajratib, uni mustaqil programma obyekti ko‘rinishda, faqat bir marta yozish imkonini beradi. Bu programma obyekti - protsedura (qism-programma) deyiladi.
Protsedura - protsedura va funksiyalar bo‘limida e’lon qilinadi va umumiy holda quyidagi sxematik ko‘rinishga ega bo‘ladi:
procedure < protsedura nomi>();
;
begin
end;
Endi protseduraning sintaksisi ta’rifini beramiz va har bir foydalanilgan tushunchalarga batafsil to‘xtab o‘tamiz.
:: =
: ;
Blok protseduraga taalluqli bo‘lib, u programma tuzilishidagi bo‘limlar bilan bir xil sintaksisga ega.
Protseduraning sarlavhasi procedure xizmatchi so‘zidan, protseduraning nomi va qavs ichida ba’zi bir qo‘shimcha ma’lumotlarni o‘z ichiga olgan bo‘lishi mumkin.
Berilgan protsedurani aktivlashtirish, ya’ni ishga tushirish uchun programmani zarur joyida protsedura operatorni yozish kerak:
:: =
yoki
();
Protseduraning ikki xil ko‘rinishini ishlatish mumkin: parametrli protsedura va parametrsiz. Parametrsiz protseduralarda ma’lumotlar asosiy programmaning blokidan olinadi, ya’ni global qiymat hisoblanadi. Bu esa ratsional hisoblanmaydi. Protsedura sarlavhasining umumiy ko‘rinishdagi yozilishi quyidagicha:
Procedure
();
bu yerda procedure-qism programma protsedura ko‘rinishda berilayotganini anglatuvchi xizmatchi so‘zdir,
-identifikator.
Rasmiy parametrlar ro‘yxatida qavslar ichida quyidagi ko‘rinishdagi parametrlar bo‘lishi mumkin:
1) parametr-qiymatlar;
2) parametr-o‘zgaruvchilar (ularning oldida var xizmatchi so‘zi turadi);
3) Protsedura nomini ko‘rsatuvchi parametrlar (ularning oldida procedure xizmatchi so‘zi turadi);
4) Funksiya nomini ko‘rsatuvchi parametrlar (ularning oldida function xizmatchi so‘zi turadi).
Sarlavhadan so‘ng protseduraning tanasi joylashib ";" belgisi bilan tugaydi. Protseduraning tanasi Turbo-Paskal programmasi tuzilishidagi ketma-ket joylashgan bo‘limlardan iborat bo‘lishi mumkin.
Protsedurani chaqirish va uni ishlashi quyidagi protsedura operatori yordamida amalga oshiriladi:
();
Bu yerda
-murojaat qilinayotgan protseduraning nomi, - protsedurani ishlashida ramziy parametrlarga mos qo‘yiladigan qiymatlar (ifodalar) yoki o‘zgaruvchilar nomlari iborat bo‘lishi mumkin.
Faktik va ramziy parametrlar orasida quyidagi munosabatlar bo‘lishi lozim:
- faktik parametrlar soni bilan ramziy parametrlar soni teng bo‘lishi kerak;
- ro‘yxatdagi faktik parametrlarni joylashish tartibi ramziy parametrlarni joylashish tartibi bilan bir xil bo‘lishi kerak;
- faktik parametrlarning har birini turi mos ravishda har bir ramziy parametrni turi bilan mos tushishi kerak.
Agar protseduraga parametrsiz murojaat qilinmoqchi bo‘lsa, u holda protsedura operatorida murojaat qilinayotgan protseduraning nomigina ko‘rsatiladi, xolos. Quyida biz ramziy parametrlarning ikki ko‘rinishiga misollar ko‘ramiz:
Do'stlaringiz bilan baham: |