KONTROLNE NAREDBE U PROJEKTIMA MIKROBITA. GRANANJE U PROGRAMU

Do sada smo u tutorijalima za Micro:bit uređaj koristili linijske naredbe, koje se izvršavaju jedna za drugom u određenom redosledu. Međutim, u programiranju često postoji potreba da program može da bira između dva ili više mogućih pravaca izvršavanja, zavisno od određenih uslova. Ova situacija se naziva grananje u programu.
Grananje omogućava programu da se "razgrana" na osnovu postavljenih logičkih uslova. Na primer, ako je neki uslov tačan, program može izvršiti jedan niz naredbi; u suprotnom, izvršiće drugi niz.
Kontrolne naredbe su ključne za pravljenje ovakvih odluka i omogućavaju fleksibilnije i složenije tokove u programima. Ove naredbe definišu kako će program "kontrolisati" tok svog izvršavanja.
Algoritamski, grananje u programu može se prikazati pomoću dijagrama toka. Na sledećoj slici prikazan je osnovni princip grananja:
Programiranje mikrobita: Grananje u programu sa 2 grane - algoritam
Slika 1: Programiranje mikrobita: Grananje u programu sa 2 grane - algoritam

Primer 1: Merenje temperature na mikrobitu

Napravite program na Micro:bit uređaju koji reaguje na trenutnu temperaturu u prostoriji. Program treba da proverava vrednost temperature i na osnovu nje prikazuje odgovarajući simbol na ekranu:
Ovaj zadatak koristi naredbe za grananje kako bi odlučio koji simbol da prikaže na osnovu uslova.

Rešenje: 

  1. Otvorite Microsoft MakeCode editor.
  2. Dodajte blokove iz kategorije Input za čitanje trenutne temperature sa ugrađenog senzora Micro:bit uređaja.
  3. Koristite blok iz kategorije Logic kako biste kreirali uslovnu naredbu (if-else). U njoj proverite da li je temperatura veća ili jednaka 25°C.
  4. U delu "if" dodajte blok iz kategorije Basic koji prikazuje simbol strelice nagore (↑).
  5. U delu "else" dodajte blok koji prikazuje simbol strelice nadole (↓).
  6. Preuzmite kôd na Micro:bit i testirajte program u stvarnim uslovima.

Video-rešenje

Grananje u programu sa 3 i više grana

U dosadašnjem izlaganju je bilo prikazano grananje u programu na dve grane, kada je tok programa podeljen u dva moguća toka izvršavanja, a gde se grananje vršilo pomoću uslova, tj. logičkog izraza koji ima dve moguće vrednosti: tačno(true) ili netačno(false). 
Postoje zadaci gde je umesto grananja na dve grane potrebno granati na 3, a nekad i više grana. Za ovo grananje nije dovoljan jedan uslov, već se to može uraditi sa dva ili 3 uslova, kako je prikazano na slici 2. Svaki uslov određuje po dve nove grane(toka) što se može videti na slici.Programiranje mikrobita: Grananje u programu sa 3 i više grana - algoritam
Slika 2: Programiranje mikrobita: Grananje u programu sa 3 i više grana - algoritam

Primer 2a: Anketiranje omiljenih predmeta uz micro:bit

Napraviti program za mikrobit koji omogućava anketiranje jednog korisnika. Korisnik treba da glasa za svoj omiljeni predmet. 
U primeru je dat primer za dva predmeta: matematika i geografija. Korisniku treba omogućiti da  na mikrobitu može da klikne na 3 tastera:Video ispod pokazuje upotrebu naredbi sa Logic paleta na platformi Makecode. Primer koji je opisan i prikazan u videu pokazuje program za anketiranje korisnika, sa pitanjem: Koji je Vaš omiljeni predmet u školi?

U ovom primeru 3 varijante izvršenja programa dobijamo na osnovu 3 mogućnosti:U priloženom(prethodnom) videu je objašnjeno rešavanje kompletnog zadatka, a u nastavku je data izmenjena varijanta zadatka(vidi zadatak 2b u nastavku!)Programiranje mikrobita: Grananje u programu sa 3 i više grana - algoritam na primeru
Slika 3: Programiranje mikrobita: Grananje u programu sa 3 i više grana - algoritam na primeru "Anketiranje omiljenog predmeta"

​Primer 2b: Anketiranje omiljenih predmeta uz micro:bit sa prikazom rezultata ankete

Ovaj primer demonstrira kako koristiti micro:bit za sprovođenje ankete o omiljenim školskim predmetima. Cilj je prikupljanje glasova i prikazivanje rezultata koristeći funkcionalnost grananja i tastera na micro:bit uređaju.
Opis zadatkaProgram treba da omogući korisnicima da glasaju za jedan od dva ponuđena predmeta:
Po završetku glasanja, micro:bit će analizirati prikupljene glasove i prikazati koji predmet je osvojio više glasova.

Instrukcije za rešavanje

  1. Priprema promenljivih
    Na početku programa definišite dve promenljive koje će brojati glasove za svaki predmet, npr. matematika i istorija.
  2. Brojanje glasova
    U okviru glavnog petlje programa koristite funkcije koje reaguju na pritiske tastera:
    • Kada se pritisne taster A, povećajte vrednost promenljive matematika za 1.
    • Kada se pritisne taster B, povećajte vrednost promenljive istorija za 1.
  3. Prikaz rezultata
    Nakon što svi korisnici završe glasanje, pritisnite taster A+B istovremeno kako biste prikazali rezultat:
    • Ako je matematika > istorija, prikažite poruku "Matematika pobedila!".
    • Ako je istorija > matematika, prikažite poruku "Istorija pobedila!".
    • Ako su glasovi izjednačeni, prikažite poruku "Nerešeno!".

Rešenje u javascript-u

let matematika = 0
let istorija = 0

// Brojanje glasova za Matematiku
input.onButtonPressed(Button.A, function () {
    matematika += 1
})

// Brojanje glasova za Istoriju
input.onButtonPressed(Button.B, function () {
    istorija += 1
})

// Prikaz rezultata
input.onButtonPressed(Button.AB, function () {
if (matematika > istorija) {
        basic.showString("Matematika pobedila!")
    } else if (istorija > matematika) {
        basic.showString("Istorija pobedila!")
    } else {
        basic.showString("Nereseno!")
    }
})

Objašnjenje

Testiranje

Logic paleta

Programiranje mikrobita: Logic paleta sa opisima komandi
Slika 4: Programiranje mikrobita: Logic paleta sa opisima komandi

Primeri upotrebe komandi sa palete Logic

  1. if...then ( Izvršava blok naredbi unutar if dela ako je postavljeni uslov istinit.)
Primer : Ako je temperatura veća od 25°C, prikaži ikonicu za sunce.2. if...then...else(Proverava uslov i izvršava blok naredbi u if delu ako je uslov istinit, ili u else delu ako je uslov lažan.)
Primer: Ako je pritisnut taster A, prikaži "A", inače prikaži "B".
3. Boolean vrednosti (true/false)(Omogućava postavljanje logičkih vrednosti true za tačno i false za netačno.)
Primer: Promenljiva stanje određuje da li se prikazuje tekst "DA".
4. == (jednako)(Poredi dve vrednosti i vraća true ako su jednake, inače false.)
Primer: Ako je trenutna temperatura jednaka 20°C, prikaži "20C".
5. != (nije jednako)(Poredi dve vrednosti i vraća true ako nisu jednake, inače false.)
Primer: Ako trenutna temperatura nije 20°C, prikaži "Nije 20".
6. < (manje od)(Proverava da li je prva vrednost manja od druge.)
Primer: Ako je temperatura manja od 15°C, prikaži ikonu snega.
7. > (veće od)(Proverava da li je prva vrednost veća od druge.)
Primer: Ako je broj okreta veći od 10, prikaži "Gotovo".
8. <= (manje ili jednako)(Proverava da li je prva vrednost manja ili jednaka drugoj.)
Primer: Ako je broj okreta manji ili jednak 5, prikaži "U redu".
​
9. >= (veće ili jednako)(Proverava da li je prva vrednost veća ili jednaka drugoj.)
Primer: Ako je broj koraka veći ili jednak 100, prikaži "Cilj postignut".
10. && (logičko AND)(Vraća true ako su oba izraza istinita, inače false.)
Primer: Ako je temperatura veća od 20°C i manja od 30°C, prikaži "Idealno".

11. || (logičko OR)(Vraća true ako je bilo koji od izraza istinit, inače false.)
Primer: Ako je pritisnut taster A ili taster B, prikaži "Klik".
12. not (logičko NOT)(Inverzuje logičku vrednost; true postaje false i obrnuto.)
Primer: Ako nije pritisnut taster A, prikaži "Nema pritiska".

Projekat za samostalan rad: Anketiranje omiljenih predmeta uz micro:bit i radio vezu

U ovom projektu kreiraćemo sistem za anketiranje omiljenih predmeta pomoću više micro:bit uređaja. Dva micro:bit-a će se koristiti kao uređaji za glasanje (senderi), a jedan micro:bit će biti prijemnik koji prikuplja i prikazuje rezultate ankete. Glasovi se šalju putem radio veze, pri čemu svaki uređaj za glasanje predstavlja jedan predmet.Koraci za realizaciju
  1. Konfigurisanje radio veze:
    Svi micro:bit uređaji moraju biti postavljeni na istu radio grupu kako bi mogli međusobno da komuniciraju.
  2. Sender za Matematiku:
    Ovaj micro:bit šalje poruku "Matematika" prijemniku svaki put kada učenik pritisne taster A.
  3. Sender za Istoriju:
    Ovaj micro:bit šalje poruku "Istorija" prijemniku svaki put kada učenik pritisne taster B.
  4. Prijemnik:
    Prijemnik prima poruke sa oba sendera, broji glasove za svaki predmet i prikazuje rezultate na ekranu.
Mogućnosti proširenja

Složeni uslovi

Složeni uslovi su korisni kada želimo da kombinujući dva ili više prosta uslova odredimo složen kriterijum koji mora biti ispunjen. Na mikrobitu možemo koristiti logičke operatore AND (i), OR (ili) i NOT (ne) da bismo napravili takve kombinacije.
Na primer, ako želimo da odredimo da li je ugao u prvom kvadrantu, možemo postaviti dva uslova:
  1. Ugao je veći od 0 stepeni.
  2. Ugao je manji od 90 stepeni.
Kombinovanjem ova dva uslova pomoću operatora AND, možemo proveriti da li su oba istinita u isto vreme:
Programiranje mikrobita: Logic paleta i primena složenog uslova sa AND
Slika 5: Programiranje mikrobita: Logic paleta i primena složenog uslova sa AND

Cod u python-u

if ugao > 0 and ugao < 90:
    basic.show_string("1Q")  # Prikazuje "1Q" ako je ugao u prvom kvadrantu.
Ovde uslov ugao > 0 and ugao < 90 garantuje da će se kôd izvršiti samo kada oba uslova važe. Ako jedan od uslova nije ispunjen, rezultat složenog uslova biće False (neistinito), i mikrobit neće prikazati "1Q".

Logičko "ili"

S druge strane možemo posmatrati zahtev za proveru da ugao nije u prvom kvadrantu, tj. da je ugao manji od nule ili ugao veći od 90. Kod bi bio kao na slici ispod:Programiranje mikrobita: Logic paleta i primena složenog uslova sa OR
Slika 6: Programiranje mikrobita: Logic paleta i primena složenog uslova sa OR
ili u python-uif ugao <= 0 or ugao >= 90:
    basic.show_string("Nije u prvom kvadrantu(1Q)")

Logika složenih uslova

Složeni uslovi se koriste za donošenje odluka na osnovu više kriterijuma istovremeno. Oni kombinuju dva ili više prostih uslova koristeći logičke operatore poput "i" (AND) i "ili" (OR).
Konkretan svakodnevni primer: Kupovina karte za bioskopZamislite da želite da odete u bioskop i pravilo je da možete kupiti kartu ako ispunjavate jedan od sledećih uslova:
  1. Imate člansku kartu za bioskop.
  2. Imate popust za studente.
Ovo pravilo može biti napisano kao složeni uslov:
U pseudokodu:
if (clanska_karta == true OR popust_za_studente == true):
prikaži "Možete kupiti kartu"
else:
prikaži "Nemate pravo na kupovinu karte"
Ako imate člansku kartu, rezultat će biti tačan i možete kupiti kartu, bez obzira na popust za studente. Slično, ako imate popust za studente, rezultat će opet biti tačan.Drugi primer: Bezbednosna proveraNa ulazu u neku zgradu, potrebna su dva uslova za ulazak:
  1. Da imate identifikacionu karticu.
  2. Da ste upisani na spisak posetilaca.
Ovo bi bio uslov sa logičkim "i" (AND):
if (ima_karticu == true AND na_spisku == true):
prikaži "Pristup dozvoljen"
else:
prikaži "Pristup odbijen"
Ako vam nedostaje bilo koji od uslova (kartica ili spisak), neće vam biti dozvoljen ulazak.Zaključak
Ovi primeri pokazuju kako logički operatori "i" i "ili" funkcionišu u stvarnom životu, čineći ih lakšim za razumevanje. Oni se koriste za donošenje odluka na osnovu višestrukih kriterijuma, čime postaju ključni u programiranju i svakodnevnim situacijama.

Kompas

Kompas na micro:bit uređaju je senzor koji omogućava da uređaj detektuje pravac u kojem je okrenut u odnosu na magnetni sever. Ovaj senzor je u osnovi magnetometar koji meri jačinu i smer magnetnog polja. Kompas na micro:bitu se koristi za aplikacije kao što su praćenje pravca, navigacija i orijentacija u prostoru.Čemu služi kalibracija kompasa?Kalibracija kompasa je proces podešavanja senzora kako bi precizno merio magnetne sile. Ovo je potrebno jer se magnetometar može ometati lokalnim magnetnim poljima ili metalnim predmetima u blizini.
Kalibracija se obično pokreće na micro:bitu kada je senzor prvi put aktiviran ili ako se otkrije nepreciznost. Tokom kalibracije, micro:bit traži od korisnika da naginje uređaj u različitim pravcima kako bi se merenja optimizovala za tačno očitavanje u svim orijentacijama. Na ekranu micro:bita se obično pojavljuje animacija ili poruka koja vodi korisnika kroz proces.
Kada koristiti kalibraciju?Primeri primene kompasa na micro:bitu:
  1. Navigacija: Pravljenje programa koji pokazuje strelicu prema severu.
  2. Igre i eksperimenti: Korišćenje kompasa za detekciju rotacija i pravaca u igrama.
  3. Praćenje pravca: Kreiranje aplikacija koje reaguju na promene orijentacije.

Primer 3: Određivanje strana sveta pomoću kompasa

Napravite program za micro:bit koji koristi ugrađeni kompas za merenje pravca i prikazuje odgovarajuće strane sveta. Na osnovu izmerenog pravca: Kompas se mora prvo kalibrisati da bi mogao da očitava pravac precizno.Instrukcije za rešavanje:
  1. Postavljanje osnovnog okruženja:
    • Pokrenite micro:bit editor (npr. MakeCode).
    • Kreirajte novi projekat.
  2. Kalibracija kompasa:
    • Koristite funkciju input.calibrate_compass() u Pythonu (ili odgovarajuću opciju u blokovima MakeCode).
    • Kada program pokrene kalibraciju, pomerajte micro:bit u svim pravcima dok se kalibracija ne završi.
  3. Logika za očitavanje pravca:
    • Koristite funkciju input.compass_heading() da biste dobili vrednost pravca u stepenima.
    • Dodajte uslove za prikaz teksta "S", "I", "J" ili "Z" na osnovu očitanog pravca.
  4. Prikaz teksta:
    • Prikazujte tekst na ekranu micro:bita pomoću funkcije basic.show_string() ili odgovarajuće opcije u blokovima.

Rešenje

Šta je azimut i kako se određuje na Micro:bitu?

Azimut je ugao između severnog pravca na horizontu i pravca prema nekoj tački, meren u smeru kazaljke na satu od 0° do 360°. Ova vrednost se koristi za određivanje orijentacije u prostoru i uobičajena je u navigaciji, astronomiji, geografiji i vojnim primenama.

Na BBC Micro:bitu, azimut se određuje pomoću ugrađenog magnetometra (kompasa), koji meri zemljino magnetno polje. Na osnovu tih merenja, Micro:bit može da odredi pravac u odnosu na sever. Proces uključuje sledeće korake:

  • Kalibracija kompasa: Pre nego što Micro:bit počne da meri azimut, potrebno je kalibrisati magnetometar. Tokom kalibracije, korisniku se prikazuju animacije na LED ekranu, a uređaj treba rotirati u svim pravcima kako bi se registrovale sve magnetne sile i eliminisali lokalni magnetni poremećaji.
  • Merenje ugla: Nakon kalibracije, Micro:bit može da meri azimut prema trenutnom položaju uređaja. Ugrađeni kod funkcije compass.heading() vraća vrednost ugla između pravca uređaja i magnetnog severa.
  • Prikaz rezultata: Na osnovu izračunatog ugla, azimut može biti prikazan na LED ekranu, ili se može koristiti za dalje proračune, kao što je identifikacija strane sveta (npr. sever, istok, jug, zapad).
  • Micro:bit olakšava učenje o azimutu kroz jednostavne programske okvire, omogućavajući učenicima i korisnicima da eksperimentišu s konceptom geografskih orijentacija na praktičan način.
Rešenje zadatka je prikazano na slici ispod:Programiranje mikrobita: Zadatak- prikaz strana sveta pomoću kompasa-rešenje
Slika 7: Programiranje mikrobita: Zadatak- prikaz strana sveta pomoću kompasa-rešenje
Kompletno objašnjenje zadatka pogledaj u narednom videu:

Dodatni primeri za samostalan rad

1. Prikaz kvadranta


Zadatak: Napravite program koji prikazuje u kojem se kvadrantu nalazi trenutni ugao očitan na kompasu (prvi, drugi, treći, četvrti). Na ekranu treba da se prikaže broj kvadranta (1, 2, 3 ili 4).
Instrukcije:

2. Upoređivanje azimuta

2. Upoređivanje azimuta
Zadatak: Proverite da li je kompas usmeren prema severu (azimut manji od 45° ili veći od 315°) i prikažite „✔“ ako jeste, ili „✘“ ako nije.
Instrukcije:

3. Indikator skretanja


Zadatak: Programirajte Micro:bit da prikazuje strelicu udesno ako je ugao između 90° i 180°, a ulevo ako je između 180° i 270°.
Instrukcije:

4. Slanje azimuta preko radio veze


Zadatak: Napravite program na dva Micro:bit-a. Prvi očitava azimut i šalje ga preko radio veze, dok drugi prikazuje azimut na ekranu.
Instrukcije:

5. Indikator blizine cilja

5. Indikator blizine cilja
Zadatak: Programirajte Micro:bit da proverava da li je ugao manji od 10° od željenog smera (npr. severa). Ako jeste, neka prikaže ikonicu „cilj“, u suprotnom neka prikazuje strelicu prema potrebnom skretanju.
Instrukcije:

6. Digitalni navigator (napredno)

6. Digitalni navigator (napredno)
Zadatak: Programirajte dva Micro:bit-a za simulaciju navigacije. Prvi je "ciljni uređaj" koji periodično šalje svoj azimut preko radio veze, dok drugi daje instrukcije (levo, desno, pravo) da se usmeri ka cilju.
Instrukcije: