La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.

Presentazioni simili


Presentazione sul tema: "1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast."— Transcript della presentazione:

1 1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast

2 2 Espressione Un’espressione in generale è una “combinazione” di operatori, di operandi (valori o variabili) e di parentesi tonde, e produce (restituisce) un valore di un certo tipo Ad esempio: - ((a+b+c)/(p-y))*k - ((a+3)*b)-4*c *a+1.34/b dove a, b, c, p, y e k sono variabili di tipo numerico; +, -, /, * sono gli operatori di somma, sottrazione, divisione e moltiplicazione

3 3 Ancora sull’operatore ‘=‘… Si è in precedenza visto che l’operatore di assegnamento ‘=‘ permette di assegnare il valore ad una variabile: = ; Dal momento che un’espressione restituisce un valore, si può anche scrivere: = ; Dove è un’espressione che restituisce un valore dello stesso tipo della variable identificata da. può anche essere data da un’unica variabile.

4 4 Ancora sull’operatore ‘=‘… … in conclusione ad una variabile, tramite l’operatore ‘=‘, si può assegnare:  un valore esplicito = ;  il valore di un’espressione = ;  il contenuto di un’altra variabile = ;

5 5 Ancora sull’operatore ‘=‘… … siccome l’operatore ‘=‘ ha in genere precedenza più bassa rispetto a qualsiasi altro operatore significa che nell’istruzione: = ; prima viene valutato il valore di e poi questo valore viene assegnato alla variabile indicata a sinistra di ‘=‘. Il seguente codice: int x=1; x=x+1; System.out.println(“x=“+x); stampa la stringa “x=2” e va a capo

6 6 Ancora sull’operatore ‘=‘… Esempio: public class AreaTriangolo { public static void main(String arg[]) { int base; int altezza; int areaTriangolo; base=200;//Assegno un valore esplicito altezza=base;//Assegno una variabile /*Assegno l’espressione (in questo caso aritmetica)che fornisce l’area del triangolo*/ areaTriangolo=(base*altezza)/2; System.out.println(“Area=“+areaTriangolo); }

7 7 Gli operatori Un operatore è un simbolo che regola l’esecuzione di un’espressione e che restituisce un valore che dipende dal tipo di operandi su cui agisce e dal tipo di operatore stesso. Un operatore può essere:  unario  richiede un solo operando  binario  richiede due operandi  ternario  richiede tre operandi

8 8 Gli operatori (notazioni) Indicato con OP un operatore qualsiasi e con op1 e op2 due operandi qualsiasi, si ha che:  gli operatori unari utilizzano la:  notazione prefissa se l’operatore appare prima dell’operando, ad esempio  OP op1  notazione postfissa se l’operatore appare dopo l’operando, ad esempio  op1 OP  gli operatori binari utilizzano la notazione infissa in cui l’operatore appare tra i due operandi, ad esempio  op1 OP op2

9 9 Precedenze tra operatori Gli operatori possono essere combinati in espressioni complesse e hanno una precedenza che determina l’ordine in cui vengono valutati (eseguiti). Gli operatori con la stessa precedenza vengono valutati da sinistra a destra. L’ordine di precedenza può essere modificato utilizzando le parentesi tonde.

10 10 Precedenze tra operatori Esempi di espressioni aritmetiche in cui moltiplicazione e divisione hanno la precedenza su somma e sottrazione: a+b+c+d  prima viene valutata a+b, poi si aggiunge ad a+b il valore di c e poi si aggiunge ad a+b+c il valore di d a+b*c+d/e  prima viene valutata b*c, poi d/e, poi viene sommato il contenuto di a al risultato di b*c. Infine al risultato di a+b*c viene aggiunto il risultato di d/e. L’ordine di valutazione (e il risultato) cambierebbe se si scrivesse  (a+b)*(c+d)/e

11 11 Tipi di operatori Gli operatori si possono suddividere in:  aritmetici  aritmetici di incremento/decremento  di assegnamento (qualcosa è stato già visto…)  relazionali (…nella prossima lezione)  logici (…nella prossima lezione)  bit a bit (che non vedremo…)

12 12 OperatoreDescrizioneUsoSignificato +Sommaop1+op2 Somma il valore di op1 a quello di op2 -Sottrazioneop1-op2 Sottrae il valore di op2 a quello di op1 *Moltiplicazioneop1*op2 Moltiplica il valore di op1 con quello di op2 /Divisioneop1/op2 Divide il valore di op1 con quello di op2 %Moduloop1%op2 Calcola il resto della divisione tra op1 e op2 - Negazione aritmetica -op1 Trasforma il valore di op1 nel corrispondente di segno opposto Operatori aritmetici Validi per operandi di tipo intero e in virgola mobile

13 13 Operatori aritmetici Ad esempio il seguente codice: int x, y, z; x=3; y=10; z=y%x;//Modulo System.out.println(“Resto=“+z); z=-x;//Negazione aritmetica System.out.println(“Opposto=“+z); stampa a video: Resto=1 Opposto=-3 e va a capo.

14 14 OperatoreDescrizioneUsoSignificato ++ Incremento di 1 in notazione prefissa ++op1 Incrementa op1 di 1 e valuta il valore dell’espressione dopo aver incrementato ++ Incremento di 1 in notazione postfissa op1++ Incrementa op1 di 1 e valuta il valore dell’espressione prima aver incrementato -- Decremento di 1 in notazione prefissa --op1 Decrementa op1 di 1 e valuta il valore dell’espressione dopo aver incrementato -- Decremento di 1 in notazione postfissa op1-- Decrementa op1 di 1 e valuta il valore dell’espressione prima aver incrementato Operatori aritmetici di incremento/decremento Validi per operandi di tipo intero

15 15 Ad esempio il seguente codice: int x, y; x=3; y=++x//Incremento prefisso System.out.println(“x=“+x+” y=“+y); x=3; y=x++;//Incremento postfisso System.out.println(“x=“+x+” y=“+y); stampa a video: x=4 y=4 x=4 y=3 e va a capo. Operatori aritmetici di incremento/decremento L’effetto delle espressioni ++x e di x++ è identico dal punto di vista del contenuto della variabile x che quindi diventa 4 in entrambi i casi. La differenza tra le due notazioni sta nel diverso valore restituito dalle due espressioni ++x e x++. Nel primo caso è 4 e nel secondo è 3.

16 16 … analogo discorso per il decremento: int x, y; x=3; y=--x//Decremento prefisso System.out.println(“x=“+x+” y=“+y); x=3; y=x--;//Decremento postfisso System.out.println(“x=“+x+” y=“+y); stampa a video: x=2 y=2 x=2 y=3 e va a capo. Operatori aritmetici di incremento/decremento L’effetto delle espressioni --x e di x-- è identico dal punto di vista del contenuto della variabile x che quindi diventa 2 in entrambi i casi. La differenza tra le due notazioni sta nel diverso valore restituito dalle due espressioni --x e x--. Nel primo caso è 2 e nel secondo è 3.

17 17 Espressioni di shortcut per incremento Operatori aritmetici di incremento/decremento Forma estesaShortcut Risultato dell’esecuzione int x=0; int y; y=x; x=x+1 ; int x=0; int y; y=x++; x=1 y=0 int x=1; int y; x=x+1 ; y=x; int x=0; int y; y=++x; x=1 y=1 Attenzione! Nell’incremento in notazione postfissa l’operatore di assegnamento ‘=‘ ha quindi la precedenza su ++

18 18 Espressioni di shortcut per decremento Operatori aritmetici di incremento/decremento Forma estesaShortcut Risultato dell’esecuzione int x=1; int y; y=x; x=x-1; int x=1; int y; y=x--; x=0 y=1 int x=1; int y; x=x-1 ; y=x; int x=1; int y; y=--x; x=0 y=0 Attenzione! Nel decremento in notazione postfissa l’operatore di assegnamento ‘=‘ ha quindi la precedenza su --

19 19 Precedenza degli operatori aritmetici Precedenze degli operatori aritmetici:  massima precedenza  pre-incremento ++, pre-decremento --, negazione aritmetica -  media precedenza  post-incremento ++ e post-decremento --  bassa precedenza  moltiplicazione *, divisione / e modulo %  minima precedenza  somma + e sottrazione –

20 20 OperatoreIstruzioneSignificato = = ; …già visto! += += ; = + -= -= ; = - *= *= ; = * /= /= ; = / %= %= ; = % Operatori di assegnamento

21 21 Il cast dei dati Si è detto che il valore da assegnare ad una variabile deve essere del suo stesso tipo. Cosa succede dunque se si tenta di assegnare ad una variabile di un tipo un valore di tipo diverso? Il cast rappresenta l’operazione di conversione di tipo ed è consentito tra tipi primitivi (ad esempio tra int e float). Il cast può essere:  implicito  avviene automaticamente in quanto è un’operazione sicura che non comporta perdita di informazione  esplicito  avviene ad opera del programmatore che forza la conversione anche a costo di una perdita di informazione

22 22 Il cast dei dati Il cast implicito avviene automaticamente quando ad una variabile di tipo “più alto” viene assegnato un valore di tipo “più basso”. Ad esempio: float f; int x=10; f=x; I tipi primitivi numerici possono essere ordinati dal “più basso” al “più alto” nel modo seguente: byte  short  int  long  float  double Il valore di x (10) viene automaticamente convertito in floating point  10.0 e quindi assegnato alla variabile f

23 23 Il cast dei dati Il cast esplicito deve essere esplicitato (anteponendo, al valore da assegnare, il tipo scritto tra parentesi tonde) quando ad una variabile di tipo “più basso” viene assegnato un valore di tipo “più alto”. Ad esempio: int x; double d=3.6; x=(int)d; I tipi primitivi numerici possono essere ordinati dal “più basso” al “più alto” nel modo seguente: byte  short  int  long  float  double Il valore di d (3.6) viene “a forza” convertito in intero  3 e quindi assegnato alla variabile x


Scaricare ppt "1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast."

Presentazioni simili


Annunci Google