Corso di Java

(senza pretese)

Lezione tre: operatori


Operatori

Gli operatori sono da dividersi principalmente in due tipi: operatori aritmetici e operatori logici.
I primi agiscono su valori aritmetici (in casi particolari anche su oggetti, come nel caso dei confronti), mentre i secondi operano su espressioni logiche che hanno come termini dei valori booleani. Vediamo qui sotto una tabella con i vari operatori e esempi che mostrano come usarli (e i risultati che danno).


Nome dell'
operatore
Come si scrive A che cosa serve
Assegnamento = Serve per assegnare (appunto) un valore ad una variabile.
Es:
x=1;
nome="Pippo";
acceso=false;
Somma + Serve ad addizionare il contenuto di variabili.
Es:
x = 3+y;
chi_sei = "Donald "+"Duck";
Sottrazione - Serve per sottrarre un numero da un altro (nel caso si intenda come operatore binario) oppure a negare un numero (usato come operatore unario).
Es:
x = 3-y;
m = -4;
Moltiplicazione * Come in aritmetica
Divisione / Come in aritmetica
Modulo % Operatore utilissimo in molti casi. Restituisce il resto di una divisione.
Es:
10%3=1

È molto comodo per implementare funzioni che devono scegliere tra un certo numero di opzioni in maniera autonoma. Ad esempio se si deve scegliere una opzione a caso tra 3 possibilità, è possibile creare in modo random un numero e poi applicare l'operatore % seguito da 3, e in questo caso gli unici risultati saranno numeri da zero a due (e quindi tre diversi valori in generale).
Incremento ++ Incrementa di uno la variabile a cui si riferisce.
Es:
x++;
Se la variabile è stata inizializzata a zero, dopo questa operazione x vale uno, se era 1 dopo vale 2 e così via...
Decremento -- Sottrae uno alla variabile a cui si riferisce.

Per semplificare un po' le cose, è possibile usare alcuni operatori in combinazione con quello di assegnamento per rendere più "snella" una porzione di codice. Nella tabella sottostante potete vedere come funzionano.

Operatore Spiegazione
+= Es:
x+=9;
Questa scrittura sta per x=x+9; ovvero aumenta se stessa di nove. Da notare che x+=1 e x++ si equivalgono.
-= Es:
x-=9;
Questa scrittura sta per x=x-9; ovvero diminuisce se stessa di nove. Da notare che x-=1 e x-- si equivalgono.
*= Es:
x*=9;
Questa scrittura sta per x=x*9; ovvero moltiplica se stessa per nove.
/= Es:
x/=9;
Questa scrittura sta per x=x/9; ovvero divide se stessa per nove.

Adesso passiamo agli operatori che ci permettono di eseguire dei confronti tra variabili:

Nome dell'
operatore
Come si scrive A che cosa serve
Maggiore > Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x>5)
{ //istruzioni}
significa che se x è maggiore di 5 si eseguono le istruzioni
Maggiore o uguale >= Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x>=5)
{ //istruzioni}
significa che se x è maggiore o uguale a 5 si eseguono le istruzioni
Minore < Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x<5)
{ //istruzioni}
significa che se x è minore di 5 si eseguono le istruzioni
Minore o uguale <= Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x<=5)
{ //istruzioni}
significa che se x è minore o uguale a 5 si eseguono le istruzioni
Uguale = = Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x= =5)
{ //istruzioni}
significa che se x è uguale a 5 si eseguono le istruzioni. Inoltre può essere usato per tutti gli oggetti, stando ben attenti che il tipo di entrambi sia lo stesso, altrimenti scattano gli errori!
I due segni di uguale devono essere attaccati, io qui li ho messi separati perché altrimenti avrebbero potuto generare dubbi, in quanto visualizzati come un solo uguale ma 'lungo'!
Diverso != Serve per confrontare le grandezze.
Ad esempio questo codice:
if (x!=5)
{ //istruzioni}
significa che se x è diverso da 5 si eseguono le istruzioni. Vale anche per gli altri tipi di oggetti.

Adesso ci rimangono gli operatori logici. Ricordatevi che questi operatori lavorano con i valori booleani true e false.
(Notate che questi valori a volte possono essere indicati anche come 0 [false] e 1 [true].

Nome dell'
operatore
Come si scrive A che cosa serve
AND logico && AND logico. Restituisce il valore true solo se tutte le condizioni sono true.Una espressione del tipo
if ( (x>0)&&(x<5) )
{ //istruzioni }

fa in modo che le istruzioni vengano eseguite solo se ENTRAMBE le condizioni sono TRUE. Ecco qui sotto due tabelle di verità per l'AND logico tra due variabili (la prima usa true e false, la seconda 0 e 1):
Var1 Var2 Var1 AND Var2
false false false
false true false
true false false
true true true
Var1 Var2 Var1 AND Var2
0 0 0
0 1 0
1 0 0
1 1 1
AND & AND. Il risultato è lo stesso ottenuto con l'AND logico, solo che , per la natura dell'AND, se la prima condizione è false, le altre non vengono analizzate (tanto il risultato sarebbe comunque false).
OR logico || OR logico. Restituisce il valore true (oppure 1) se almeno una delle condizioni è verificata. Ecco le due tabelle di verità:
Var1 Var2 Var1 OR Var2
false false false
false true true
true false true
true true true
Var1 Var2 Var1 OR Var2
0 0 0
0 1 1
1 0 1
1 1 1
OR | I risultati sono gli stessi dell'OR logico, solo che nel caso la prima espressione sia true le altre non vengono calcolate (tanto il risultato sarebbe comunque true).
XOR (o OR esclusivo) ^ OR esclusivo o XOR. Restituisce true (o 1) solo nel caso che le due variabili abbiano valori differenti. Ecco le tabelle di verità:
Var1 Var2 Var1 XOR Var2
false false false
false true true
true false true
true true false
Var1 Var2 Var1 XOR Var2
0 0 0
0 1 1
1 0 1
1 1 0
Come potete vedere guardando la tabella con i valori numerici, questo operatore può essere utilizzato per fare dei controlli di parità, poichè produce 1 solo nel caso che ci siano un numero dispari di variabili che valgono 1
NOT logico (o negazione) ! Produce il valore inverso di quello assegnato alla variabile. Ecco le tabelle:
Var1 !Var1
true false
false true
Var1 !Var1
1 0
0 1

Come avete visto gli operatori aritmetici fanno le stesse cose che fanno nella vita di tutti i giorni, così come succede se si confrontano due valori. L'unica cosa che potrebbe risultare nuova è l'utilizzo degli operatori logici, benché anche essi vengano utilizzati ogni giorno. L'unico "problema" è il fatto che non vengono chiamati esplicitamente con i loro nomi; pensate infatti a questa frase: "Se piove e devo uscire allora prendo l'ombrello" e confrontatela con questo codice:
if ( (piove==true)&&(uscire==true) )
{
ombrello=1;
}

Non significano forse la stessa cosa? Certo, non è che possiamo metterci a parlare così... (tuttavia a volte mi capita di pensare in questo modo...ma forse è un problema di noi studenti di ingegneria! :-D Se capita anche a voi vuol dire che ancora il cervello non mi ha dato di balta!).
Ok, questo mi sembra abbastanza per questa volta, e mi raccomando, puntuali al prossimo aggiornamento!

Prossima pagina

Indice Webdesign