MicroPython — slučajni brojevi i osnovni algoritmi
U mnogim igrama i projektima potrebno je da računar donosi nasumične odluke ili da obrađuje podatke po određenim pravilima. U ovoj lekciji naučićeš kako se u MicroPython-u koriste slučajni brojevi i kako izgledaju jednostavni algoritmi.
Slučajni brojevi (random)
MicroPython ima modul random koji omogućava generisanje
slučajnih brojeva. To se često koristi u igrama, simulacijama i mini-projektima.
import random
# generiše ceo broj između 1 i 6
broj = random.randint(1, 6)
print(broj)
Funkcija randint(a, b) vraća ceo broj između a i b, uključujući oba kraja.
Primer 1: bacanje kockice
from microbit import *
import random
while True:
# slučajan broj od 1 do 6
kocka = random.randint(1, 6)
display.show(kocka) # prikaži broj na LED matrici
sleep(1000) # sačekaj 1 sekundu pre sledećeg bacanja
Svake sekunde prikazuje se novi broj od 1 do 6 — kao bacanje kockice.
Primer 2: slučajna animacija srca i osmijeha
from microbit import *
import random
slike = [Image.HEART, Image.HAPPY, Image.SAD]
while True:
izbor = random.choice(slike) # bira nasumičnu sliku iz liste
display.show(izbor)
sleep(500)
random.choice(lista) bira slučajan element iz liste — zgodno za mini-igre i animacije.
Šta je algoritam?
Algoritam je tačan redosled koraka koji rešava neki problem. U programiranju to znači:
- uzmi podatke
- obradi ih po pravilima
- dobij rezultat
Primer jednostavnog algoritma
broj = 7
if broj > 5:
display.scroll("Vece od 5")
else:
display.scroll("Manje ili jednako 5")
Ovaj program proverava da li je broj veći od 5 i prikazuje poruku.
Rad sa listama i algoritmi
Liste (nizovi) se često koriste za čuvanje više vrednosti. Na njima možemo primenjivati algoritme.
brojevi = [3, 7, 2, 9, 5]
# pronalaženje najvećeg broja
najveci = brojevi[0]
for b in brojevi:
if b > najveci:
najveci = b
display.scroll(najveci)
Ovo je primer algoritma za pronalaženje maksimuma.
Primer: pronalaženje najmanjeg broja
najmanji = brojevi[0]
for b in brojevi:
if b < najmanji:
najmanji = b
display.scroll(najmanji)
Jednostavno sortiranje (ideja)
Sortiranje znači da brojeve poređamo od najmanjeg ka najvećem. U MicroPython-u često je dovoljno razumeti ideju, ne i savršenu efikasnost.
brojevi = [4, 1, 3, 2]
for i in range(len(brojevi)):
for j in range(i + 1, len(brojevi)):
if brojevi[j] < brojevi[i]:
brojevi[i], brojevi[j] = brojevi[j], brojevi[i]
display.scroll(brojevi[0]) # prikaži najmanji broj
Povezivanje sa prethodnim lekcijama
Ova lekcija se prirodno povezuje sa:
-
Kontrolne naredbe u Micro:bit programima — učiš kako koristiti
if/elsesa slučajnim brojevima i logikom. -
Petlje i Micro:bit — vežbaš
whileiforpetlje sa listama i random generisanjem.
Mini zadaci — vežba random i algoritama
Zadatak 1
Napravi program koji prikazuje slučajan broj od 1 do 10 na LED matrici svake sekunde.
Dodaj sleep() da animacija ne ide prebrzo.
Zadatak 2
Kreiraj listu sa 7 slučajnih brojeva (0–9) i napiši algoritam koji pronalazi najveći broj i prikazuje ga.
Zadatak 3
Napravi mini-igricu: - Pritisni dugme A da generišeš nasumičan broj od 1 do 6. - Pritisni dugme B da proveriš da li je broj veći od 3 i prikaže odgovarajuću sliku (HEART ili SAD).
Zadatak 4 (izazov)
Napravite program koji generiše 10 slučajnih brojeva, čuva ih u listu i izbroji koliko ih je veće od 5. Prikaži rezultat na LED matrici.
Zadatak 5 (napredni)
Napravite animaciju sa slučajnim izborom slika (HEART, HAPPY, SAD).
Svaki put kada se pritisne dugme A, promeni sliku na novu nasumičnu.
Kombinujte while True, if button_a.is_pressed() i random.choice().
Povezivanje sa kontrolnim naredbama i promenljivama
U MakeCode‑u si naučio/la kako promenljive i kontrolne naredbe (ako/onda) funkcionišu zajedno u projektima poput brojača klikova i mini igara.
Te primere i objašnjenja možeš pronaći na strani:
Upotreba promenljivih i kontrolnih naredbi u projektima micro:bit‑a
Na toj stranici ćeš videti praktične primere korišćenja promenljivih i kontrolnih naredbi u MakeCode okruženju — kao što su:
- brojač pritisaka tastera A
- kombinacija A, B i A+B za različite akcije
- aritmetičke operacije i vizuelni prikaz rezultata
5 primera u MicroPython‑u
Primer 1 — Brojač pritisaka
Brojač pritisaka tastera A: svaki pritisak povećava promenljivu i prikazuje je.
from microbit import *
broj_klikova = 0
while True:
if button_a.was_pressed(): # detektuje A pritisak
broj_klikova += 1 # povećava brojač
display.show(broj_klikova)
sleep(100)
Ovo je MicroPython ekvivalent MakeCode brojaču klikova iz palete Variables.
Primer 2 — Interaktivna računica brojeva
Pritisni A da generišeš nasumičan broj a, B da generišeš b, i A+B da prikažeš njihov proizvod.
from microbit import *
import random
a = 0
b = 0
while True:
if button_a.was_pressed():
a = random.randint(1,10)
display.show(a)
if button_b.was_pressed():
b = random.randint(1,10)
display.show(b)
if button_a.is_pressed() and button_b.is_pressed():
proizvod = a * b
display.show(proizvod)
sleep(100)
Ovo je Python verzija MakeCode primera sa proizvodom brojeva.
Primer 3 — Brojevi veći od srednje vrednosti
Generiši listu random brojeva i prikazuj koliko njih prelazi srednju vrednost liste.
from microbit import *
import random
while True:
lista = [random.randint(0,9) for _ in range(7)]
srednja = sum(lista) / len(lista)
count = 0
for n in lista:
if n > srednja:
count += 1
display.show(count)
sleep(2000)
Primer kombinuje random brojeve, liste, petlje i algoritamsku obradu podataka — sve teme koje se nadovezuju na MakeCode promenljive i Math.
Primer 4 — Sabiranje parova
Generiši par nasumičnih brojeva i prikaži njihov zbir kada se pritisne A+B.
from microbit import *
import random
x = random.randint(0,10)
y = random.randint(0,10)
while True:
if button_a.was_pressed():
display.show(x)
if button_b.was_pressed():
display.show(y)
if button_a.is_pressed() and button_b.is_pressed():
zbir = x + y
display.show(zbir)
sleep(100)
Vežbaš rad sa promenljivama i grananjem uslova — ekvivalent MakeCode sabiranju iz palete Math.
Primer 5 — Matematički izazov: kvadrat i linearna funkcija
Pritisni A da prikazuješ kvadrat nasumičnog broja, B da prikazuje linearnu funkciju (npr. 2n+1).
from microbit import *
import random
while True:
if button_a.was_pressed():
n = random.randint(0,9)
display.show(n * n) # kvadrat broja
if button_b.was_pressed():
m = random.randint(0,9)
display.show(2*m + 1) # linearna funkcija 2n+1
sleep(100)
Ovaj primer nadograđuje MakeCode matematičke operacije koristeći MicroPython aritmetiku.
Praktični zadaci — Random brojevi i algoritmi
U ovim zadacima vežbaćeš rad sa slučajnim brojevima, promenljivama i kontrolnim naredbama u MicroPython-u, uz poređenje sa MakeCode verzijom.
Zadatak 1 — Brojač nasumičnih klikova
Napravi brojač pritisaka dugmeta A, ali svaki pritisak dodaje nasumičan broj od 1 do 3 umesto 1.
from microbit import *
import random
brojac = 0
while True:
if button_a.was_pressed():
brojac += random.randint(1,3)
display.show(brojac)
sleep(100)
Razlika sa MakeCode: U MakeCode-u bi koristio promenljivu i blokove "change variable by random integer 1 to 3", a MicroPython koristi funkciju random.randint() i standardnu aritmetiku.
Zadatak 2 — Nasumična animacija
Kreiraj animaciju koja prikazuje nasumično izabranu ikonu (HEART, HAPPY, SAD) na LED matrici svake sekunde.
from microbit import *
import random
ikonice = [Image.HEART, Image.HAPPY, Image.SAD]
while True:
izbor = random.choice(ikonice)
display.show(izbor)
sleep(1000)
Razlika sa MakeCode: U MakeCode Python simuliraš "pick random" blok koji bira iz liste ikona, dok MicroPython koristi random.choice().
Zadatak 3 — Igra pogodaka
Prikaži nasumičan broj od 1 do 5. Ako korisnik pritisne dugme A, proveri da li je pogodio broj 3 i prikaži OK ili X.
from microbit import *
import random
while True:
broj = random.randint(1,5)
display.show(broj)
sleep(500)
if button_a.was_pressed():
if broj == 3:
display.show("OK")
else:
display.show("X")
sleep(500)
Razlika sa MakeCode: MakeCode koristi blokove "if then else" i promenljivu za nasumični broj, MicroPython koristi standardni if/else i random.randint().
Zadatak 4 — Sabiranje nasumičnih brojeva
Svaki pritisak dugmeta B generiše novi nasumični broj 0-9. Pritisak dugmeta A prikazuje zbir svih do sada generisanih brojeva.
from microbit import *
import random
suma = 0
while True:
if button_b.was_pressed():
n = random.randint(0,9)
suma += n
display.show(n)
if button_a.was_pressed():
display.scroll(suma)
sleep(100)
Razlika sa MakeCode: U MakeCode-u koristiš promenljivu "suma" i blokove "change variable by random integer" i "show number"; u MicroPython-u koristiš promenljivu i += operator.
Zadatak 5 — Mini brojačka igra sa granicom
Generiši 10 nasumičnih brojeva 1-6 i prikaži koliko ih je veće od 3. Pritisak dugmeta A prikazuje rezultat.
from microbit import *
import random
lista = [random.randint(1,6) for _ in range(10)]
while True:
if button_a.was_pressed():
count = 0
for n in lista:
if n > 3:
count += 1
display.scroll(count)
sleep(100)
Razlika sa MakeCode: MakeCode koristi "for each item in list" blok, "if then" i promenljive; MicroPython koristi standardnu for petlju i if uslov.