Conclusa l’analisi e l’uso dei metodi, ci accingiamo ad analizzare alcune strutture dati molo utili nella programmazione: i vettori e le matrici. I vettori I vettori (o array) sono delle particolari strutture che consentono di memorizzare valori dello stesso tipo richiamabili tramite un nome ed un indice. A prima vista tale definizione è un po’ forviante ma come vedremo, in pratica, il concetto risulta più semplice di quanto si pensi. Faccio subito un esempio. Prendiamo come modello il registro di un insegnante; come sappiamo c’è l’elenco dei nominativi, per esempio, della classe 4° A ordinati alfabeticamente e numerati in ordine crescente:
non c’è dubbio è una bella classe, ma, a parte gli illustri alunni, possiamo, guardando la tabella, trarre delle considerazioni:
Queste tre considerazioni ci consentono di creare una struttura dati che può essere gestita da codice C#, tramite cioè un vettore. Vediamo per prima cosa come si dichiara un vettore in C#, questa è la sintassi: tipo[] nome_vettore = new tipo[dim];dove:
Alla luce di quanto detto, possiamo strutturare il nostro array relativo all’esempio della classe 4°A. Per prima cosa bisogna definire il tipo di dati che il nostro array deve contenere. In questo caso si può affermare che l’array dovrà contenere delle stringhe che rappresenteranno il cognome ed il nome dell’alunno, quindi di tipo string. La seconda questione è dare un nome all’array e potremmo dare il nome Classe_4A. A questo punto il nostro array è parzialmente definito e nulla ci vieta di suddividere la dichiarazione in due parti distinte, la prima parte: string[] Classe_4A;dichiara un array di tipo string chiamato Classe_4A e rappresenta una dichiarazione ma non crea nessun array perché è necessario l’operatore new. Prima di procedere con la seconda parte, è necessario stabilire quanti elementi deve contenere, in questo esempio, la dimensione è 25. Quindi adesso si può passare alla seconda parte la quale crea letteralmente l’array cioè, predispone una quantità idonea di memoria del PC affinché possa contenere i nostri dati (alunni); in codice: Classe_4A = new string[25];ora il vettore esiste e lo possiamo utilizzare all’interno del nostro programma. E’ d’obbligo una precisazione riguardo all’indice. Nel registro di un insegnante, la numerazione degli alunni parte, come è ovvio, dal numero 1 per poi proseguire fino a fine elenco. Nei vettori le cose stanno un po’ diversamente nel senso che la numerazione degli elementi in esso contenuti inizia da 0 cioè, gli elementi sono "numerati" da 0 a dim-1. Nell’esempio del vettore Classe_4A, gli elementi sono numerati da 0 a 24, quindi se vogliamo fare riferimento all’elemento che si trova nella 5° posizione, dovremo indicarlo con la posizione 4 (che rappresenta appunto il 5° elemento). E’ bene ora mettere mano al codice per vedere in funzione il nostro array. Con un semplice programmino faremo in modo che l’array venga popolato (caricato) con i nominativi della nostra classe. Ci limiteremo ad inserire solo i primi cinque e successivamente li visualizzeremo sul monitor. Questo è il codice:
e questa una prova di esecuzione: Analisi del codice Alla riga 8 viene dichiarata una variabile stringa alunno che conterrà il nominativo dell’alunno che via via verrà inserito nel vettore. Alla riga 11 compare la dichiarazione del vettore chiamato Classe_4A. Ricordo che la dichiarazione non crea il vettore ma dichiara solo la variabile adibita al suo contenuto. Alla riga 14 viene effettivamente creato il vettore tramite l’operatore new e che conterrà al massimo 5 elementi di tipo stringa. Alla riga 17 è stato impostato un ciclo for che ci consente di inserire i 5 nominativi tramite l’istruzione di riga 21, alla riga 22 tale nominativo viene effettivamente inserito nel vettore indicizzato dall’indice i del ciclo. Quindi ad ogni iterazione, il vettore viene popolato con il nominativo inserito a partire dalla posizione 0 fino alla 4. Al termine dell’inserimento, alla riga 28, sempre tramite un ciclo for identico al precedente, viene stampato ogni elemento del vettore a partire sempre dalla posizione 0 fino alla 4. Si noti che, nel secondo ciclo for, non compaiono le parentesi graffe che delimitano il blocco di codice perché il costrutto for è composto da un'unica istruzione che rende superfluo l’uso delle parentesi. Il programmino precedente non ha molta utilità pratica se non quella di mostrare come viene dichiarato ed utilizzato un semplice array di stringhe. Nella prossima lezione, "giocheremo" con un vettore in un programmino che ci permetterà di generare una sequenza casuale di numeri per il SuperEnalotto. |