Funktsiyalar
Programma ta’minotini yaratish amalda murakkab jarayon hisoblanadi. Programma tuzuvchi programma kompleksini bir butunlikdagi va uning har bir bo’lagining ikir-chigirliklari va sezilmas farqlarini hisobga olishi kerak bo’ladi. Programmalashga tizimli yondoshuv shundan iboratki, programma tuzuvchi oldiga qo’yilgan masala oldindan ikkita – uchta nisbatan kichik masala ostilarga bo’linadi. O’z navbatida bu masala ostilari ham yana kichik masala ostilariga bo’linadi. Bu jarayon toki mayda masalalar oddiy standart protseduralar yordamida yechish mumkin bo’lguncha davom etadi. Chunday qilib, masala dekompozitsiyasi amalga oshiriladi.
Ikkinchi tomondan, programmalashda shunday holatlar kuzatiladiki, unda programmaning turli joylarida mazmunan bir xil algoritmlarni bajarishga to’g’ri keladi. Bu algorimlar asosiy yechilayotgan masaladan ajratib olingan qandaydir masala ostini yechishga mo’ljallangan bo’lib, yetarlicha mustaqil qiymatga (natijaga) egadir. Misol uchun quyidagi masalani ko’raylik:
Berilgan a0,a1,...,a30, b0,b1,...,b30, c0,c1,...,c30 va x,y,z haqiqiy sonlar uchun
ifodaning qiymati hisoblansin.
Bu misolni yechishda kasrning surat va maxrajidagi ifodalar bir xil algoritm bilan hisoblanadi va programmada har bir ifodani (masala osti) hisoblash uchun bu algoritmni 3 marta yozishga to’g’ri keladi. Bunday hollarda programmani ixcham va samarali qilish uchun S++ tilida programma bo’lagini alohida ajratib olib, uni funktsiya ko’rinishida aniqlashga imkon mavjud. Yuqoridagi masaladagi 30-darajali ko’phadni hisoblash algoritmini, masalan, Gorner algoritmini alohida, bitta nusxada yozib, unga turli parametrlar- bir safar a vektor va x qiymatni, ikkinchi safar b vektor va y qiymatni, hamda s vektor va (x+z) qiymatlar bilan murojaat qilish orqali asosiy masalani yechish mumkin bo’ladi. Funktsiyalar qo’llanishining yana bir sababini quyidagi masalada ko’rishimiz mumkin – berilgan chiziqli tenglamalar sistemasini Gauss, Kramer, Zeydel usullarining birortasi bilan yechish talab qilinsin. U holda asosiy programmani quyidagi bo’laklarga bo’lish maqsadga muvofiq bular edi: tenglama koeffitsentlarini kiritish bo’lagi, yechish usulini tanlash bo’lagi, Gauss, Kramer, Zeydel usullarini amalga oshirish uchun alohida bo’laklar, natijani chop qilish bo’lagi. Har bir bo’lak uchun qnomprogrammalar yaratib, zarur bo’lganda ularga asosiy programma tanasidan murojaatni amalga oshirish orqali bosh masala yechiladi.
Konkret masalani S++ tilida yechishdagi bu modelning kalit elementi funktsiya hisoblanadi. Funktsiya – bu tugallangan mazmunga ega qnomprogramma yoki qandaydir protseduradir.
Dostları ilə paylaş: |