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?
9
2
Ikki sonning ko‘paytmasini qaytaruvchi yuza(a, b) funksiyasini yozing va yuza(6, 7) ni chiqaring.
def yuza(a, b): ⏎ return a * b ⏎ print(yuza(6, 7))
3
Rekursiv fakt(4) nimaga teng?
24
4
Funksiyadan foydalanishning ikki afzalligini ayting.
Kod takrorlanmaydi va xatoni faqat bitta joyda tuzatish yetarli.