Page 60 - MATINF Nr. 9-10
P. 60

60                                                                                     R.D. Albu




                 # funct , ie ce poate fi apelat˘a (repetat) oricˆand se dores , te  def urmeazaZid():
                 urmarea unei linii.                            pasare.setMotors(20,30) # Arc pˆan˘a se ˆıntˆalnes , te zid
                 def lineTrack():                               while (pasare.getDistance() > 30):
                   prag = 91                                   pass
                   if        (pasare.getLine(’R’)<prag)   and   pasare.setMotors(0,0)
                 (pasare.getLine(’L’)>prag): #dreptul pe negru, stˆangul  pasare.setMove(’B’,10,50) # ˆınapoi us , or
                 pe alb                                         pasare.setTurn(’R’,90,50) # ˆıntoarcere dreapta
                     pasare.setMotors(30,0) # ˆıntoarce dreapta
                   elif      (pasare.getLine(’R’)>prag)   and  while not(pasare.getButton(’A’)):
                 (pasare.getLine(’L’)<prag):  # dreptul peste alb s , i  followWall()
                 stˆangul peste negru
                     pasare.setMotors(0,30) # ˆıntoarcere stˆanga
                   else: # altfel merge ˆınainte
                     pasare.setMotors(30,30)
                                        ı
                 # urmeaz˘a linia pˆan˘a cˆand se ˆntˆalnes , te un obstacol
                 while (pasare.getDistance() > 20):
                     lineTrack()
                 pasare.stop()
                Se pot crea funct , ii care iau parametri. Este nevoie de un parametru numit dimensiune care
            este numit ˆın interiorul parantezelor care urmeaz˘a numele funct , iei, care creeaz˘a o variabil˘a ˆın
            interiorul funct , iei. Cˆand apelat , i funct , ia, furnizat , i o valoare pentru parametru, iar funct , ia este
            executat˘ cu variabila parametrului egal˘ cu acea valoare.
                     a
                                                      a
                 def trasarePatrat2(marime):                   def lic˘arireTot(ros , u, verde, albastru):
                   for i in range(4):                           pasare.setBeak(ros , u, verde, albastru)
                     pasare.setMove(’F’,size,50)                pasare.setTail(”all”, ros , u, verde, albastru)
                     pasare.setTurn(’R’,90,50)                  sleep(0.1)
                                                                pasare.stopAll()
                 trasarePatrat2(10) # apel funct , ie          sleep(0.1)

                 for i in range(5):                            for i in range(20): # Testare
                     trasarePatrat2(random.randint(5,20))       lic˘arireTot(100,0,100)

                                                                                  a
                Funct , iile pot returna s , i valori. De exemplu, o funct , ie ce returneaz˘ media valorilor senzorilor
                                                  a
            de lumin˘a Finch. Codul care apeleaz˘ aceast˘a funct , ie poate utiliza apoi valoarea returnat˘a.
                 def lightMean():                              # funct , ie ce returneaz˘a True cˆand Finch este intr-o anumit˘ a
                   return 0.5*(pasare.getLight(’L’)+pasare.getLight(’R’))  pozit , ie s , i False altfel
                                                               def estePozit , ie():
                 print(lightMean())                             return pasare.getOrientation() == ”Pozit , ie”
                                                               while estePozit , ie ():
                                                                lic˘arireTot(0,100,0)

                Dac˘ se dores , te redarea unei melodii cu Finch, este mai us , or s˘ se utilizeze o list˘a, care, ˆın
                                                                                a
                    a
            Python, este un grup de valori. Se poate defini o list˘a plasˆand elementele sale ˆın paranteze
            p˘atrate, separate prin virgule. O bucl˘a for stabiles , te variabila i egal cu fiecare element dintr-o
            list˘a. Listele pot fi create cu funct , ia range(), dar se poate utiliza orice list˘a cu o bucl˘a for.
            Pentru cˆantecele, a se vede siteul [8],

                Se pot accesa elemente individuale dintr-o list˘ utilizˆand paranteze p˘atrate. Elementele listei
                                                              a
            sunt indexate de la 0 la lungimea listei minus 1. Funct , ia len() returneaz˘ lungimea unei liste. Se
                                                                                    a
                                a
            poate utiliza o bucl˘ for cu funct , ia range() pentru a accesa elementele individuale ale unei liste.
                 note  =   [60,65,69,72,60]  print(”Prima not˘a: ”,  for i in range(len(note)): #Pen-  b˘at˘ai = [1,0.5,1,2,0.5]
                 #List˘a note            note[0])           tru fiecare not˘a din list˘a  for  i  in  range(len(note)):
                 for i in note: #Pentru fiecare  print(”Ultima  not˘a:  pasare.playNote(note[i], 0.5)  #Pentru fiecare not˘a din list˘a
                 not˘a din list˘a        ”, note[len(note) - 1])  # red˘a nota         pasare.playNote(note[i],
                                                                                                a
                   pasare.playNote(i,  0.5)                  sleep(0.5)              b˘at˘ai[i]) #Red˘ nota
                 #red˘a nota                                                           sleep(b˘at˘ai[i])
                   sleep(0.5)
                Se pot utiliza liste pentru a stoca datele colectate de la utilizator.
   55   56   57   58   59   60   61   62   63   64   65