- Mavzu: C++ da funksiyalar: tuzilishi va undan foydalanish
- Reja:
- Qiymatlarni qaytarish;
- Funksiya prototiplari;
- Parametrlarni qiymat va adresga ko‘ra jo‘natish;
- Xulosa.
- Funksiya – bu yordamchi algoritm bo‘lib (dasturosti), ish
- natijasi sifatida ma'lum bir qiymatlari olinadi.
- Misollar:
- Sondan ildiz olish,
- Murakkab formulalar bo‘yicha qiymatlarni hisoblash
- Savolga javob (oddiy osonmi yoki yo‘q?)
- Nega?
- Dasturning turli joylarida bir xil hisoblashlarni
- bajarish uchun
- Ommabop funksiyalar kutubxonasini yaratish uchun
- <natija tipi> <funksiya nomi> (<formal parametrlar ro‘yxati>)
- <formal parametrlar spetsifikatsiyasi>
- {
-
-
- }
- Funksiyani tipi sifatida faqat butun va haqiqiy tiplar olinishi mumkin:
- char,
- int,
- long,
- float,
- double
- long double.
- Bundan tashqari bu yerda signed va unsigned larni ham ishlatish mumkin.
- Agar funksiyani tipi ko‘rsatilmagan bo‘lsa, u holda uning tipi int deb qabul qilinadi.
- Natijani qaytarmaydigan funksiyalar C++ da mavjud. Bu holda ularni oldiga void qo‘yiladi.
- Formal parametrlar ro‘yxati bir-biridan vergul bilan ajratilgan identifikatorlar naboridan iborat, ya'ni:
- :: = (,
- , ...)
- Masala: Ikkita qiymatdan kattasini aniqlovchi
- funksiya tuzing va undan foydalanish
- tartibini ko‘rsating.
- Yechim: funksiyadan foydalaniladi.
- int Max ( int a, int b )
- {
- if ( a > b ) return a ;
- else return b ;
- }
- return – funksiya natijasini qaytarish
- Xususiyati:
- Natija tipini funksiya nomi boshida ko‘rsatiladi
- formal parametrlar protseduradagidek ko‘rsatiladi
- O‘zgaruvchi-parametrlardan foydalanish mumkin
- Odatda funksiyalar asosiy dasturdan oldin joylashgan bo‘ladi
- Xususiyat:
- lokal o‘zgaruvchilardan foydalanish va e'lon
- qilish mumkin
- float qq ( int a, int b)
- {
- ...
- }
- Lokal o‘zgaruvchilarga asosiy dastur va boshqa funksiyalardan murojaat qilish mumkin emas.
- int main()
- {
- int a, b, с;
- cout<<“Ikkita son kiriting \n" ;
- cin>>a>>b;
- c = Max ( a, b );
- cout<<“Katta son “<< c ;
- }
- int Max ( int a, int b )
- {
- ...
- }
- #include
- #include
- #include
- int Max ( int a, int b )
- {
- if ( a > b ) return a ;
- else return b ;
- }
- int main()
- { int a, b, c;
- cout<<“Ikkita son kiriting \n" ;
- cin>>a>>b;
- c = Max(a, b);
- cout<<"Katta son "<
- getch(); return 0;}
- Masala. Berilgan son tub son ekanligini aniqlovchi funksiya tuzing.
- Xususiyati:
- javob – mantiqiy qiymat: «Yes» (1) yoki «No» (0)
- shartlarda (if, while) mantiqiy qiymatini funksiya natijasi sifatida foydalanish mumkin
- Algoritm: son bo‘luvchilarini 2 va N-1 intervalida qidiramiz, agar u nolga teng bo‘lmasa, bu son murakkabdir.
- count = 0;
- for (i = 2; i < N; i ++)
- if ( N % i == 0 ) count ++;
- if ( count == 0 )
- // N soni tub}
- else // N soni murakkab
- Qanday yaxshilash mumkin?
- int main()
- {
- int N;
- cout<< “Butun son kiriting \n” ;
- cin>>N;
- if ( Prime( N ) )
- cout<
- else cout<
- int Tub( int N )
- {
- int count = 0, i;
- for (i = 2; i*i <= N; i++)
- if (N % i == 0) count ++;
- return count ;
- }
- if (count == 0) return 1;
- else return 0;
- “1": 1 dan N gacha bo‘lgan sonlar yig‘indisini topuvchi funksiya tuzing va foydalanish misolini keltiring.
- Masalan:
- Son kiriting:
- 100
- 1 dan 100gacha sonlar yig‘indisi = 5050
- “2": Shaxmat ixtirochisi N-katakka nechta bug‘doy qo‘yish kerakligini so‘ragan, bug‘doylar soni aniqlovchi funksiya tuzing (1-ga – 1 bo‘g‘doy, 2-ga – 2 ta bug‘doy, 3-ga – 4 ta bug‘doy, …)
- Eslatma: long int tipidan foydalaning.
- Masalan:
- Katak nomeri kiriting:
- 28
- 28-katakda 134217728 ta bug‘doy.
- “1": 1 dan N gacha bo‘lgan sonlar yig‘indisini topuvchi funksiya tuzing va foydalanish misolini keltiring.
- Masalan:
- Son kiriting:
- 100
- 1 dan 100gacha sonlar yig‘indisi = 5050
- “2": Shaxmat ixtirochisi N-katakka nechta bug‘doy qo‘yish kerakligini so‘ragan, bug‘doylar soni aniqlovchi funksiya tuzing (1-ga – 1 bo‘g‘doy, 2-ga – 2 ta bug‘doy, 3-ga – 4 ta bug‘doy, …)
- Eslatma: long int tipidan foydalaning.
- Masalan:
- Katak nomeri kiriting:
- 28
- 28-katakda 134217728 ta bug‘doy.
- “3": Ikkita natural sonning eng katta umumiy bo‘luvchisini topuvchi funksiya tuzing va undan foydalanishga misol keltiring.
- Masalan:
- Ikkita son kiriting:
- 14 21
- EKUB(14,21)=7
- “4": Sinus funksiyasini qator yig‘indisi sifatida aniqlovchi dastur tuzing (0.001 aniqlikda)
- Masalan:
- Burchakni gradusda kiriting:
- 45
- sin(45) = 0.707
Funksiya bu – ma’lum vazifalarni bajaruvchi qism dastur bo’lib, dasturning ixtiyoriy qismida chaqiriladi. - Funksiya bu – ma’lum vazifalarni bajaruvchi qism dastur bo’lib, dasturning ixtiyoriy qismida chaqiriladi.
- Unga qiymat uzatish uchun parametr o’zgaruvchilardan foydalaniladi.
-
Do'stlaringiz bilan baham: |