Ed eccoci ritornati nel corso Java, che ho fermato per un po’ di tempo per favorire alcuni progetti in corso nel blog.
Ora possiamo ricominciare.
Il corso base lo abbiamo praticamente finito nello scorso articolo dove abbiamo visto tutta la terza forma principale della programmazione, ovvero la forma iterativa.
Bene. Dopo questa parte ora siamo quasi pronti per passare alla OOP. Ma prima ci mancano delle piccole nozioni e senza queste è impossibile capire i prossimi concetti.
Un consiglio è quello di andare a vedere tutto il corso base se per caso non lo avete ancora letto oppure avete bisogno di rivedere alcune cose dimenticate, perché senza i concetti precedenti è impossibile capire questi.
Oggi vedremo i vettori.
Abbiamo visto nel corso base, che esiste un tipo di variabile chiamata primitiva, ovvero che riesce a contenere un solo valore.
Es:
[java]
int a = 1;
float b = 2.2;
// ecc…
[/java]
Questo tipo di variabile è molto comoda se si devono fare piccole operazioni, gestire cicli o condizionali e altre attività del genere. Ma se si devono conservare più valori? Ad esempio 100 valori?
Quello che è possibile fare con le variabili primitive è questo:
[java]
import java.util.Scanner;
public class Valori{
Scanner sc = new Scanner(System.in);
public static void main (String[] args){
int a, b,c, //……;
System.out.println("Inserisci il primo valore");
a = sc.nextInt();
// ripetiamo questa operazione fino a scrivere 100 valori numerici, cambiando di volta in volta l’identificatore della variabile
}
}
[/java]
Questo è a dir poco scomodo non trovate? Senza pensare che bisognerebbe scrivere centinaia di righe di codice, si perderebbe un sacco di tempo inutilmente e il programma scritto sarebbe molto più lento e poco ottimizzato.
Per questo motivo, gli array o vettori sono importantissimi.
Eh si, ho scritto array. I vettori sono della famiglia degli array, sono un tipo di array. I vettori è la forma più semplice degli array. Questo perché un vettore è composto da una sola colonna e gli altri tipi di array ne hanno di più.
Lo so, non ci avrai capito nulla. Vediamo insieme di capirlo meglio.
I vettori
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Questa è la composizione di un vettore. Dobbiamo pensare ai vettori o agli array a delle tabelle con tante celle. In ogni cella c’è un valore. I vettori hanno soltanto una colonna, ma possono contenere tutte le celle che si vuole. Non ha importanza.
Le celle sono numerate, per capire in quale punto del vettore si deve andare a scrivere un determinato valore. Ad esempio se dovessi scrivere il numero 5 nella seconda cella, la vado a scrivere nella cella numero 1. Questo perché il conteggio delle celle, come anche il conteggio del contatore di un ciclo, parte sempre da 0 e mai da 1. Quindi qui ci sono 10 celle, che partono da 0 e arrivano a 9.
Vediamo di mettere alla prova un vettore e di capire la sintassi, come si scrive nel linguaggio di programmazione.
[java]
int a[] = new int[10];
[/java]
Allora int è il tipo di variabile.
a è l’identificatore della variabile
[] è per far capire al compilatore che questo è un vettore
= operatore di assegnamento
new il new lo abbiamo usato molte volte e serve per liberare lo spazio necessario nella memoria RAM per poter contenere le varie celle del vettore.
int qui inseriamo nello spazio di memoria generato dalla keyword new i valori int. Praticamente inizializziamo lo spazio. Il tutto poi lo fa il compilatore e la JVM.
[10] è il numero di celle del vettore che si deve specificare.
Da notare che i vettori possono essere creati non soltanto di tipo int, ma anche di tipo char, double, float e tutti gli altri tipi che abbiamo visto nel corso base.
Il procedimento è lo stesso.
La variabile String in realtà è una classe (come abbiamo detto in precedenza negli scorsi articoli), ma è anche un vettore. Infatti con questa variabile è possibile aggiungerci tutte le lettere che si vogliono, formando anche intere frasi. Il bello di String è che il processo di memorizzazione lo fa in automatico tramite alcuni metodi (li vedremo prossimamente) specifici.
I vettori, ma comunque tutti i tipi di array, si devono gestire con dei cicli (solitamente il più comodo e il più usato è il ciclo for), in quanto se si dovesse fare il procedimento manuale di scrittura per ogni cella del vettore, ci impiegheremo 2 righe per ogni cella. Con un ciclo, 3 righe totali.
Vediamo insieme:
[java]
Scanner sc = new Scanner(System.in);
int a[] = new int[10];
System.out.println("Inserisci i numeri nel vettore");
//Scrittura nel vettore
for(int i = 0; i < 10; i++){
a[i] = sc.nextInt();
}
// Lettura del vettore
for (int i = 0; i < 10; i++){
System.out.println(a[i]);
}
[/java]
Allora qui ho aggiunto sia il ciclo per la scrittura del vettore, che quello per la lettura del vettore, per stampare a video i valori contenuti nel vettori.
Allora per la scrittura nel vettore, il concetto è molto semplice. Il contenuto della parentesi tonda non lo spiego in quanto l’ho già fatto nel corso base.
All’interno della parentesi graffa c’è una sola istruzione.
Vediamo di capirne la sintassi e la logica.
a Identificatore del vettore
[i] Tra queste parentesi quadre è specificata la cella del vettore in cui si deve andare a scrivere. Il numero della cella è data dalla variabile contatore del ciclo. La variabile contatore i è stata inizializzata a zero, posta una condizione, ovvero che il suo valore, durante l’esecuzione del ciclo, non dovrà mai superare il valore 10, ma dovrà essere sempre minore (quindi al massimo potrà arrivare al valore 9), come il numero massimo delle celle presenti in questo vettore.
Quindi al primo ciclo di iterazione la variabile contatore è a zero e quindi si scrive il valore nella prima cella del vettore.
Al secondo ciclo di iterazione, la variabile contatore è a uno e quindi si scrive il valore nella seconda cella del vettore e così via.
La variabile i fa da segnalino della cella del vettore.
= Operatore di assegnamento
sc.nextInt(); Questa parte è appartenente alla classe scanner, già spiegata nel corso base.
Per il ciclo di lettura del vettore il concetto è il medesimo, soltanto che qui, tramite la println si stampano i valori presenti nel vettore.
Vediamo cosa succede eseguendo questo piccolo programma.
Inserisci i numeri nel vettore
2
3
100
22
33
44
55
66
5
2222
I numeri inseriti sono:
2
3
100
22
33
44
55
66
5
2222
Direi che i numeri combaciano alla grande.
Quindi si è capito che i vettori sono un elemento nella programmazione praticamente importantissimo e in molti casi essenziale. Infatti con una sola variabile è possibile memorizzare tutti i numeri che si vogliono e questa è una gran cosa.
Bene con questo è tutto per oggi 🙂 Vi aspetto al prossimo articolo.