per l'ordinamento si può usare anche un algoritmo come il caro vecchio Bubblesort
Molto interessante.
Mi permetto solo di apportare una nota per perfezionare il tuo codice: poiché la variabile di tipo array è in sostanza un Puntatore all'Oggetto del tipo array, puoi eliminare la variabile Globale "rrii", riducendola a variabile automatica "locale" e passandola così "per Indirizzo" alla sotto-procedura "Bubblesort( )".
la variabile che funge da
Puntatore a un
Oggetto sovente è definita "
Handle " (maniglia), che significa "
una variabile associata a un oggetto complesso, che lo identifica". La
maniglia è la protuberanza con la quale interagisci con l'Oggetto. In gambas, qualsiasi Oggetto (form, o altro) è in sostanza un "
Handle ".
Tale sotto-procedura - che così diventa una vera e propria "Funzione" (poiché ritorna "per Indirizzo" un valore alla procedura chiamante) - assumerà, dunque, il seguente suo prototipo:
Public Function Bubblesort(risul As RISULTATI[ ])
La funzione chiamante ovviamente passerà, come suo unico parametro attuale, la variabile vettoriale di tipo della Struttura, come segue:
....e in modo egualmente evidente riceverà "per Indirizzo" una Struttura (la medesima che è stata passata, ma ora con i valori modificati dei suoi membri).
E' appena il caso di ricordare che il passaggio di valori "per Indirizzo" a una sotto-procedura/funzione, non crea una copia dell'Oggetto, o comunque del tipo, passato, come avviene invece nel passaggio "per Valore", ove si va ad occupare un'altra area di memoria (per generare la copia) di dimensioni pari a quella occupata dall'Oggetto (o dal tipo di valore) passato.
Va da sé che con il passaggio "per Valore", avendo due copie uguali, avremo due indirizzi di memoria che si riferiscono ovviamente a due aree di memoria riservate automaticamente di uguale dimensione, ...e quindi un consumo doppio delle risorse (ossia della memoria necessaria per il passaggio dei dati).
Il passaggio "per Indirizzo" fa in modo che la modifica avvenga direttamente ...all'indirizzo di memoria dell'Oggetto (o del tipo di valore) passato. Quindi non si crea una copia e non si deve così occupare altra memoria per il medesimo dato da passare.