mercoledì 12 aprile 2017

Ordinare una lista alfabeticamente (Mit App Inventor 2)

Tra i vari limiti di Mit App Inventor 2, c'è aimè il fatto che non è possibile ordinare le liste (lists).
Questo in realtà è vero in parte, dato che sì, non esiste una funzione di default che ordina una lista, tuttavia niente ci vieta di crearla, no?

Online sono presenti diverse soluzioni/esempi per ordinare alfabeticamente una lista app inventor, io ne ho trovata tempo fa una, e l'ho riadattata per farla funzionare non solo le liste con valori numerici, ma anche per quelle contenenti delle stringhe di testo.

Ordinare una lista alfabeticamente (Mit App Inventor 2)

Come ordinare una lista alfabeticamente in Mit App Inventor 2


Per poter ordinare una lista in ordine alfabetico su app inventor, occorre crearsi un'apposita funzione.
Bisognerà infatti fare diversi cicli ed utilizzare dei controlli per verificare se ogni singolo elemento della lista, è maggiore o minore (a seconda dell'ordinamento scelto) di quello presente nella posizione precedente all'elemento confrontato.
In buona sostanza, si inizia a sfogliare la lista e si verifica la prima coppia di valori, e nel caso il confronto non soddisfi l'ordinamento scelto, si va ad utilizzare la funzione sostituisci (replace) delle liste, abbinato ad alcune varibiali temporanee da valorizzare durante i vari loop della funzione.

Questa è una di quelle cose che si capisce più facilmente provandola e guardando il codice, piuttosto che spiegandola a parole, quindi fate prima a scaricare la funzione presente in questo progetto .aia, che ripeto, è un riadattamento di una funzione trovata online, applicata ad una piccola e semplice app di prova.

Ordinare lista app invetor

Nell'esempio che ho creato, ci sono due liste app inventor, una numerica ed una con dei nomi.
Si potrà scegliere quale delle due liste ordinare, e se ordinarle in ordine crescente o decrescente.

Come dicevo un po' più sopra, rispetto alla funzione originale, ho aggiunto il controllo Se è un numero (is a number), che consente di gestire delle liste sia numeriche che di testo.

I parametri da passare alla funzione ordinalista sono sostanzialmente due: la lista da ordinare, ed una variabile booleana vero o falso (true o false), dove vero rappresenta l'ordine crescente, mentre falso rappresenta l'ordine decrescente.

L'unico limite di questa funzione app inventor 2, è che, se volete ordinare delle liste con valori alfanumerici, da trattare come se fossero dei punteggi (ad esempio di un gioco), dovrete prima normalizzare questi elementi, facendoli tutti di lunghezza uguale, altrimenti l'ordinamento risulterà sfalsato a seconda della lunghezza dell'elemento analizzato (lo dico per esperienza, dopo aver dovuto ordinare delle liste contenenti i punteggi codificati di un gioco che ho creato).

Tornare all'elenco delle lezioni

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon