Una variable la podríem veure com una caixa que té un nom i a la qual se li pot introduir (assignar) un valor en un moment donat, i en qualsevol altre moment podem utilitzar (llegir) aquest valor. El valor de la variable podrà canviar.
Imatge presa de Crear aplicaciones para Android.
Doncs això, que una variable sempre té un nom, que se li assigna un valor en un moment donat, i que, o se pot llegir o utilitzar aquest valor, o canviar-lo per un altre valor en qualsevol moment.
Molt bé, molt bonic això de les variables i dels dibuixets, però... per a què em serveix això en una aplicació? com puc utilizar-ho a l'AppInventor?
El primer, per a crear una variable a l'App Inventor hem d'anar a
L'arrossegarem a l'espai de treball i li canviarem la paraula variable pel nom que tindrà la variable, en aquest cas, vDiferenciaEdat:
Com pots observar, ens apareix un símbol d'Advertència!
que indica que no està complet, que hem de donar-li un valor. El que estem fent és "definir-lo", és a dir, li estem dient a l'AppInventor que tenim un element, en aquest cas anomenat vDiferenciaEdat, que anem a utilitzar a la nostra aplicació. Però que li hem de donar un valor en la seva definició, que en aquest cas serà 0.
Un cop "definida" la variable, podrem utilitzar-la en el botó btnMajorEdat, en el seu esdeveniment .Click. Però... on és aquesta variable que hem definit? Com la utilitzem? Quan posàvem un control en el Disseny apareixia directament a My Blocks, però una variable... on?. Per a accedir a les variables que definim (o qualsevol element que definim, com procediments, funcions, ...), haurem d'accedir a :
Tatxan!!!! Aquí s'aniran "guardant" tots els elements que anem definint en el nostre programa, però... per què hi ha 2 vDiferenciaEdat? Bé, és molt senzill:
El bloc global conté el valor de la variable. Fa referència al valor que ja té la variable. Quan vulguem utilitzar el valor que té guardada aquesta variable, utilitzarem aquest bloc.
El bloc set global serveix per a establir un valor per a la variable. Aquest bloc és el que serveix per a donar-li un valor a la variable. Quan volem canviar el valor de la variable (el que es guardi dins de la caixa) utilitzarem aquest bloc.
Anem a veure-ho amb un exemple: una app li pregunta a l'usuari la seva edat (l'ha d'introduir en una caixa de text a la pantalla) i li diu els anys que li falten per als 18:
Li pregunto a l'usuari (mitjançant una caixa de text a la interfície del mòbil) la seva edat
Calculo els anys que li falten per als 18 i guardo el resultat a la variable vDiferenciaEdat
A continuació utilitzo la funció make text per a "sumar" (en realitat es diu concatenar) les cadenes de text "Et falten" "???" "anys per a tenir 18 anys". On posa "???" apareixerà el valor emmagatzemat a la variable vDiferenciaEdat.
Mostro en una etiqueta anomenada lblMissatge aquest text. Alguna cosa així com "Et falten 3 anys per a tenir els 18 anys"
Font de l'exemple i de les imatges Crear aplicaciones para Android.
El que acabem de veure és un algorisme i és molt, molt, molt important en programació. Per a explicar-ho de forma senzilla, un algorisme és un conjunt d'instruccions o passos detallats que serveixen per a resoldre un problema. Els algorismes són previs a la programació: primer dissenyem l'algorisme, és a dir, descrivim amb les nostres paraules els passos que haurà de fer l'aplicació, i després els "traduïm" al llenguatge de programació (en el nostre cas, als blocs d'AppInventor).
Hi ha coses que no s'entenen fins que no es toquen amb les mans. Per això anem a fer una obra de teatre en la que representarem l'algorisme explicat abans, el de càlcul dels anys restants per a la teva majoria d'edat.
L'escenari d'aquesta obra té dues àrees:
La vista dissenyador (pissarra)
L'editor de blocs (resta de l'escenari)
Aquest és el seu guió:
A l'obra surten els següents personatges:
Caixa de text amb l'edat de l'usuari, interpretat per...
Etiqueta amb el missatge de sortida ("et falten.... per als 18 anys"), interpretat per...
La definició def variable as, interpretat per...
La variable global DiferenciaEdat, interpretat per...
El literal number 18, interpretat per...
El literal number 0, interpretat per...
El literal text Et falten , interpretat per...
El literal text per a complir 18 anys, interpretat per...
La funció set global to, interpretat per...
La funció set label.text to, interpretat per...
La funció make text, interpretat per...
La funció resta - , interpretat per...
El director ha de comprovar que cada actor s'ha posat la disfressa adequada, col·locar-lo en l'escenari i explicar-li el que ha de fer en l'obra.
Per a interpretar l'obra farem el següent:
Cada actor s'ha de posar la seva disfressa corresponent: caixes per a les variables, cartells per a funcions i literals. A més a més necessitarem post-it per als valors (noms de variables, caixes de text, etc.). Per a representar les dades utilitzarem targetes amb un post-it.
Només els actors que interpreten funcions es poden moure pel seu compte (són com els verbs, fan coses), mentre que els literals i variables (són com nom) necessiten ser col·locats, moguts, pels actors que interpreten funcions.
Les funcions han de moure's en l'ordre adequat.
Per a representar la connexió entre blocs, els actors s'agafaran de la mà. Per exemple, el literal number només té una connexió, així que només pot utilitzar una mà. Els blocs de les funcions es poden connectar per dos costats, així que poden utilitzar les dues mans.
I el profe? Serà el públic, la seva única intervenció serà aplaudir (o no) al final de l'obra.
Ara que ho has entès, codifica el programa que hem estat interpretant, amb el següent afegit: Varia aquesta aplicació per a que si, per exemple, inserim un 13, ens mostri un missatge com el següent: "Tens 13 anys. En el teu proper aniversari arribaràs als 14 anys i et queden 5 per a complir els 18". Lògicament, si s'introdueix una altra edat, farà els càlculs sobre aquesta edat introduïda.
Aquesta app, avorrida però necessària, val 2 punts.
La idea de teatralització de l'algorisme surt del curs de robòtica educativa de Complubot.