La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

monodimensionali: Vettori bidimensionali: Matrici

Presentazioni simili


Presentazione sul tema: "monodimensionali: Vettori bidimensionali: Matrici"— Transcript della presentazione:

1 monodimensionali: Vettori bidimensionali: Matrici
Array Precisazioni monodimensionali: Vettori bidimensionali: Matrici

2 int [,] numeri = new int[n,m];
1° step DICHIARAZIONE: dimensionamento e allocazione in memoria centrale int [,] numeri = new int[n,m];

3 int [,] numeri=new int[n,m];
Significato ed errori …. Se n e m esistono (supponiamo 3 e 5) allora … la matrice esiste ed è allocata cliccando sull’apposito simbolo l’editor di C# ci mostra il contenuto della matrice. Ovviamente nasce vuota (poi viene popolata). NOTARE gli indici!!! il valore massimo per le righe è 2 cioè n-1 il valore massimo per le colonne è 4 cioè m-1

4 POPOLAMENTO: la matrice viene popolata, caricata, riempita:
int [,] numeri=new int[n,m]; Significato ed errori …. Se n e m esistono (supponiamo 3 e 5) allora … 2° step POPOLAMENTO: la matrice viene popolata, caricata, riempita: assegnamento input randomizzazione Ecco come l’editor di C#, in fase di debug, mostra la stessa matrice popolata.

5 int [,] numeri=new int[n,m]; ERRORE TIPICO (!)
Se n e m NON esistono … per esempio PRIMA dichiaro e POI acquisisco n ed m ... ed il tentativo di toccare la matrice darebbe l’errore INDEX OUT OF RANGE la matrice verrebbe allocata così … … cioè? Non ha senso!!! OVVIAMENTE, dato che gli indici ammessi sono 0 e 0 non possiamo toccare NULLA.

6 idem con i vettori int [ ] colonne=new int[m]; supponiamo abbia m elementi , come le colonne della matrice (m era 5) … Utilizziamo il DEBUG: interruzioni (F9) esecuzione passo passo F11 prima dell’ F11 dopo l’esecuzione, l’array esiste, ha 5 elementi tutti = 0 NOTARE gli indici!!! il valore massimo l’indice è 4 m-1 Array durante il caricamento

7 accesso alle strutture dati
3° step Lavorare per colonna significa bloccare o muovere più lentamente la colonna stessa. Nell’es. la colonna resta a 0 e la riga passa da 0 a 5. Il ciclo sulle colonne scorre più lentamente: quindi è quello esterno (0,1,2 … verde, rosa, azzurro..) Il ciclo sulle righe è più veloce ed è all’interno di quello sulle colonne. esterno, più lento, arriva ad m (escluso) quindi è per le colonne … infatti! Es. caricamento per colonna (randomizzato)

8 accesso alle strutture dati
Lavorare per riga significa bloccare o muovere più lentamente la riga stessa. Nell’es. la riga resta a 0 e la colonna passa da 0 a 5. Il ciclo sulle righe scorre più lentamente: quindi è quello esterno (0,1,2 … verde, rosa, azzurro..) Il ciclo sulle colonne è più veloce ed è all’interno di quello sulle colonne. esterno, più lento, arriva ad n(escluso) quindi è per le righe… infatti! Es. visualizzazione per riga

9 accesso alle strutture dati
Se si conoscono le coordinate di una cella è possibile accedere (cioè prelevare, modificare, visualizza, memorizzare..) al valore di una cella direttamente, senza cicli, precisando riga e colonna di riferimento. In viola vediamo numeri[1,2]. Attenzione agli out of range !!

10 accesso alle strutture dati
Es. visualizzazione diretta Per evitare errori, possiamo gestire la comunicazione o controllare gli indici Attenzione agli out of range !!

11 accesso alle strutture dati
Se vogliamo sommare tutti gli elementi di una certa riga NON servono 2 cicli perché il numero di riga resta fisso. Lo stesso vale se la colonna è fissa. Es. somma dei valori dell’ultima riga … e non n se no provochiamo un out of range

12 usiamo gli strumenti del DEBUG!!
Controllo i valori delle variabili … Contatori, indici, array e matrici … tutto!

13 usiamo gli strumenti del DEBUG!!
Verifico immediatamente cos’è successo e intervengo. Qui …? n=3 e m=5 dove gli el. ammessi sono 3 : 0,1,2 e 5: 0,1,2,3,4 quindi ENTRAMBE sono out of range


Scaricare ppt "monodimensionali: Vettori bidimensionali: Matrici"

Presentazioni simili


Annunci Google