lug 01

19. Array bidimensionali: Matrici

Categoria: Senza categoria

Visite 181

Guadagna denaro contante con il tuo sito web!

Nel capitolo precedente abbiamo iniziato il discorso sugli array monodimensionali, chiamati anche vettori. Abbiamo visto come, strutturalmente, il vettore possa essere accumunato ad una lista, che gode di alcune proprietà. Nell’ultimo capitolo della guida, ovvero questo, parleremo degli array bidimensionali o anche conosciute come Matrici. Nel capitolo vedremo come strutturalmente appaiono le matrici, e come si utilizzano. Parleremo poi delle logiche che sono alla base dei principali algoritmi sulle matrici.

19. Array bidimensionali: matrici

Voglio iniziare il nostro cammino nelle matrici, dando la definizione:

Def: Una matrice è un insieme di dati dello stesso tipo organizzati in una griglia. Ogni elemento della griglia è caratterizzato da due indici (riga e colonna). Es:

riga colonna

1 1 1 2 1 3 1 4
2 1 2 2 2 3 2 4
3 1 3 2 3 3 3 4

Nell’esempio sovrastante (la tabella), abbiamo realizzato graficamente una matrice che ha come elementi, le posizioni delle celle. Ogni elemento, infatti, è contenuto in una cella che è caratterizzata da due indici: l’indice riga e l’indice colonna. E’ chiaro, quindi, che un solo ciclo for non basterà per scorrere o lavorare su una matrice. Ne serviranno due. L’area della matrice è calcolata come l’area del rettangolo, e ci dirà quanti elementi potrà contenere. Vediamo ora le operazioni principali su una matrice e la loro struttura logica. Per gli algoritmi, come nel caso degli array, rimando all’appendice.

Dichiarazione

Essendo una matrice, dovremo dichiarare due dimensioni. Quindi:

Dichiaro Mat [riga][colonna] : tipo

Vi ricordo sempre che il contatore parte da 0. Quindi una matrice 4*3 avrà, in realtà, queste posizioni:

0 0 0 1 0 2 0 3
1 0 1 1 1 2 1 3
2 0 2 1 2 2 2 3

Questo accade nella stragrande maggioranza dei linguaggi, anche se alcuni fanno eccezione alla regola (tra i quali Visual Basic).

Assegnazione

Per assegnare 1 1 alla cella 1 1 faremo così:

Mat [1][1] = “1 1″

Per riempire tutta la matrice, utlizzeremo l’algoritmo di inserimento che è il seguente:

INIZIO

Chiedi (riga)
Chiedi (colonna)

Dichiaro Mat1[riga][colonna] : stringa

For (i=0; i<riga; i++)
{
For (j=0; j<riga; j++)
{
Mat1[i][j] = “Elemento”
}
}

FINE

Algoritmo di ricerca

Come nei vettori, anche le matrici hanno l’algoritmo di ricerca, che viene spesso utlizzato. Alla base dell’algoritmo di ricerca c’è un confronto. Ciò che dobbiamo fare noi, con questo algoritmo, è cercare un determinato elemento in un array. Quindi con un ciclo for scorreremo tutto il vettore e, ad ogni posizione, controlleremo se l’elemento c’è oppure no. Questo, generalmente si può controllare con un IF. Ma tutta la ricerca la si può fare anche con un while. Tuttavia per un maggiore ordine si preferisce spesso utilizzare FOR e IF insieme.

Una volta trovato l’elemento possiamo fare ciò che vogliamo. Salvarne la posizione, contarne le occorrenze ecc… Per l’algoritmo si rimanda all’appendice.

Chiudo qui il capitolo conclusivo della guida alla programmazione. A breve verranno pubblicate le appendici e l’ultimo capitolo, quello conclusivo della guida. Per ogni problema, indicazione o richiesta, lasciaci un commento.

Tags:

Lascia un commento