Geogebra implementa la possibilità di usare semplici liste e di eseguire alcune operazioni sulle liste stesse. Le funzioni predefinite non sono molte e si limitano, sostanzialmente, alla ricerca del massimo o minimo di una lista di numeri, all'estrazione di un elemento di posto noto dalla lista stessa e al calcolo della lunghezza della lista. Numerose altre operazioni possono essere definite sulle liste, usando opportunamente anche l'istruzione condizionale if-then-else. Nella figura interattiva che proponiamo a corredo di questa pagina abbiamo inserito, a titolo d'esempio, due comandi per la ricerca della posizione di un dato elemento in una lista e per l'ordinamento di una lista. Le macro di costruzione di questi comandi sono dovute a un utente del forum di Geogebra, che ringraziamo per averli messi a disposizione di tutti.
La definizione di una lista si può fare usando
direttamente la sintassi di base nella finestra di input
algebrico: \[lista={a_1,a_2,a_3,\ldots,a_n},\] dove gli \(a_i\)
sono numeri, punti, o altri oggetti. Si può anche
definire una lista usando il comando Sequence
(Successione
in italiano), con la seguente
sintassi:
Sequence[<espressione>, <variabile>,
<numero a>, <numero b>, <numero s>]
dove i tre numeri rappresentano, nell'ordine, il valore iniziale, quello finale e il passo dell'incremento della variabile.
Esempi
Sequence[(2 cos(t), 3 sin(t)), t, 0, 6.28,
0.63]
: produce una lista con le coordinate di 10 punti
sull'ellisse di centro l'origine e semiassi 2 e 3;
Sequence[x^i, i, 1, 5, 1]
: produce una lista con
le funzioni \(x, x^2, x^3, x^4, x^5\), che vengono anche
rappresentate graficamente;
Sequence[i^2, i, 0, 10]
: produce una lista
contenente i quadrati dei numeri da 0 a 10.
Si presti attenzione al fatto che gli oggetti della lista sono trattati come un tutt'uno e dunque eventuali proprietà verranno applicati a tutti gli oggetti della lista stessa: i grafici delle funzioni del secondo esempio avranno tutte lo stesso colore, spessore, ecc.
Come esempio di applicazione delle liste vogliamo vedere come si può costruire un piccolo codice per calcolare il Massimo Comun Divisore e il minimo comune multiplo di due numeri interi positivi.
Detti \(a\) e \(b\) i due numeri (che si introdurranno con uno slider, o per inserimento diretto nella finestra di algebra), usiamo l'algoritmo elementare di provare a fare le divisioni successive per tutti i numeri interi positivi \(n\) non superiori al più piccolo dei due numeri dati: se il resto di entrambe le divisioni è zero, allora il numero \(n\) in questione è un divisore, altrimenti no. Per controllare contemporaneamente il resto di entrambe le divisioni basterà che facciamo la somma dei due resti: se esso è zero, allora \(n\) è un divisore comune. I passi dell'algoritmo sono i seguenti:
a
e b
;
c=Min[a,b]
;
L1=Sequence[If[Mod[a, n] + Mod[b, n] == 0, n, -1], n,
1, c]
;
Naturalmente non si tratta di un algoritmo efficiente, ma ha il vantaggio di usare solo concetti elementari.
Se vogliamo essere più sofisticati ordiniamo la lista L1
ottenendo la lista L2, cerchiamo la posizione che occupa in L2
il numero 1, ed estraiamo da L1 la lista di tutti gli elementi
successivi: avremo così l'elenco di tutti i divisori
comuni dei due numeri. Per fare questo usiamo alcuni comandi
implementati in una apposita macro (non facile da costruire!!),
contenuta nel file allegato a titolo d'esempio. I codici
sono (attenzione: i comandi OrdinaLista
e
TrovaPosizione
non sono presenti nella versione
base di Geogebra):
L2=OrdinaLista[L1]
;
d=TrovaPosizione[1,L2]
;
Divisori=Sequence[Element[L2, i], i, d,
Length[L2]]
.
Non resta che scrivere il tutto, usando opportunamente le caselle di testo, nella finestra del programma. Per completezza abbiamo previsto l'inserimento dei dati in ingresso mediante due caselle di input: chi ha un po' d'esperienza con javascript può agevolmente comprendere la costruzione del codice, scaricando il sorgente della pagina.
Puoi vedere il risultato finale nella pagina MCD-mcm con Geogebra
.