Najtopliji trenutak
Dugme A meri temperaturu i čuva je u nizu. Dugme B prikazuje najveću, a dugmad A+B najmanju sačuvanu temperaturu. Ako je niz prazan, B i A+B prikazuju znak X.
Primer
Izlaz
A, A, A → B prikazuje najveću izmerenu vrednostPromenljiva čuva jednu vrednost. Kada treba zapamtiti više vrednosti – pet merenja temperature, spisak odgovora, melodiju od deset tonova – koristimo niz (engl. array, u MakeCode-u paleta Arrays). Niz je lista vrednosti pod jednim imenom; svaka vrednost ima svoj redni broj – indeks.
Niz se pravi blokom set lista to array of … iz palete Arrays (nalazi se pod Advanced). U JavaScript-u vrednosti pišemo u uglaste zagrade:
let ocene = [5, 4, 5, 3]
basic.showNumber(ocene.length) // dužina niza: 4
basic.showNumber(ocene[0]) // prvi element: 5
basic.showNumber(ocene[3]) // poslednji element: 3
Važno: indeksi počinju od 0. Niz od 4 elementa ima indekse 0, 1, 2 i 3. Element sa indeksom 4 ne postoji.
| Indeks | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| Vrednost | 5 | 4 | 5 | 3 |
Element se menja kao obična promenljiva: ocene[1] = 5 (blok set value at).
| Blok | JavaScript | Šta radi |
|---|---|---|
| add value to end | lista.push(x) | dodaje x na kraj niza |
| get and remove last value | lista.pop() | uklanja poslednji element i vraća ga |
| remove value at | lista.removeAt(i) | uklanja element sa indeksom i |
| find index of | lista.indexOf(x) | indeks prvog pojavljivanja x (−1 ako ga nema) |
| length of array | lista.length | broj elemenata |
Primer: dugme A meri temperaturu i dodaje je u niz; dugme B prikazuje koliko je merenja sačuvano.
let merenja: number[] = [] // prazan niz brojeva
input.onButtonPressed(Button.A, function () {
merenja.push(input.temperature()) // novo merenje na kraj niza
basic.showIcon(IconNames.Yes)
})
input.onButtonPressed(Button.B, function () {
basic.showNumber(merenja.length) // broj sačuvanih merenja
})
Petlja for element value of lista (paleta Loops) prolazi redom kroz sve elemente. Tako se lako računa zbir, prosek ili najveća vrednost:
let bodovi = [12, 7, 15, 9]
let zbir = 0
let najveci = bodovi[0]
for (let b of bodovi) {
zbir += b // sabiramo sve elemente
if (b > najveci) {
najveci = b // pamtimo najveći do sada
}
}
basic.showNumber(zbir) // 43
basic.showNumber(najveci) // 15
Ako nam treba i indeks, koristimo petlju for index from 0 to …. Pazi: krajnja vrednost je dužina − 1.
let tonovi = [262, 294, 330, 349, 392] // do, re, mi, fa, sol
for (let i = 0; i <= tonovi.length - 1; i++) {
led.plot(i, 2) // i-ta lampica u srednjem redu
music.playTone(tonovi[i], music.beat(BeatFraction.Half))
}
Niz može da sadrži i reči (stringove). Slučajan element biramo slučajnim indeksom od 0 do dužina − 1:
let odgovori = ["DA", "NE", "MOZDA", "PITAJ OPET"]
input.onGesture(Gesture.Shake, function () {
// slučajan indeks od 0 do 3
basic.showString(odgovori[randint(0, odgovori.length - 1)])
})
Ekran micro:bit-a ne prikazuje slova sa kvačicama, zato pišemo „MOZDA“ umesto „MOŽDA“.
Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.
Dugme A meri temperaturu i čuva je u nizu. Dugme B prikazuje najveću, a dugmad A+B najmanju sačuvanu temperaturu. Ako je niz prazan, B i A+B prikazuju znak X.
A, A, A → B prikazuje najveću izmerenu vrednostU nizu su ocene iz jednog predmeta: 5, 4, 4, 3, 5. Pritiskom na A prikaži prosek, zaokružen na ceo broj.
4Igra pamćenja: pritiskom na A+B micro:bit pokaže niz od 4 strelice (levo ili desno). Igrač ponavlja niz: dugme A za levo, dugme B za desno. Posle svakog pritiska micro:bit proverava odgovor: na grešku prikazuje tužno, a kada je ceo niz tačno ponovljen – srećno lice.
posle A+B: strelice ←, →, →, ←; igrač pritisne A, B, B, A → srećno licelista je lista[lista.length - 1].let a: number[] = [].1. Koji je indeks prvog elementa niza?
2. Niz je [8, 3, 6]. Koliko je lista[2]?
3. Šta radi lista.push(7)?
4. Kako se bira slučajan element niza odgovori?