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’)
   58   59   60   61   62   63   64   65   66   67   68