Mòdul 2
La calculadora Wiris com a recurs didàctic
Enrera Pràctica
1
2
3
4
5
6
 
 
   
Exercicis
Exercicis
 
 
  El llenguatge de programació Wiris++
 

En aquesta pràctica (que, tanmateix, també es podria designar com a document de conceptes) començareu a conèixer el llenguatge de programació propi de la calculadora Wiris i constatareu que és un altre dels recursos que li donen una gran potència de càlcul i, alhora, permeten fer-hi interessants reflexions conceptuals. Es presentaran les sentències de què es disposa i es veuran uns primers exemples d'aplicació.

 
Els recursos per a la programació amb la Wiris
   
Presentació de les comandes
   
 

Tot i que entre els objectius d'aquest curs no hi figura ensenyar a programar, perquè aquesta és una tasca personal, laboriosa i, de vegades, difícil, és ben cert que per albirar totes les possibilitat de la Wiris cal conèixer el llenguatge de programació que incorpora. Es tracta d'un llenguatge estructurat i funcional, dissenyat expressament per a la Wiris.

En aquesta pràctica i en altres d'aquest curs podreu conèixer les idees fonamentals que us premetran elaborar els vostres programes. Si voleu aprofundir en el tema, l'apartat WIRIS ++ de la Guia ràpida de la Wiris us facilitarà la tasca.

Les comandes o sentències fonamentals que cal considerar es descriuen tot seguit i s'aclariran en els exemples que analitzarem al llarg de diverses pràctiques del curs. Per accedir-hi i escriure-les a la finestra de sessió, cal fer clic a la pestanya de la barra d'eines.

   
Ampliació
  • És imprescindible començar amb l'explicació que, atenent a la forma de treballar de la Wiris, les comandes incloses en un programa han de tenir com a finalitat fer càlculs o construir un objecte. Cal tenir moltes precaucions (que es comenten en una finestra d'ampliació) per incloure en bucles de programació sentències d'execució. La línia de treball que es recomana d'adoptar en primera instància és la següent: mitjançant el programa contruirem una llista o un element geomètric i, en acabat, amb les comandes que ja coneixem, com és ara escriu o dibuixa, visualitzarem allò que ens interessi.

Comentarem, en primer lloc, les sentències condicionals, que permeten que s'executin unes accions o unes altres segons que es compleixi una condició o no.

Heu de tenir en compte les consideracions següents:

  • Les condicions s'han d'expressar mitjançant el signe d'igual llarg o els signes de desigualtat inclosos en la carpeta de o també poden ser expressades directament com a booleans, és a dir, elements de treball de la Wiris que puguin tenir els valors cert o fals.
  • La comanda condicional fonamental, a saber, si..aleshores..fi, s'escriu fent clic a la icona si. És clara la seva funcionalitat: si es compleix la condició, s'executen les comandes indicades; en cas que no es compleixi la condició, no es fa cap acció i es passa a la comanda subsegüent al fi.
  • Podem afegir alternatives a les nostres sentències condicionals. En primer lloc, si..aleshores..altrament..fi, per a la qual també disposem d'una icona. Per poc que hagueu fet alguna tasca senzilla de programació, tindreu clar com actua: si es compleix la condició, s'executen les comandes indicades en primer lloc; en cas que no es compleixi la condició, llavors les accions que durà a terme la Wiris seran les indicades després de l'altrament.
  • També hi ha la possibilitat d'alternatives múltiples, encadenant diverses condicions una després de l'altra. Aquesta possibilitat s'introdueix amb altrament si; es poden enllaçar diverses condicions amb aquesta opció i acabar amb altrament. Perquè s'escrigui un altrament si enmig d'una sentència condicional, començarem per fer clic a una de les dues icones ja explicades. Tot seguit farem clic a la icona menú de la carpeta i podrem afegir una o més condicions alternatives. En aquest cas, si es compleix la condició indicada en la línia del si s'executen les comandes indicades en primer lloc; en cas que no es compleixi, s'examina la condició del primer altrament si i si es compleix, es fan les accions corresponents o, en cas contrari, es passa a analitzar la condició següent. I així successivament. Si en acabar hi ha un altrament, la Wiris actuarà com ja s'ha indicat en el seu moment.

L'altra grup de sentències de què disposem són aquelles que permeten la repetició (si escau condicionada) d'una determinada acció que convé recordar que no pot ser del tipus escriu o dibuixa, sinó que ha de ser de treball intern, com és ara fer un càlcul o construir una llista.

Comentem-les breument:

  • La primera d'elles, per..fer..fi, que s'obté amb la icona per, repeteix una acció per tots els elements indicats en un iterador, que pot ser una llista o un recorregut. Vegeu algunes possibilitats i la manera d'indicar un iterador múltiple:
    • per j en {1,2,3,4} repetirà l'acció o accions indicades per j=1, j=2, j=3 i j=4.
    • Si escrivim per i,j en 1..9, 1..9 es repetirà l'acció per i en {1, 2, 3, 4, 5, 6, 7, 8, 9} (que hem escrit com un recorregut) i j en la mateixa llista. Noteu que s'ha d'indicar en quin objecte volem que estigui i i en quin objecte volem que estigui j, encara que sigui el mateix.
    • Amb l'expressió per i,j en {1,2,3,4},{1,2,3,4}/{i} indiquem que volem repetir l'acció per totes les combinacions de valors de i i j de manera que i pertanyi a {1, 2, 3, 4} i j a {1,2,3,4}/{i} cosa que, atenent al fet que / equival a la resta de conjunts, imposa que j pertany al mateix conjunt indicat, però és diferent de i.

  • mentre..fer..fi repeteix les accions o comandes que s'indiquin en tant que la condició expressada es compleixi. És lògic pensar que en la condició apareixerà una variable que va canviant de valor a mesura que es realitzen les accions.

  • repetir..fins.. és conceptualment semblant a l'anterior. També hem de pensar que en la condicíó apareixerà una variable que va canviant de valor a mesura que es fan les accions que, en aquest cas, s'aniran repetint si la condició no és certa, i quan la condició es compleixi es passarà a la primera línia subsegüent al bucle iteratiu.

Primer exemple: activitat didàctica
   
  En una de les pràctiques del mòdul 1 havíem vist la possibilitat d'elaborar un qüestionari de preguntes amb resposta. L'alumne o l'alumna podia entrar les respostes i la Wiris li deia si ho havia fet bé o no.

En aquesta primera proposta de programació que teniu tot seguit podreu veure com es pot variar l'exemple perquè l'alumne o l'alumna coneguin únicament el nombre d'encerts i, per exemple i com a activitat didàctica, se'ls pugui indicar que modifiquin les respostes fins que les tinguin totes correctes.

Pot ser interessant que abans d'obrir la finestra activa on teniu desenvolupat el programa vegeu els elements fonamentals que es destaquen en la imatge següent:

  • Recordeu com s'escriuen les expressions de què volem que la Wiris comprovi la certesa o falsedat. En aquest cas, amb l'igual llarg i acabant amb un ? abans del qual hem deixat un espai. Hem fet ús de la icona per indicar allò que esperem que omplin els alumnes.
  • Observeu que a cadascuna d'aquestes igualtats que volem comprovar li podem donar un nom de variable (un identificador). Cadascun d'aquests identificadors correspondrà a un booleà: seran elements que poden tenir com a valor cert o fals. Adoneu-vos que acabarem cada línia amb un punt i coma; d'aquesta manera no s'escriuran les respostes: el codi romandrà inalterable.
  • Tot seguit es construeix una llista P, que podríem dir que és el conjunt de preguntes de la prova.
  • Llavors ja es pot passar al que ara ens ocupa: el programa que compta els encerts.
    • Vegeu que és repetix una acció per i en P, és a dir, per a totes les preguntes de l'examen.
    • Vegeu també el condicional: si i (que vol dir "si i és cert"); llavors s'afegeix un punt al nombre d'encerts.
 
Recompte d'encerts en un qüestionari
 

  Una vegada analitzat l'exemple, us proposem que, com a exercici pràctic, hi canvieu el que faci falta per fer un nou qüestionari amb el tema que vulgueu. Ara bé, aquesta part de la pràctica l'haureu d'enviar com a exercici 2 d'aquest mòdul.  

 

Segon exemple de programació
   
 

En l'exercici 1 us proposem que resolgueu un problema numèric amb l'ús de ...amb... en... on.... Això us ajudarà a copsar la potència d'aquest recurs de la Wiris per construir objectes, per exemple, la llista que dóna la solució d'un problema.

Tot seguit farem servir el mateix exemple, perquè, enfocat amb unes altres eines, dóna un bon exemple d'introducció a la programació Wiris++.

L'exemple és aquest:

Quines són les xifres x, y, z perquè la suma xx + yy + zz = xyz esdevingui correcta?

 
Un problema d'aritmètica
  Adoneu-vos dels aspectes següents:
  • La necessitat de construir el conjunt de solucions enfront del que faríem amb molts altres llenguatges i que consistiria a anar escrivint les solucions.
  • La manera d'escriure que els nombres x, y, z que busquem han de pertànyer, respectivament, x al conjunt {1, 2} (penseu per què ha de ser així!), i els altres dos al conjunt {1, 2, 3, 4, 5, 6, 7, 8, 9} que s'ha escrit com un recorregut, l'1..9 (per què no poden valer 0 aquests dos nombres?).
  • Com s'ha escrit la condició xx + yy + zz = xyz. Vegeu l'igual llarg!
  • Com s'ha anat construint el conjunt de solucions, tot i que veureu de seguida que només hi ha una solució!

Fixeu-vos que, en l'exercici anterior no ha fet falta imposar que x, y, z fossin tres xifres diferents. Però així ha estat.

  • Com a pràctica, podeu modificar l'exercici anterior per veure que el problema de trobar quatre dígits diferents, diem-ne X, Y, Z, T, que compleixin XXX + YYY + ZZZ + TTT = XYZT no té solució.

I ara per acabar un comentari de caràcter tècnic que explica concretament com podem aconseguir escriure en diferents línies les diferents comandes que s'han de repetir dintre d'un bucle o d'altres sentències de programació de la Wiris. El procediment escaient és aquest:

  • prement la combinació de tecles Majúscules + Retorn al final de cada comanda

Aquesta mateixa combinació de tecles serveix per

  • escriure diverses línies de comandes "com si fossin una", en qualsevol altre situació i en aquest cas és sintàcticament equivalent al punt i coma.
  • fraccionar una línia de comanda en diverses línies (perquè és molt llarga, per facilitar-ne la lectura, etc...)

Vegeu-ne un exemple:


 
Amunt