Page 63 - MATINF Nr. 9-10
P. 63
Deprinderea elementelor fundamentale robotic˘ s , i de programare ˆın Python folosind robotul Finch 2.0 63
a
ˆ
a
fiecare element const˘ dintr-o cheie s , i o valoare. In loc s˘ se acceseze o valoare folosind indexul
a
a
s˘au (as , a cum s-a f˘acut cu listele), se acceseaz˘ o valoare plasˆand cheia ˆın interiorul parantezelor
a
a
p˘atrate. Cˆand se utilizeaz˘ un dict , ionar, adesea se dores , te verificarea faptului dac˘ o anumit˘
a
cheie se afl˘a ˆın dict , ionar, lucru ce se face folosind cuvˆantul cheie in.
exempluDictionar = {’c’:60, ’d’: 62, ’e’:64} #Dictionar cu 2 intr˘ari dictionarDirect , ie={’N’:60, ’NE’: 62, ’E’:64,
pasare.playNote(exempluDictionar[’e’],0.5) ’SE’: 65, ’S’: 67, ’SW’: 69, ’W’: 71, ’NW’: 72}
sleep(0.5) while not pasare.getButton(’A’):
nota = ’a’ direct , ieCurent˘a=direction()
if nota in exempluDictionar: if direct , ieCurent˘a in dict , ionarDirect , ie:
pasare.playNote(exempluDictionar[nota],0.5) pasare.playNote(dictionarDirect , ie
sleep(0.5) [direct , ieCurent˘a],0.5)
sleep(0.5)
pasare.stopAll()
culoareDirect , ie={’N’:[100,0,0], ’NE’: [0,100,0], ’E’:[0,0,100], ’SE’: [100,0,100], ’S’: [0,100,100],
’SW’: [100,100,0], ’W’: [100,100,100], ’NW’: [50,100,50]}
while not pasare.getButton(’A’):
direct , ieCurrnt˘a=direction()
a
if direct , ieCurrnt˘ in dictionarDirect , ie: pasare.setBeak(culoareDirect , ie[direct , ieCurent˘a][0],
culoareDirect , ie[direct , ieCurent˘a][1], culoareDirect , ie[direct , ieCurent˘a][2])
bird.setTail(”all”,directionColor[currentDirection][0],
directionColor[currentDirection][1],directionColor[currentDirection][2])
bird.playNote(directionDictionary[currentDirection],0.5)
sleep(0.5)
bird.stopAll()
A fost folosit un obiect de tip Finch care este definit ˆın Python ca o clas˘a, care este o
structur˘a de programare care include toate funct , iile s , i variabilele care se refer˘a la un singur
obiect. Un obiect poate fi ceva abstract ca o baz˘a de date, dar ˆın cazul Finch, este un obiect
fizic!
ˆ
Incapsularea funct , iilor s , i variabilelor ˆın clase se numes , te programare orientat˘a pe obiecte.
Cˆand se afl˘a ˆın interiorul unei clase, o funct , ie se numes , te metod˘a. O clas˘a permite unui
a
programator s˘ utilizeze metodele clasei f˘ar˘ a fi nevoie s˘ ˆınt , eleag˘ modul ˆın care acestea sunt
a
a
a
a
implementate. Acesta este un exemplu de abstractizare ˆın informatic˘a. Acest lucru ˆınseamn˘ c˘
a
a
detaliile sunt manipulate o dat˘ ˆıntr-o bucat˘ de cod reutilizabil. Alt , ii pot folosi apoi acel cod
a
pentru a rezolva noi probleme f˘ar˘a a-s , i face griji cu privire la aceste detalii. Funct , iile sunt, de
asemenea, un exemplu de abstractizare.
Pot fi conectat , i pˆan˘a la trei Finch (sau Hummingbird Bits sau micro:bits) cu Conectorul
BlueBird sau BirdBrain Brython, apoi se utilizeaz˘ clasa Finch pentru a crea mai multe obiecte
a
Finch independente! Acest lucru ˆınseamn˘a c˘a se pot programa robot , ii s˘a interact , ioneze unul
cu cel˘alalt. Cˆand sunt mai multe obiecte Finch, trebuie s˘a fie declarat fiecare apelˆand Finch()
cu un parametru care este litera (”A”, ”B” sau ”C”) care identific˘a acel Finch ˆın BlueBird
Connector. Obiecte declarate pot accesa toate metodele Finch.
from BirdBrain import Finch
from time import sleep
pasare1 = Finch(’A’)