Prosek tri broja
Napiši funkciju prosek(a, b, c) koja vraća prosek tri broja (deljenje sa 3). Pritiskom na A prikaži prosek brojeva 4, 8 i 9.
Primer
Izlaz
7Kada se ista grupa blokova ponavlja na više mesta, program postaje dugačak i težak za izmenu. Funkcija je imenovana grupa naredbi: napravimo je jednom, a pozivamo koliko god puta treba. Funkcija može da prima podatke (parametre) i da vrati rezultat. Funkcije su u paleti Functions (pod Advanced).
Klikni Make a Function…, upiši ime (npr. trepni) i potvrdi. Na radnoj površini se pojavi blok function trepni, a u paleti blok call trepni kojim se funkcija poziva.
// funkcija: srce se upali i ugasi
function trepni () {
basic.showIcon(IconNames.Heart)
basic.pause(300)
basic.clearScreen()
basic.pause(300)
}
input.onButtonPressed(Button.A, function () {
trepni() // poziv funkcije
})
input.onButtonPressed(Button.B, function () {
trepni() // ista funkcija, drugo mesto
trepni()
})
Ako želimo da srce bude veće ili da trepće sporije, menjamo samo telo funkcije – svi pozivi odmah koriste novu verziju.
Pri pravljenju funkcije možemo dodati parametar (dugme Number, Text…). Parametar je promenljiva koja dobija vrednost pri pozivu:
// koliko puta treba trepnuti, zadaje se pri pozivu
function trepni (puta: number) {
for (let i = 0; i < puta; i++) {
basic.showIcon(IconNames.Heart)
basic.pause(300)
basic.clearScreen()
basic.pause(300)
}
}
input.onButtonPressed(Button.A, function () {
trepni(2) // dva puta
})
input.onButtonPressed(Button.B, function () {
trepni(5) // pet puta
})
Isti program u Python-u (MakeCode) – funkcija se pravi rečju def:
def trepni(puta: number):
for i in range(puta):
basic.show_icon(IconNames.HEART)
basic.pause(300)
basic.clear_screen()
basic.pause(300)
def on_button_pressed_a():
trepni(2)
input.on_button_pressed(Button.A, on_button_pressed_a)
Blok return vraća rezultat funkcije onome ko ju je pozvao. Takva funkcija se koristi kao vrednost – npr. unutar bloka show number.
// vraća veći od dva broja
function veci (a: number, b: number): number {
if (a > b) {
return a
}
return b
}
input.onButtonPressed(Button.A, function () {
let x = randint(1, 9)
let y = randint(1, 9)
basic.showNumber(x)
basic.showNumber(y)
basic.showNumber(veci(x, y)) // rezultat funkcije
})
Kada se izvrši return, funkcija se odmah završava – zato posle prvog return a ne dolazi do return b.
U lekciji o grananju kompas je imao dugačak niz uslova. Ako ih premestimo u funkciju koja vraća naziv strane sveta, glavni deo programa postaje kratak i čitljiv:
function stranaSveta (ugao: number): string {
if (ugao < 45 || ugao >= 315) {
return "S" // sever
} else if (ugao < 135) {
return "I" // istok
} else if (ugao < 225) {
return "J" // jug
}
return "Z" // zapad
}
basic.forever(function () {
basic.showString(stranaSveta(input.compassHeading()))
})
Funkciju stranaSveta lako je proveriti i bez kompasa: stranaSveta(90) mora da vrati „I“, a stranaSveta(200) „J“.
Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.
Napiši funkciju prosek(a, b, c) koja vraća prosek tri broja (deljenje sa 3). Pritiskom na A prikaži prosek brojeva 4, 8 i 9.
7Napiši funkciju jeParan(n) koja vraća true ako je broj paran. Na tresenje izaberi slučajan broj od 1 do 20, prikaži ga, pa prikaži „P“ za paran ili „N“ za neparan.
npr. 14, pa PNapiši funkciju linija(red) koja upali svih 5 lampica u zadatom redu. Pritiskom na A ekran se puni red po red odozdo nagore, a pritiskom na B briše.
posle A: svetli ceo ekran (redovi 4, 3, 2, 1, 0)trepni, stranaSveta, a ne f1.1. Čemu služe funkcije?
2. Kako se funkcija trepni izvršava?
3. Šta je parametar?
4. Šta vraća veci(3, 8) iz lekcije?