Manuela Paric'
a- a+

Ordinare un array

Introduzione

Possiamo considerare un array come un contenitore di valori.
Questi valori sono associati ad un "indice" , così se creiamo un array :

contenitore = new Array("gennaio" ,"febbraio" ,"marzo" ,...ecc);

questo avrà i valori dei mesi associati ad un numero (indice) che ne indica la posizione, partendo da "0".
Per richiamare un valore quindi, basterà fare riferimento alla sua posizione nell'array:

contenitore[0] restituisce: "gennaio";
    contenitore[1] restituisce: "febbraio";
    ecc...


Quindi l'indice [0] indica la prima posizione nell'array "contenitore" ,cioè "gennaio" , così [1] indica "febbraio" e via dicendo.
Per assegnare un valore ad un indice, scriveremo:

contenitore[n] = "valore";

se "n" è un indice che ha già un valore, questo sarà sovrascritto dal nuovo:

contenitore[0] = "nuovo valore";

Il vantaggio rispetto ad usare tante variabili tipo contenitore1="valore1" , contenitore2="valore2"... sta nel poter "raggruppare" tutti i valori in un unica variabile, l'array appunto. I vantaggi nell'uso degli array, nella programmazione, sono molteplici e vanno al di là dello scopo di questa lezione. Per adesso ci basta capirne il funzionamento.


Cosa faremo

In questo lezione realizzeremo un filmato che ci permetterà di ordinare alfabeticamente dei valori che vi immetteremo.
Dobbiamo quindi creare:

  • l'array
  • campo di testo per inserire i valori
  • campo di testo per visualizzarli
  • bottone per aggiornare l'array
  • bottone per ordinare l'array


In pratica

L'ARRAY:

Sul primo frame mettiamo l'azione:

// creo l'array
 myArry = new Array();
 w = 0;

w è una variabile che ci servirà come "indice" dell'array, come vedremo in seguito.

I CAMPI DI TESTO:

  1. Inseriamo un campo di testo "input" e assegniamo "inserisci" come nome della variabile.


     
  2. Poi il campo di testo "dynamic" che ci permetterà di visualizzare i valori immessi, a cui daremo il nome di variabile "ordina".

Questo campo dovrà essere "multiriga" per poter visualizzare i nostri valori.

I BOTTONI:

1) Creiamo il primo bottone, che ci permetterà di inserire i valori immessi nel campo di testo e nell'array.
Gli assegnamo la seguente azione:

on (release) {
    myArry[w] = inserisci;
    if (ordinati=="si") {
        ordina="";
        ordinati="no";
    }
    ordina += inserisci+newline;
    w++;
    inserisci = "";
}

- Nella prima riga:

myArry[w] = inserisci;

assegniamo al nostro array "myArry" il valore immesso in "inserisci" , usando come indice la variabile "w" , che la prima volta avrà valore 0 (w=0 sul frame). Ad ogni pressione del tasto quindi, il nostro array aumenterà la sua lunghezza, cioè il numero dei valori in esso contenuti.

- Poi nella seconda riga:

if (ordinati=="si") {
    ordina="";
    ordinati="no";
}


controlliamo, tramite la variabile "ordinati" se abbiamo già ordinato i valori, se così è, azzeriamo il campo "ordina" e la variabile "ordinati" , in questo modo le prepariamo per un altra operazione.

- Con:  

ordina += inserisci+newline;

inseriamo il valore di "inserisci" nel campo di testo "ordina" , così da poterlo visualizzare. Affinchè ogni nuovo valore non azzeri il precedente, dobbiamo usare l'operatore " +=" , che equivale a dire:

ordina = ordina + inserisci+newline;

N.B. newline ci permetterà di andare a capo ogni volta che inseriamo un valore.

- Incrementiamo poi di 1 il valore di "w" con w++, cosicchè ad ogni pressione del bottone, avanzeremo con l'indice dell'array (w=1,w=2,..).
Infine azzeriamo il campo di testo input "inserisci" , così da poter inserire un nuovo valore.


2) Facciamo adesso il secondo bottone, cioè quello che metterà in ordine alfabetico i nostri valori.
Qui le cose si complicano un pò, ma non fatevi spaventare. Assegniamo la seguente azione:

on (release) {
    ordina="";
    lunghezza= myArry.length;
    myArry.sort();
    for (p=0; p
        ordina += myArry[p]+newline;
    }
    ordinati="si";
    myArry.splice(0);
    w=0;
}

Analizziamo il funzionamento.
- Per prima cosa svuotiamo il campo di testo "ordina" con:

ordina="";


- Poi assegniamo, alla variabile "lunghezza" , il numero dei valori contenuti nell'array, tramite la proprietà length (che dipende da quante parole abbiamo inserito):

lunghezza= myArry.length;

- Nella terza riga, applichiamo l'azione che più ci interessa, cioè ordiniamo alfabeticamente i valori dell'array.
Per esempio, se abbiamo immesso i valori "farfalla" , "albero" e "casa" , il nostro array sarà:

myArry[0]="farfalla";
myArry[1]="albero";
myArry[2]=;"casa";

Mentre dopo aver applicato myArry.sort(), risulterà:

myArry[0]="albero";
myArry[1]="casa";
myArry[2]="farfalla";

N.B l'array ha tre valori, ma l'indice arriva fino a 2 perchè parte da 0.

- Successivamente procediamo con il riempimento del nostro campo di testo "ordina":

for (p=0; p
        ordina += myArry[p]+newline;
    }

che significa: partendo da p=0, aumenta "p" di 1 (p++), fino a raggiungere la "lunghezza" (p

Poi con:

ordina += myArry[p]+newline;

aggiungiamo i valori dell'array ordinato al nostro campo di testo "ordina".

- Per ultimo assegniamo "si" alla variabile "ordinati" , azzeriamo l'array e azzeriamo l'indice "w". Questo ci permetterà di immettere nuovi valori per un successivo ordinamento.

ordinati="si";
 myArry.splice(0);
 w=0;

N.B. splice(x) è una funzione degli array che permette di eliminarne i valori a partire da quello indicato con "x" (nel nostro caso x=0).


Risultato finale

Ecco come risulterà il nostro "ordinatore" di valori:


scarica il .fla
di questa lezione



Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Luca
Ti è piaciuto l'articolo?