Nizovi na micro:bit-u: liste brojeva i reči u MakeCode-u

Lekcija 9 od 14 · micro:bit

Promenljiva č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.

Pre nego što počneš: potrebno predznanje – petlje, promenljive i paleta Math.
Kako da učiš: svaki primer složi u MakeCode-u i isprobaj u simulatoru (ili na uređaju), a zadatke na kraju prvo reši sam/a; uputstvo i rešenje otvori tek posle toga. Programi su dati blokovima (opis) i u JavaScript-u iz MakeCode-a: u editoru klikni na JavaScript, nalepi kod i vrati se na Blocks – dobićeš iste blokove.

Pravljenje niza i indeksi

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.

Niz ocene
Indeks0123
Vrednost5453

Element se menja kao obična promenljiva: ocene[1] = 5 (blok set value at).

Dodavanje i uklanjanje elemenata

BlokJavaScriptŠta radi
add value to endlista.push(x)dodaje x na kraj niza
get and remove last valuelista.pop()uklanja poslednji element i vraća ga
remove value atlista.removeAt(i)uklanja element sa indeksom i
find index oflista.indexOf(x)indeks prvog pojavljivanja x (−1 ako ga nema)
length of arraylista.lengthbroj 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
})

Prolazak kroz niz petljom

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 reči: magična kugla

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“.

Zadaci za vežbu

Za svaki zadatak postoji primer, uputstvo i rešenje. Rešenja su provereno tačna na primerima iz teksta.

ZADATAK 01Težina: srednje

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 vrednost
ZADATAK 02Težina: lako

Prosek ocena

U nizu su ocene iz jednog predmeta: 5, 4, 4, 3, 5. Pritiskom na A prikaži prosek, zaokružen na ceo broj.

Primer

Izlaz

4
ZADATAK 03Težina: teško

Ponovi melodiju

Igra 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.

Primer

Izlaz

posle A+B: strelice ←, →, →, ←; igrač pritisne A, B, B, A → srećno lice
Česte greške i saveti
  • Indeksi počinju od 0: poslednji element niza lista je lista[lista.length - 1].
  • U nizu u MakeCode-u svi elementi su istog tipa: ili brojevi, ili reči.
  • Pre traženja najveće vrednosti proveri da niz nije prazan.
  • Prazan niz brojeva u JavaScript-u piše se let a: number[] = [].

Proveri znanje

Otvori kviz

Nizovi

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?