☰ Mundarija · Informatika

Qism dasturlar: funksiya va protsedura

Darslar 47–48 · 2 ta dars · M. R. Fayziyeva, D. M. Sayfurov, N. S. Xaytullayeva. Informatika va axborot texnologiyalari, 9-sinf. «Nashriyot uyi Tasvir», Toshkent, 2020
47

Qism dasturlar: funksiyalar va protseduralar

Darslik: 91–94-betlar
MaqsadQism dastur, funksiya va protsedura tushunchalarini biladi, def va return yordamida parametrli funksiya yozadi va chaqiradi, rekursiya hamda uning to‘xtash shartini tushuntiradi.
Yangi so‘zlar
funksiya · function: a named subprogram that takes parameters and may return a resultparametr · parameter: a name in the brackets of def that receives the value passed when the function is calledreturn · return: gives the result back to the place where the function was calledrekursiya · recursion: a function that calls itself
Tushuntirish

Dasturda bir xil ishlar bir necha joyda takrorlansa, ularni qism dastur – funksiyaga ajratish qulay: kod bir marta yoziladi, xato bir joyda tuzatiladi. Funksiya def nom(parametrlar): bilan e’lon qilinadi, tanasi 4 ta probel chekinish bilan yoziladi; u faqat chaqirilganda ishlaydi: nom(qiymatlar). Natijani chaqirilgan joyga qaytarish uchun return ishlatiladi; return bo‘lmasa, funksiya hech narsa qaytarmaydi (None) – darslikda bunday qism dastur protsedura deb ataladi. Funksiya nomi o‘rnatilgan max, len, print kabi nomlar bilan bir xil bo‘lmasin, aks holda ular «yopilib» qoladi. Funksiya o‘zini o‘zi chaqirsa, bu rekursiya: masalan, n! = n · (n − 1)!, 0! = 1. Rekursiyada to‘xtash sharti (if n == 0: return 1) shart, aks holda chaqiruvlar to‘xtamaydi va RecursionError chiqadi.

Namunalar
Funksiya va protsedura: def kvadrat(x): ⏎     return x * x ⏎ print(kvadrat(7)) kvadrat(7) 49 ni qaytaradi. def salom(ism): ⏎     print("Salom,", ism + "!") ⏎ salom("Lola") salom("Lola") ekranga Salom, Lola! chiqaradi va hech narsa qaytarmaydi.
Rekursiya: def fakt(n): ⏎     if n == 0: ⏎         return 1 ⏎     return n * fakt(n - 1) ⏎ print(fakt(5)) fakt(5) = 5 · fakt(4) = … = 5 · 4 · 3 · 2 · 1 · fakt(0), fakt(0) = 1, natija 120. Qiymat qaytarmaydigan qism dastur: def salom(): ⏎     print("Salom") ⏎ x = salom() ⏎ print(x) x ga None tushadi.
Sinfda faoliyat

«Funksiya – mashina»: sinf bir funksiyani «mashina» sifatida o‘ynaydi: bir o‘quvchi parametr beradi (masalan, 7), «mashina» o‘quvchi qoidani bajaradi (kvadrat), natijani (49) qaytaradi; so‘ng qoidalar almashtiriladi.

Mashq
1
f(x) = 2 * x + 1 funksiyasi f(4) uchun nimani qaytaradi?
2
Ikki sonning ko‘paytmasini qaytaruvchi yuza(a, b) funksiyasini yozing va yuza(6, 7) ni chiqaring.
3
Rekursiv fakt(4) nimaga teng?
4
Funksiyadan foydalanishning ikki afzalligini ayting.