Ako ste nakon prvog dodira s programiranjem BBC računala shvatili da vam se to u stvari prilično dopada, možda je došao trenutak da napravite korak dalje, odnosno da pročitate i ovaj tekst. U njemu se piše o programiranju na malo kompliciraniji način od običnog premještanja blokova naredbi pomoću miša, kao što je to bio slučaj kod JavaScript alata opisanog u prethodnom tekstu. Sigurno kompliciranije (ipak pišete Python naredbe), ali zato u konačnici možete garantirano postići više toga. A istovremeno radite korak bliže prema pravim programerima.
Programski jezik koji se nalazi u pozadini „ozbiljnog programiranja“ za BBC naziva se Python, to jest njegova posebna ponešto reducirana verzija pod nazivom MicroPython. Na ovom mjestu nećemo previše raspravljati o tome što je uopće Python i zašto je baš on izabran, a ne neki drugi jezik nego ćemo jednostavno napraviti uvod u njegovo korištenje.
Mjesto na kojem počinje priča o programiranja u Pythonu isto je kao i u slučaju JavaScripta (www.microbitworld.me). Sve što treba napraviti drugačije u odnosu na prethodni postupak je odabir drugačije vrste skripte za svoj projekt – MicroPython.
Kao rezultat izvođenja prethodne operacije otvara se drugačije razvojno sučelje nego što je to bio slučaj kod vizualnog programiranja s blokovima JavaScript koda. Umjesto toga u pregledniku se otvara u najvećoj mogućoj mjeri pojednostavljeni program za uređivanje teksta odnosno u ovom slučaju izvornog koda Python programa.
MICROPYTHON Početno mjesto za razvoj je isto kao i za Javascript.
NOVI PROJEKT Treba izabrati pisanje skripte u MicroPythonu
Odmah nakon kreiranja novog projekta taj prostor je popunjen prvim programskim primjerom – dobro poznatim „Hello World“ slučajem. Tako da ne treba brinuti o njegovoj pripremi u svrhu otkrivanja novog razvojnog sustava. Početni primjer ima sljedeći oblik:
# Add your Python code here. E.g.
from microbit import *
while True:
display.scroll(‘Hello, World!’)
display.show(Image.HEART)
sleep(2000)
Ako se do sada niste sretali s programima napisanim u Pythonu, onda je ovo pravo mjesto da objasnimo jednu od njegovih ključnih osobina vezanih uz samo pisanje koda – strogu pravilnost u strukturiranju (uvlačenju) programskog koda, kako bi se definirale različite strukture u kodu. To je prilično velika razlika u odnosu na neke druge programske jezike gdje se početak i kraj strukture označava posebnim znakovima. Recimo u C-olikim jezicima pomoću znakova vitičastih zagrada. Na primjer, u C-u je uobičajeno da korištenjem navedenih znakova napišemo nešto kao:
if (x == 1) {
printf(“Ovo je broj 1\n”);
} else {
printf(“Ovo nije broj 1\n”);
}
Međutim, ništa nas ne sprječava da istu stvar napišemo i ovako:
if (x == 1) {printf(“Ovo je broj 1\n”);}
else {printf(“Ovo nije broj 1\n”);}
Sa stanovišta programskog jezika C to je još uvijek potpuno ispravan program, jer vitičaste zagrade precizno određuju početak i kraj struktura u kodu, ali sa stanovišta čitljivosti od strane čovjeka nije ni izbliza tako pregledan kao prvi primjer.
Kod Pythona nema nikakvih posebnih znakova za obilježavanje struktura nego se to izvodi različitim uvlačenjem dijelova koda. Tako programer ne može ni pisati vlastiti programski kod drugačije nego je dozvoljeno. Vrlo zgodna karakteristika za povećanje preglednosti i razumijevanja koda. Pogotovo za programere početnike. Možda na početku (pogotovo, ako ste ranije koristili neki drugi programski jezik) izgleda malo zbunjujuće, ali se čovjek brzo privikne.
Razvojna okolina za MicroPython u okviru standardnog preglednika sadrži svega nekoliko osnovnih mogućnosti, kao što je povećanje i smanjivanje veličine znakova na prikazu, spremanje koda za kasnije korištenje ili „Download“ programa u sam hardverski uređaj. Riječ je o pripremi izvršnog oblika datoteke iz izvornog MicroPython koda namijenjenoj izvođenju u samom uređaju. Više detalja o prijenosu izvršne datoteke u uređaj možete pronaći u tekst o hardveru BBC računala.
Posebno je zanimljiva i na samom početku vjerojatno vrlo korištena opcija Snippets. Nakon njezinog odabira otvara se poseban dijaloški okvir u kojem se mogu izabrati najčešće MicroPython jezične konstrukcije. Izabrana konstrukcija prenosi se u dio za pisanje koda, nakon čega programeru preostaje samo popunjavanje specifičnih dijelova programskog koda. Možda nije tako elegantno kao vizualno orijentirano premještanje blokova kao kod JavaScript programiranja za BBC, ali je svakako jednostavnije nego pisati sve potrebne programske konstrukcije iz glave.
Osim osnovnih programskih konstrukcija karakterističnih za neki programski jezik poput petlji i slično, za programiranje su jako bitne i funkcije koje programer može pozvati iz dodatnih biblioteka funkcija. U odnosu na standardnu implementaciju biblioteka za Python, u MicroPythonu postoji nekoliko razlika. Dio biblioteka je smanjen u količini podržanih funkcija, a dio biblioteka je posebno razvijen kako bi se podržao poseban hardver dostupan samo u BBC računalu. Na primjer LED ekran – teško da ijedna druga implementacija Pythona ima posla s nečim sličnim tijekom programiranja. Dodatne biblioteke s funkcijama uključuju se na početku programa pomoću import.
Slijedi nekoliko karakterističnih primjera kraćih programa u Pythonu, koji koriste različite mogućnosti BBC računala.
Osnovni primjer s početka teksta („Hello World“) pokazuje kako se na LED ekranu prikazuje tekst, odnosno neki drugi uzorak slike u dostupnoj matrici 5 x 5 LED dioda. Primjer u nastavku pokazuje kako programer može definirati veći broj vlastitih uzoraka za prikaz na LED ekranu. U konkretnom slučaju definirano je pet različitih uzoraka slika, a tijekom izvođenja programa one se prikazuju redom uz kratko vrijeme čekanja između slika.
Osnovni primjer s početka teksta („Hello World“) pokazuje kako se na LED ekranu prikazuje tekst odnosno neki drugi uzorak slike u dostupnoj matrici 5 x 5 LED dioda. Primjer u nastavku pokazuje kako programer može definirati veći broj vlastitih uzoraka za prikaz na LED ekranu.
boat1 = Image(“05050:”
“05050:”
“05050:”
“99999:”
“09990”)
boat2 = Image(“00000:”
“05050:”
“05050:”
“05050:”
“99999”)
boat3 = Image(“00000:”
“00000:”
“05050:”
“05050:”
“05050”)
boat4 = Image(“00000:”
“00000:”
“00000:”
“05050:”
“05050”)
boat5 = Image(“00000:”
“00000:”
“00000:”
“00000:”
“05050”)
boat6 = Image(“00000:”
“00000:”
“00000:”
“00000:”
“00000”)
all_boats = [boat1, boat2, boat3, boat4, boat5, boat6]
display.show(all_boats, delay=200)
Za razliku od prethodnog primjera namijenjenog demonstraciji korištenja izlazne jedinice BBC uređaja, drugi primjer pokazuje kako se može provjeravati stanje ulaznih uređaja. U ovom slučaju to su dva gumba na istoj strani gdje je i ekran.
import microbit
while True:
if microbit.button_a.is_pressed() and microbit.button_b.is_pressed():
microbit.display.scroll(“AB”)
break
elif microbit.button_a.is_pressed():
microbit.display.scroll(“A”)
elif microbit.button_b.is_pressed():
microbit.display.scroll(“B”)
microbit.sleep(100)
Prethodni kod provjerava koji je od gumba pritisnut od strane korisnika. To uključuje i mogućnost istovremenog pritiska oba gumba uslijed čega dolazi do prekida izvođenja programa. Ako sad povežete programski kod iz oba primjera u jedan složeniji primjer – na primjer, tako da korisnik ovisno o prikazanoj slici treba pritisnuti točno određeni gumb, već ste dobili kostur potencijalne igre ili nekakve provjere znanja korisnika!
Zamjena pritiska na gumbe s nešto drugačijim korisničkim sučeljem oblikovanim prema najmodernijim standardima može se zasnivati na podacima koje priprema ugrađeni akcelerometar. Na primjer, korisnikov odabir neke operacije mogao bi biti pomak uređaja u lijevu ili desnu stranu. Nešto kao:
from microbit import *
while True:
reading = accelerometer.get_x()
if reading > 20:
display.show(“R”)
elif reading < -20:
display.show(“L”)
else:
display.show(“-”)
Vrlo često je potrebno da program zapiše određene podatke za naknadno korištenje. Bez obzira na svoju jednostavnost, BBC uređaj u kombinaciji s MicroPython programskim kodom može izvoditi pisanje sadržaja u datoteke te njihovo naknadno čitanje. To bi imalo otprilike sljedeći oblik:
# zapis podataka
with open(‘hello.txt’, ‘w’) as my_file:
my_file.write(“Hello, World!”)
# čitanje podataka
with open(‘hello.txt’) as my_file:
content = my_file.read()
print(content)
Zadnji primjer ujedno pokazuje na koji način se u MicroPythonu označavaju komentari – jednostavno se na početak reda postavi znak #.
UKLJUČENI SNIPPET Za osnovnu petlju - treba samo dodati prave vrijednosti za raspon petlje
U osnovnoj pratećoj dokumentaciji koja prati web orijentiranu razvojnu okolinu može se pronaći čitav niz dodatnih jednostavnih primjera za dodatno isprobavanje i učenje programskog jezika. Osim toga dostupan je veći broj nezavisnih izvora s primjerima programa. Kao jedan od vrlo dobrih izvora spomenut ćemo web adresu https://github.com/mithru/MicroPython-Examples Tu se mogu pronaći primjeri zbilja različitog stupnja složenosti – od onih najosnovnijih pa sve do primjera koji zahtijevaju povezivanje dodatnih hardverskih komponenti na BBC uređaj.
BROJNI DODATNI PRIMJERI: Mogu se pronaći na web adresi https://github.com/mithru/MicroPython-Examples
Nadamo se da su vam tekstovi iz priloga pomogli da steknete dojam što je BBC micro:bit računalo, čemu je namijenjeno te najvažnije da znate kako ga početi programirati čim dobijete priliku da ga uhvatite u ruke.