Slide da eCampus Università su Fondamenti di Informatica. Il Pdf è una presentazione di Informatica di livello universitario che illustra gli operatori aritmetici, relazionali, logici e bit a bit in Java, con tabelle riassuntive e spiegazioni dettagliate.
Mostra di più8 pagine


Visualizza gratis il Pdf completo
Registrati per accedere all’intero documento e trasformarlo con l’AI.
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria Fondamenti di Informatica Operatori
Trascrizione Prof. Giuseppe Tradigo giuseppe.tradigo@uniecampus.it
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 1e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria Operatori
Facciamo ora una breve disamina degli operatori che si possono utilizzare nella codifica di espressioni Java.
Gli operatori possono essere classificati come: aritmetici - sono operatori dedicati al calcolo di valori di tipo numerico; relazionali - sono operatori dedicati al confronto di valori; logici - sono operatori dedicati al calcolo di valori di verità tra operandi di tipo binario; bit a bit - sono operatori che servono ad effettuare modifiche di tipi numerici a livello dei bit.
Oltre a questi esiste l'operatore assegnamento e l'operatore ternario che permette di realizzare in modo sintatticamente molto conciso operazioni condizionate.
La padronanza di tali operatori permette di progettare algoritmi in modo molto preciso ed efficace. In particolare gli operatori sono utilizzati in special modo per la progettazione delle condizioni sui cicli o per l'aggiornamento di variabili.
Gli operatori aritmetici del linguaggio Java sono riassunti nella seguente tabella:
Tabella 1 - operatori aritmetici del linguaggio Java.
| Tipo operatore | Nome operatore | Simbolo | Unario | Binario |
|---|---|---|---|---|
| negazione | ✓ | |||
| somma | + | ✓ | ||
| differenza | - | ✓ | ||
| assegnamento | = | ✓ | ||
| uguaglianza | == | ✓ | ||
| autoincremento | ++ | ✓ | ||
| autodecremento | -- | ✓ |
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 2e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria
| prodotto | * | ✓ |
|---|---|---|
| divisione | / | ✓ |
| modulo | % | ✓ |
Gli operatori negazione, autoincremento e autodecremento sono unari perché accettano un solo parametro. Si noti come non è presente nell'elenco l'operatore di elevamento a potenza che esiste ed è presente in alcuni linguaggio, ma non in Java. È importante dire che gli operandi degli operatori aritmetici in Java possono essere solo tipi primitivi. Fa eccezione l'operatore assegnamento che può essere utilizzato per qualsiasi tipo. Inoltre, il simbolo di somma (+), quando compare tra due stringhe, funziona come un operatore di concatenamento di stringhe di caratteri.
Se invece volessimo ordinare gli operatori per precedenza, potremmo individuare quattro gruppi con diverse priorità:
Tabella 2 - classi di priorità degli operatori aritmetici (da sinistra a destra precedenza maggiore a minore).
| Precedenza massima | Precedenza minima |
|---|---|
| negazione (-) | |
| autoincremento (++) | |
| autodecremento ( -- ) | |
| prodotto (*) | |
| divisione (/) | |
| modulo (%) | |
| somma (+) | |
| differenza (-) | |
| assegnamento (=) | |
| confronto ( == ) |
Quelle mostrate in tabella sono classi di precedenza, per cui operatori che stanno nella stessa classe di precedenza vengono considerati nell'ordine di scrittura in cui appaiono nel codice sorgente. In particolare, quelli a precedenza maggiore, vengono valutati (o calcolati) prima rispetto a quelli a precedenza minore.
Ad esempio, un operatore di autoincremento verrà valutato prima rispetto ad un operatore di prodotto, perché appartiene ad una classe con precedenza più alta (vedi Tabella 2). Fra prodotto e divisione, invece, non c'è precedenza essendo gli operatori appartenenti alla stessa classe di precedenza, quindi verranno valutati seguendo l'ordine in cui sono stati scritti dal programmatore nell'espressione scritta nel codice Java.
C2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 3e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria
Seguendo la regola appena descritta, nel valutare una espressione, Java valuterà prima gli operatori che hanno una precedenza più elevata, il che ci permette di scrivere le espressioni aritmetiche secondo le normali regole algebriche cui siamo abituati, in modo analogo a come facciamo manualmente.
Inoltre, gli operatori +, -, * / e % sono associativi a sinistra (left associative), cioè, quando appaiono in una espressione insieme ad operatori dello stesso livello, vengono raggruppati nell'ordine in cui appaiono, da sinistra a destra.
Naturalmente, come accade nell'aritmetica cui siamo abituati, è possibile sovrascrivere la precedenza di default degli operatori racchiudendo parti dell'espressione fra parentesi tonde.
Fra l'altro, in Java, le uniche parentesi utilizzabili in espressioni sono quelle tonde, a differenza di quello a cui siamo abituati con le equazioni aritmetiche in cui si possono utilizzare anche le parentesi quadre e graffe.
Si possono aprire un numero arbitrario di parentesi, a patto che esse siano poi tutte chiuse alla fine dell'equazione.
L'operatore negazione è un operatore unario, perché, a dissimilmente dagli operatori somma, differenza o prodotto, lavora su un singolo operando, di cui inverte il segno.
L'operatore di modulo "%" ci permette di calcolare, qualora ne avessimo bisogno, il resto della divisione intera tra l'operando di sinistra e quello di destra.
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 4e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria
Uno degli usi più frequenti (ma non è l'unico) dell'operatore modulo è il test per sapere se una data variabile intera contiene un valore pari o dispari. Questo perché ci ricordiamo dall'aritmetica elementare che dividendo qualsiasi numero pari per 2, otterremo un resto pari a 0, mentre la medesima operazione con un numero dispari restituirà come resto 1.
Gli operatori relazionali hanno anch'essi una precedenza associata, riportata in Tabella 3 in ordine decrescente di precedenza.
Tabella 3 - precedenza degli operatori relazionali
| Massima precedenza | Minima Precedenza |
|---|---|
| maggiore di (>) | |
| minore di (<) | |
| maggiore o uguale di (>=) | |
| minore o uguale di ( <= ) | |
| uguale a ( == ) | |
| diverso da ( != ) |
Si noti come l'operatore di uguaglianza " == " sia diverso dall'operatore di assegnamento "=". Gli operatori relazionali riportati nella colonna di sinistra possono confrontare fra loro solo variabili aventi come tipi dei tipi numerici primitivi (ad es. int, float, char, byte).
Gli operatori riportati nella seconda colonna possono confrontare anche booleani e oggetti come, per ad esempio gli array. In quest'ultimo caso però bisogna ricordarsi che non viene con frontato il contenuto, bensì se un oggetto o una variabile array è uguale a un'altra, e cioè se condividono lo stesso spazio di memoria (puntano allo stesso spazio di memoria quindi sono la stessa variabile), oppure se l'oggetto o l'array è uguale (o diverso) da null.
Gli operatori logici si utilizzano per concatenare tra loro valori booleani o per negare un valore booleano.
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co)- C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 5e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria
| Massima precedenza | Nome | Simbolo | |
|---|---|---|---|
| NOT | ! | ||
| AND | & | ||
| XOR | ^ | ||
| OR | | | ||
| AND short circuit | && | ||
| OR short circuit | | | | | |
| Minima precedenza |
Nella tabella mostrata vengono riportati gli operatori logici ordinati per ordine di precedenza.
L'operatore NOT (!) è un operatore unario ed infatti lavora su un solo operando. Restituisce false se l'operando vale true e true se l'operando vale false.
L'operatore AND (&) è un operatore binario che ha due operandi booleani e restituisce true se gli operandi hanno entrambi valore true, altrimenti restituirà false.
L'operatore XOR (^), che sta per eXclusive OR, ovvero OR esclusivo, ed è un operatore binario che ha due operandi booleani e restituisce true se solo uno dei due vale true, false se entrambi hanno lo stesso valore.
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 6e CAMPUS UNIVERSITÀ
Corso di Laurea: Ingegneria Informatica Insegnamento: Fondamenti di Informatica Numero lezione: 22 Titolo: Operatori Ingegneria
L'operatore OR (|), o OR inclusivo, è anch'esso un operatore binario che ha due operandi booleani come i precedenti e restituisce true se almeno uno dei due operandi vale true. Restituisce false se entrambi gli operandi valgono false.
Tutte le proprietà degli operatori logici appena visti sono riepilogate nella tabella di verità che segue:
| a (operando 1) | b (operando 2) | AND (&) | XOR (^) | OR (|) | NOT (!) |
|---|---|---|---|---|---|
| false | false | false | false | false | true |
| true | false | false | true | true | false |
| false | true | false | true | true | true |
| true | true | true | false | true | false |
Dove l'operatore NOT si intende applicato al primo operando (il che è ovvio essendo un operatore unario).
Oltre a quelli visti finora, esistono anche altri operatori logici, cosiddetti short circuit (corto circuito). Vediamo come funzionano.
Gli operatori AND short circuit (&&) e OR short circuit (||) si basano sull'osservazione che spesso, mettendo in AND o OR due operatori booleani, è possibile conoscere il risultato dell'espressione anche guardando soltanto il primo valore.
Se ad esempio consideriamo due valori booleani in AND, se il primo operando ha valore false, possiamo evitare di controllare il valore del secondo operando, perché indipendentemente dal suo valore, il risultato sarà sempre false.
C 2007 - 2016 Università degli Studi eCampus - Via Isimbardi 10 - 22060 Novedrate (Co) - C.F. 9002752130 - Tel: 031.79421 - Fax: 031.7942501 - Mail: info@uniecampus.it 7