Функции
Оценка 4.8

Функции

Оценка 4.8
Семинары
doc
информатика +1
8 кл
29.04.2019
Функции
Programma ta’minotini yaratish amalda murakkab jarayon hisoblanadi. Programma tuzuvchi programma kompleksini bir butunlikdagi va uning har bir bo‘lagining ichki mazmunini va ularning sezilmas farqlarini hisobga olishi kerak bo‘ladi. Programmalashga tizimli yondoshuv shundan iboratki, programma tuzuvchi oldiga qo‘yilgan masala oldindan ikkita, uchta va undan ortiq nisbatan kichik masala ostilarga bo‘linadi. O‘z navbatida bu masala ostilari ham yana kichik masala ostilariga bo‘linishi mumkin. Bu jarayon toki mayda masalalarni oddiy standart amallar yordamida yechish mumkin bo’lguncha davom etadi. Shu yo‘l bilan masalani dekompozitsiyalash amalga oshiriladi. Ikkinchi tomondan, programmalashda shunday holatlar kuzatiladiki, unda programmaning turli joylarida mazmunan bir xil algoritmlarni bajarishga to‘g‘ri keladi. Algoritmning bu bo‘laklari asosiy yechilayotgan masaladan ajratib olingan qandaydir masala ostini yechishga mo‘ljallangan bo‘lib, yetarlicha
5-mavzu.doc
Funksiyalar Reja: 1. Funksiya parametrlari va argumentlari 2. Kelishuv bo’yicha argumentlar 3. Ko’rinish sohasi. Lokal va global o’zgaruvchilar Tayanch iboralar: Funksiya parametrlari va argumentlari, kelishuv  bo‘yicha argumentlar, ko‘rinish sohasi. lokal va global o‘zgaruvchilar.  Programma    ta’minotini    yaratish    amalda    murakkab    jarayon  hisoblanadi. Programma tuzuvchi programma kompleksini bir butunlikdagi va  uning har bir bo‘lagining ichki mazmunini va ularning sezilmas farqlarini hisobga  olishi kerak bo‘ladi. Programmalashga tizimli yondoshuv shundan iboratki, programma tuzuvchi  oldiga qo‘yilgan masala oldindan ikkita, uchta va undan ortiq nisbatan  kichik masala ostilarga bo‘linadi. O‘z navbatida bu masala ostilari ham  yana  kichik masala ostilariga bo‘linishi mumkin.  Bu jarayon toki mayda masalalarni oddiy standart amallar yordamida yechish mumkin bo’lguncha davom etadi. Shu yo‘l bilan masalani dekompozitsiyalash  amalga oshiriladi. Ikkinchi tomondan, programmalashda shunday holatlar kuzatiladiki, unda  programmaning turli joylarida mazmunan bir xil algoritmlarni  bajarishga   to‘g‘ri   keladi.   Algoritmning   bu   bo‘laklari 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 a 0 ,a 1 ,…,a 30 , b 0 ,b 1 ,…,b 30  c 0 ,c 1 ,…,c 30  va x,y,z haqiqiy  sonlar yechish  30  xa+ x (a 1 0 29 2 (b­ ) a+…+    30  xc ( 1 z 30 ) 29 30 ) b+…+ y b+ y   29 ) 1  ... c 30 30 0 z ( xc 0 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. Masaladagi 30­darajali ko‘phadni  hisoblash algoritmini, masalan, Gorner algoritmini alohida, bitta nusxada yozib,  unga turli parametrlar­ bir safar a vektor va x qiymatini, ikkinchi safar b vektor va  y qiymatini hamda c vektor va (x+z) qiymatlari bilan murojaat qilish asosiy  masalani yechish mumkin bo‘ladi. Funksiyalar 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 bo‘lar edi:  tenglama koiffitsentlarini 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 o‘z funksiyadir majmuasi yaratib, zarur  bo‘lganda ularga bosh funksiya tanasidan murojaatni amalga oshirish orqali bosh  masala yechish samarali hisoblanadi. Bunday hollarda programmani ixcham va samarali qilish uchun C++ tilida  programma bo‘lagini alohida ajratib olib, uni funksiya ko‘rinishida aniqlash  imkoni mavjud. Funksiya bu – C++ tilida masala yechishdagi kalit elementlaridan biridir. Funksiya parametrlari va argumentlari:[1(177­187), 3(51­56), 4(67­72)]  Programmada ishlatiladigan har qanday funksiya e’lon qilinishi kerak. Odatda  funksiyalar e’loni sarlavha fayllarda e’lon qilinadi va #include direktivasi  yordamida programma matniga qo‘shiladi. Funksiya e’lonini funksiya prototipi  tavsiflaydi (ayrim hollarda signatura deyiladi). Funksiya prototipi quyidagi  ko‘rinishda bo‘ladi:  (); Bu yerda  ­ funksiya ishlashi natijasida y tomonidan  qaytaradigan qiymatning turi. Agar qaytariladigan qiymat turi ko‘rsatilmagan  bo‘lsa, kelishuv bo‘yicha funksiya qaytaradigan qiymat turi int deb hisoblanadi,  ­ vergul bilan ajratilgan funksiya parametrlarining turi va  nomlari ro‘yxati. Parametr nomini yozmasa ham bo‘ladi. Ro‘yxat bo‘sh bo‘lishi  ham mumkin. Funksiya prototiplariga misollar: int almashsin(int,int); double max(double x, double y); void func(); void chop_etish(void); Funksiya prototipi tushirib qoldirilishi mumkin, agar programma matnida  funksiya aniqlanishi uni chaqiradigan funksiyalar matnidan oldin yozilgan bo‘lsa.  Lekin bu holat yaxshi uslub hisoblanmaydi, ayniqsa o‘zaro bir­biriga murojaat  qiluvchi funksiyalarni e’lon qilishda muammolar yuzaga kelishi mumkin. Funksiya aniqlanishi – funksiya sarlavhasi va figurali qavsga (‘{‘,’}’)  olingan qandaydir amaliy mazmunga ega tanadan iborat bo‘ladi. Agar funksiya  qaytaruvchi turi void turidan farqli bo‘lsa, uning tanasida albatta mos turdagi  parametrga ega return operatori bo‘lishi shart. Funksiya tanasida bittadan ortiq  return operatori bo‘lishi mumkin. Ularning ixtiyoriy birortasini bajarish orqali  funksiyadan chiqib ketiladi. Agar funksiyaning qiymati programmada  ishlatilmaydigan bo‘lsa, funksiyadan chiqish uchun parametrsiz return operatori  ishlatilishi mumkin yoki umuman return ishlatilmaydi. Oxirgi holda funksiyadan  chiqish – oxirgi yopiluvchi qavsga yetib kelganda ro‘y beradi. Funksiya programmaning birorta modulida yagona ravishda   aniqlanishi  kerak, uning e’loni esa funksiyani ishlatadigan modullarda necha marta yozilishi mumkin. Funksiya aniqlanishida sarlavhadagi barcha parametrlar nomlari yozilishi shart.  Odatda programmada funksiya ma’lum bir ishni amalga oshirish uchun  chaqiriladi. Funksiyaga murojaat qilganda, u qo‘yilgan masalani yechadi va o’z  ishini tugatishida qandaydir qiymatni natija sifatida qaytaradi Funksiyani chaqirish uchun uning nomi va undan keyin qavs ichida  argumentlar ro‘yxati beriladi: (,..., ); Bu yerda har bir  ­ funksiya tanasiga uzatiladigan va keyinchalik  hisoblash jarayonida ishlatiladigan o‘zgaruvchi, ifoda yoki o’zgarmasdir.  Argumentlar ro‘yxati bo‘sh bo‘lishi mumkin. Funksiyalar ham o‘z tanasida boshqa funksiyalarni, o‘zini ham chaqirishi  mumkin. O‘z tanasida o‘zini chaqiradigan funksiyalarga rekursiv funksiyalar  deyiladi. Oldingi  boblarda ta’kidlab  o‘tilganidek,  C++ tilidagi  har qanqay  programmada albatta main() bosh funksiyasi bo‘lishi kerak. Ayni shu   funksiyani   yuklagich  tomonidan  chaqirilishi   bilan   programma bajarilishi boshlanadi. Quyidagi rasmda bosh funksiyadan boshqa funksiyalarni chaqirish va  ulardan qaytish sxemasi ko‘rsatilgan. int main () { int x, b; Bool a; Char s; Short c; … F1(x,s); A=(x>0); … F2(a,b,c); … return 0; }  void F1(int Radius, char symbol) { … return; }  int  F2(bool YesNo, int Count, short Key )  { … return 0; }  1­rasm. Bosh funksiyadan boshqa funksiyalarni chaqirish va qaytish Programma   main()   funksiyasini   bajarishdan   boshlanadi   va   “f1(x,y);”   – funksiya chaqirishgacha davom etadi va keyinchalik boshqaruv f1(x,y) funksiya tanasidagi   amallarni   bajarishga   o‘tadi.   Bunda   Radius   parametrining   qiymati sifatida   funksiya   x   o‘zgaruvchi   qiymatini,   Symbol   parametri   sifatida   y o‘zgaruvchisining   qiymati   ishlatiladi.   Funksiya   tanasi   return   operatorigacha bajariladi.   Return   operatori   boshqaruvni   main()   funksiyasi   tanasidagi   f1() funksiyasi chaqirilgan operatordan keyingi operatorga o‘tishni ta’minlaydi, ya’ni funksiyadan   qaytish   ro‘y   beradi.   Shundan   keyin   main()   funksiyasi   operatorlari bajarilishda davom etadi va “f2(a,b,c);” – funksiya chaqirishi orqali boshqaruv f2() funksiya tanasiga o‘tadi va hisoblash jarayonida mos ravishda YesNo sifatida a o‘zgaruvchisining,   cout   sifatida     o‘zgaruvchisining   va   key   sifatida   c o‘zgarchuvchisining   qiymatlari   ishlatiladi.   Funksiya   tanasidagi   return   operatori yoki   oxirgi   operator   bajargandan   keyin   avtomatik   ravishda   bosh   funksiyaga qaytish amalga oshiriladi. Aksariyat hollarda main() funksiyasining parametrlar ro‘yxati bo‘sh bo‘ladi.  Agar programmani ishga tushirishda, buyruq satrida ma’lum bir parametrlarni  uzatish (berish) zarur bo‘lsa, main() funksiyasining sintaksisi o‘zgaradi: int main(int argc, char* argv[]); Bu yerda argc – uzatiladigan parametrlar soni, argv[]­ bir­biridan  punktuatsiya belgilari (va probel) bilan ajratilgan parametrlar ro‘yxatini o‘z ichiga  olgan massivga ko‘rsatkich. Quyida funksiyalarni e’lon qilish, chaqirish va aniqlashga misollar  keltirilgan: //  funksiyalar e’loni int mening_funksiyam(int Number, float Point); char Belgini_uqish(); void bitni_urnatish(short Num); void Amal_yoq(int,char);_ //  funksiyalarni chaqirish  result= mening_funksiyam (Varb1,3.14); symb=Belgini_uqish(); bitni_urnatish(3); Amal_yoq(2,Smb1); // funksiyalarni aniqlash int mening_funksiyam (int Number, float Point); {int x; … return x;} char Belgini_uqish(); { char Symbo1; cin>>Symbo1; return Symbo1; }; void bitni_urnatish(short number) (global_bit=global_bit|number;}; void Amal_yoq(int x, char ch){}; Funksiyaning programmadagi o‘rnini yanada tushunarli bo‘lishi uchun son  kvadratini hisoblash masalasida funksiyadan foydalanishni ko’raylik. Funksiya prototipini   sarlavha.h  sarlavha faylida   joylashtiramiz: long Son_Kvadrati(int); Asosiy programmaga  ushbu  sarlavha   faylini  qo‘shish  orqali  Son_Kvadrati() funksiya e’loni programma matniga kiritiladi: #include  #include “sarlavha.h” int main() { int uzgaruvchi=5; cout< long Son_kvadrati(int); int main() { int uzgaruvchi=5; cout<”; cin>>n; cout<<’[‘<>  sarlavha faylida joylashgan(3­ilova qarang): #include  #include  void chop_qilish (double Numb, double aniqlik=1,bool bayroq=true); int main() {double Mpi=­3.141592654; chop_qilish(Mpi,4, false); chop_qilish(Mpi,2); chop_qilish(Mpi); return 0; } void chop_qilish(double Numb, double aniqlik=1,bool bayroq=true) {if(!bayroq)Numb=fabs1(Numb); Numb=(int)(Numb*pow(10,aniqlik)); Numb=Numb/pow(10,aniqlik); cout< // funksiya prototipi  int sum (int a; int b); int main() { // lokal  o’zgaruvchi int x=r; cout< int f1(); int f2(); int main() { cout< //global o’zgaruvchi e’loni int test=100; void Chop_qilish(void); int main() { //lokal o’zgaruvchi e’loni int test=10; //global o’zgaruvchi chop qilish funksiyasini chaqirish Chop_qilish(); cout<<”Lokal o’zgaruvchi: “<

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции

Функции
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
29.04.2019