Recursos avançats: treball amb llistes i seqüències

Veureu que aquesta pràctica conté alguns apartats indicats amb el símbol (*), recordeu que això significa que es tracta de materials d'ampliació. No oblideu, però, aquests materials, que segur que en construccions avançades us poden ser d'ajut.

Com dèiem, el GeoGebra és un programa en constant evolució i, per aquesta raó, cada vegada hi ha noves possibilitats d'aprofitament del programa.

comandaments de la categoria llistes



A partir de la versió 3, considerada com a estable el març de 2008 i fins a l'actual versió 4.2, estable des de la tardor de 2012, amb el GeoGebra està plenament consolidada la possibilitat d'emprar llistes d'objectes en les construccions i el seu disseny sistemàtic, amb el comandament Seqüència[ ] que en cada nova versió té recursos nous per treballar amb llistes que convé conèixer.
En la següent imatge podeu comprovar quins són els comandaments de la categoria llistes, on hi tenim el comandament Seqüència[ ].

Com ja heu vist en altres pràctiques, també tenim a l'abast un recurs per dissenyar eines pròpies (macros), de les quals en veurem algunes que aprofiten el treball amb llistes.

En aquesta pràctica, a partir d'exemples variats, es fa un tast sobre les immenses possibilitats que ens ofereixen aquests recursos per a la creació de les nostres activitats. En altres pràctiques, començant per la següent, veureu altres exemples.





Dividim un segment en tres parts i aprofitem la macro

Que faríeu per elaborar una eina que permeti dividir un segment en 3 parts iguals? Segur que sabeu com fer-ho a partir d'una construcció geomètrica que aprofita el teorema de Tales… i certament és una construcció molt interessant!

Ara bé, en aquesta presentació de recursos avançats diversos, ho farem d'una altra manera: ho aprofitarem per presentar les llistes 1), fer algunes reflexions sobre el seu ús i veure que obren la porta a una ràpida generalització.

  • Obriu el GeoGebra i feu que no s'etiquetin els objectes nous.
  • Definiu dos punts, que seran A i B i dibuixeu el segment que els uneix.
  • Definiu el vector associat a la tercera part del segment AB. Només cal entrar w = (B-A)/3.
  • Els dos punts que divideixen el segment AB en tres parts iguals són els que s'obtenen posant, amb origen en A, el vector w i el vector 2*w. Ara, aquests dos punts, juntament amb els dos extrems del segment, els posarem en una llista. Per al GeoGebra una llista d'objectes es defineix posant-los, simplement, entre { } i aleshores passa a ser un element de treball del programa que els tracta col·lectivament. La llista que ens interessa ara la podeu definir entrant a la casella d'entrada LL = {A, A+w, A+2w, B}. Feu-ho i veureu que s'han dibuixat els punts que ens interessaven; moveu A i B i veureu que tot funciona. Tot i que, estrictament no caldria incloure els punts A i B a la llista per veure els punts que divideixen el segment en tres parts iguals, ho hem fet perquè ens ajudarà a concretar alguns aspectes d'apartats posteriors d'aquesta pràctica.

Aprofiteu això que heu fet fins ara per definir una eina que permeti dividir un segment en tres parts iguals.

  • Objecte de sortida: la llista amb els punts que interessen.
  • Objectes d'entrada: els dos extrems del segment.

Proveu si l'eina (macro) que acabeu de dissenyar funciona amb segments diversos que anireu provant. Ha de funcionar perfectament!… Però, si no fos així, refeu la construcció. És interessant comentar que si després de dissenyar una macro volem fer-hi una variació, no és possible editar-la des del GeoGebra per modificar-la: haurem de començar de bell nou el disseny de la macro.

Ara imagineu que volem continuar la feina tot construint un triangle equilàter, un dels costats del qual sigui el segment que uneix els dos punts centrals que divideixen el segment en tres parts iguals.

  • Fàcil!, direu segurament. Triem l'eina Polígon regular, cliquem sobre els dos punts… i ja està!. Feu-ho així i observeu amb molta atenció.
  • Us heu adonat que quan clicàveu sobre els punts de la llista, en realitat no s'activava el punt sinó un punt nou, molt a prop del que volíem?2) És que la llista és, per al GeoGebra, això, una llista, un conjunt d'elements que amb els clics no es poden diferenciar.

Aleshores sorgeix de seguida una pregunta: Com es pot accedir a treballar amb els objectes d'una llista, separadament?

  • Amb el comandament Element[ llista, n ], on llista fa referència al nom de la llista amb què ens interessi treballar i n és el número d'ordre, dintre de la llista, de l'objecte que ens interessa. Per exemple, Element[LL, 2] vol dir el segon element de la llista LL.

Netegeu la zona gràfica, però mantingueu la macro que teniu feta per dividir un segment en tres parts.

  • Dibuixeu un segment nou.
  • Apliqueu als extrems d'aquest segment la macro que el divideix en tres parts. El programa haurà designat la llista de sortida de la macro com llista1. Tal com hem fet la macro, els dos elements de la llista que corresponen als dos punts que divideixen el segment en tres parts iguals són Element[llista1,2] i Element[llista1,3]. Els passarem a definir com a punts per poder treballar-hi. Escriviu P1=Element[llista1,2] i P2=Element[llista1,3].
  • Entreu ara T = Polígon[P1, P2, 3]. Aquest comandament serveix per construir un polígon regular de 3 costats que té com a vèrtexs els dos punts indicats.
  • Si tot ha funcionat, doneu el color que vulgueu als segments que formen els costats d'aquest triangle i feu que els vèrtexs, com a punts, tinguin la mida més petita possible.
  • Ara definiu una nova macro que, prenent com a objectes d'entrada els punts A i B tingui com a objecte de sortida els tres costats i els tres vèrtexs del triangle que acabeu de construir (el triangle equilàter construït sobre la tercera part central del segment AB).
  • Proveu si la macro funciona correctament.

I aleshores, si realment tot ha anat com havia d'anar, ja esteu a punt 3) de poder fer pel vostre compte el que veureu si aneu reproduint, pas a pas, la construcció següent.


Voleu descarregar-vos aquesta construcció?

El comandament Seqüència[ ] per generar llistes

Començàvem l'apartat anterior preguntant-vos Que faríeu per a elaborar una eina que permeti dividir un segment en 3 parts iguals?

Segur que ara ja sou vosaltres qui us feu una nova pregunta: …i si en comptes de 3 parts fossin n parts, i que aquest nombre de parts el poguéssim anar variant amb un punt lliscant, com ho hauríem de fer? Anem per feina!

  • Hem de conèixer el comandament Seqüència[ objecte dependent de i, i, a, b, c] que genera una llista d'objectes:
    • en primer lloc hem de posar com a argument la definició de l'objecte que ens interessi, que haurà de dependre d'una variable i,
    • el segon argument és, justament, el nom que hem donat a aquesta variable (que, evidentment, no cal que sigui i),
    • els dos arguments següents, a, b, són valors numèrics4) i que representen el valor inicial i el valor final que volem donar a la variable i,
    • l'argument final c és opcional i representa l'increment que té la variable i des de la generació d'un objecte a la generació del següent objecte de la llista. En cas que no es posi aquest argument el GeoGebra pren c = 1.
  • Així doncs Seqüència[ objecte, i, a, b, c] genera una llista d'objectes, còpies d'objecte per als valors de la variable i següents: a, a+c5), a+2c, i així successivament fins que el valor de a+k·c sigui més gran que b.

Ara, com a primera aplicació del comandament Seqüència, modificarem el procediment que hem seguit per a dividir un segment en tres parts per tal d'aconseguir una eina nova (una macro) que ens divideixi un segment en n parts.

  • Obriu el GeoGebra i feu que no s'etiquetin els objectes nous.
  • Definiu dos punts, que seran A i B, i dibuixeu el segment que els uneix.
  • Definiu un punt lliscant que prengui valors enters positius, des d'1 fins a 25 (per exemple). No us oblideu de posar que l'increment sigui 1. Doneu a aquest punt lliscant el nom de n.
  • Definiu el vector associat a la n-sima part del segment AB. Només cal entrar w = (B-A)/n.
  • Els punts que divideixen el segment AB en n parts iguals són els que s'obtenen posant, amb origen en A, el vector w, el vector 2*w, i així fins al vector (n-1)*w. Observeu que aquests són els vectors i*w on la variable i ha de variar entre 1 i n-1, o bé, si volem que també hi apareguin els dos extrems del segment, A i B, haurem de fer variar la i entre 0 i n. Abans hem escrit la llista a mà. Ara ho farem amb el comandament Seqüència, que entrareu així a la finestra de comandaments:
    L = Seqüència[ A + i*w, i, 0, n]6)
    Moveu els extrems del segment, varieu el valor de n i comproveu que funciona.
  • Per definir la macro:
    • Objectes de sortida: la llista de punts.
    • Objectes d'entrada: ja veureu que, per defecte, GeoGebra ja proposa que siguin els punts A i B i el numèric n. Ja ens va bé així!
    • Poseu-li (per exemple) el nom PartsIguals i vigileu que aquest sigui el nom de l'eina i del comandament. Ja sabeu que si voleu guardar l'eina com a tal, heu d'anar a Eines/Administra les eines i fer Anomena i desa. Es desarà com un fitxer .GGT que, més endavant, podreu incorporar a qualsevol construcció.

Comproveu que tot funciona. Quan la macro us demani el valor numèric entrareu, com ja ho feu amb les eines incorporades al GeoGebra, la lletra n, que és el nom del punts lliscant. Si tot va bé, deseu la feina.

Arrels d'un nombre complex (*)

Com una aplicació del comandament Seqüència[ ] veurem la manera d'obtenir la llista de les arrels d'índex n d'un nombre complex; si us agrada el tema, que es pot considerar d'ampliació, proveu de fer-ne una presentació visual.

  • Entreu un nombre complex A. Per exemple A = 3 + 4 i. Ja sabeu que després el podreu moure interactivament. Un consell: la lletra i per als nombres complexos convé que la introduïu pe teclat fent ALT + i. Així el GeoGebra mai la podria confondre amb un altre possible objecte anomenat i…
  • Creeu un punt lliscant enter n que serà l'índex de les arrels que voleu calcular.
  • Podeu fer el mòdul de A amb el comandament M = longitud[A]. Alerta!! amb [ ], perquè no és una funció sinó un comandament.
  • Com ja es presentava a la pràctica de presentació dels nombres complexos, del mòdul anterior, amb GeoGebra 4.0 la millor manera d'obtenir l'argument és ar=angle[ vector[(1,0)], vector[A] ], en canvi si treballeu amb GeoGebra 4.2 penseu en la funció arg()
  • Si només voleu veure els punts representatius de les arrels n-simes de A, com que ja sabem quin ha de ser el seu mòdul (l'arrel n-sima de M) i els respectius arguments (l'argument dividit per n al qual li anem sumant n-simes parts de la circumferència, podeu escriure
     Seqüència[ (M^(1/n); ar/n + k * 360°/n), k, 0, n-1] 
  • I ara es vol convertir els punts que apareixen, que són elements d'una llista, en nombres complexos. Amb la versió 4.2 del GeoGebra, podeu provar el comandament en anglès ToComplex [<List>], traduït com ConverteixEnComplex[<Llista>]:
  • Si voleu obtenir directament les arrels n-simes de A en forma binòmica, és a dir com un nombre complex, caldrà escriure'n directament la fórmula en el comandament seqüència:
     Seqüència[ M^(1/n)*(cos(ar/n + k*360°/n)+ i sin(ar/n + k*360°/n) ), k, 0, n-1] 

Ànim! A practicar una mica!

Emprem una macro pròpia en una altra macro (*)

Ara tornarem a comprovar que una eina-macro "nostra" en pot emprar una altra i veurem una altra manera de cridar les eines. Emprarem l'eina anterior per dibuixar, des d'un punt C exterior al segment AB, els segments que uneixen aquest punt amb els punts de divisió del segment AB en n parts iguals (i, per tant, dibuixarem n triangles de la mateixa àrea).

  • Obriu un nou fitxer de GeoGebra. Si ho feu sense tancar el programa, amb Fitxer | Nou la macro definida anteriorment, PartsIguals seguirà accessible. Tingueu cura de fer-ho així com ho hem dit perquè si triéssiu l'opció Fitxer | Finestra nova aleshores l'eina acabada de fer desapareixeria.
  • Definiu un segment AB i marqueu un punt C exterior al segment.
  • Definiu un punt lliscant n que, com hem fet abans, indicarà el nombre de parts que volem.
  • Ara veurem que podem aplicar el comandent associat a la macro. Escriviu:L = PartsIguals[A, B, n] i comprovareu que, efectivament, es dibuixa la corresponent llista de punts, que, com a elements de la llista queden numerats de l'1 al n+1 (el número d'ordre dins de la llista, independentment del valor de la variable que l'hagi generat)
  • Per dibuixar els segments que havíem comentat construirem una llista:S = Seqüència[ segment[C, Element[L,j]], j, 1, n+1].

Com sempre, aneu comprovant que tot funciona. I si és així, podem dissenyar una macro.

  • Objectes d'entrada: interessa que siguin els punts A, B (extrems del segment) i C (punt exterior) i el numèric n, en aquest ordre. GeoGebra ja proposarà, segurament, que siguin aquests els objectes d'entrada; si l'ordre no és el que interessa, el podeu modificar amb les fletxes que teniu al pop-up de definició de la macro.
  • Objectes de sortida: la llista de segments, S.

Proveu que funciona. I, per provar-ho, a veure si feu aquest dibuix


que serviria per analitzar un problema i conjecturar-ne la solució mitjançant una presentació eficient: En quantes regions queda descompost un triangle si dividim cada costat en n parts i unim el vèrtex oposat amb els punts de divisió? Però, certament, la solució del problema no és pas un tema relacionat amb el curs; el GeoGebra ens fa la imatge "perfectament", perquè nosaltres puguem fer conjectures i deduccions.



Comandaments Seqüència[ ] encaixats. Un mosaic hexagonal (*)

En aquest darrer apartat de la pràctica comentarem la possibilitat (que potser podeu deixar "per a segona lectura" del tema) de fer "seqüències de seqüències" (bucles encaixats diríem en llenguatge de programació informàtica).

Imagineu que volem fer un geoplà de 6 × 6.

  • Si escrivim:
    seqüència[(i,0), i, 0, 6]
    seqüència[(i,1), i, 0, 6]
    seqüència[(i,2), i, 0, 6]
    seqüència[(i,3), i, 0, 6]
    seqüència[(i,4), i, 0, 6]
    seqüència[(i,5), i, 0, 6]
    i seqüència[(i,6), i, 0, 6]
    ja ho haurem aconseguit! Però no es podria fer automàticament?
  • Fixeu-vos que el que hauríem escrit és
    seqüència[(i,j), i, 0, 6] on cal fer variar la j de 0 a 6, és a dir
    seqüència[seqüència[(i,j), i, 0, 6],j, 0 , 6]

    Proveu-ho i veureu que funciona!


Ara, un altre exemple. Primer reflexioneu què us sembla que ha de donar. Després ho escriviu en un nou tauler de GeoGebra i mireu si ho heu raonat correctament.

  • Seqüència[ Seqüència[ Segment[(i,j), (i+0.2, j+0.2)], i, j+1, 7], j, 0, 6] .



Acabarem aquest petit comentari sobre les seqüències encaixades per dibuixar un mosaic hexagonal. Volem aconseguir quelcom semblant a:

mosaichexa.jpg

Per aconseguir-ho farem una seqüència encaixada de dos tipus de translacions a un hexàgon regular. Analitzeu la figura següent:

traslladahexagon.jpg

  • Hi hem dibuixat un hexàgon regular a partir de dos punts A i B i l'eina Polígon regular. Imaginem que li donem de nom P a aquest polígon.
  • Hem definit dos vectors v i w que uneixen un vèrtex de l'hexàgon amb uns altres dos com podeu veure a la figura; es pot fer naturalment amb l'eina Vector entre dos punts.

A la figura es fa visual una translació de l'hexàgon corresponent al vector 3v + 2w.

Us imagineu que si anem variant el vector 3v + 2w per uns altres i v + j w, variant adequadament la i i la j, podem aconseguir tot el mosaic? Doncs sí que podem!

  • Després de definit l'hexàgon P i els dos vectors v i w, amagueu tots els objectes que teniu construïts fins ara.
  • Escriviu a la línia d'entrada:
    Seqüència[Seqüència[Translació[P, i v + j w], i, -5, 5], j, -5, 5].

Oi que és bonic?

  • Feu que es vegin els punts A i B amb què havíeu iniciat la construcció. Podeu moure'ls i canviar la mida i orientació de les rajoles hexagonals.
  • Si aneu a les Propietats de la llista d'hexàgons podreu donar-los color amb l'Ombrejat.



Oi que es veu molt clar que, "encara que facin escriure una mica", les llistes són un recurs molt potent a tenir en compte? En altres pràctiques dels mòduls propers ho podreu comprovar!




1) A part de recordar que GeoGebra incorpora les idees de la geometria afí.
2) Si ho feu en un exemple a partir de dos punts, sense dibuixar el segment que els uneix i aleshores moveu els punts A i B, veureu clar això que volem dir.
3) Amb una mica de paciència.
4) Que poden ser els noms de dos punts lliscants o poden ser directament nombres.
5) Ja s'ha dit que si no s'ha entrat c es pren c=1.
6) Alerta amb l'ortografia de seqüència. Algú diu que és "un inconvenient" que s'hagin de posar tots els accents. Al contrari, és un costum sa mirar d'escriure sempre amb total correcció! I, per altra banda, com amb tots els comandaments del GeoGebra quan escriviu seq, el programa ja completa el comandament seqüència[ ].