Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una...

61
Variabili e costanti Tipi di dato Casting Operatori Commenti e documentazione Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Polistena (RC)

Transcript of Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una...

Page 1: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

•Variabili e costanti•Tipi di dato•Casting•Operatori•Commenti e documentazione

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 2: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

All‟interno di un programma, le variabilicostituiscono l‟elemento base per lamemorizzazione dei dati ed il mantenimento delleinformazioni, In Java, le variabili si definisconocombinando un tipo, un identificatore edopzionalmente un parametro di inizializzazione:Tipo identificatore [= inizializzazione;EsempioInt a = 5;non è necessario assegnare un valore allavariabila nel momento in cui si dichiara:Int a;

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 3: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Java a differenza di C/C++, richiede che unavariabile venga sempre inizializzata prima di poteressere utilizzata. Il seguente codice produce unerrore di compilazione:int a;System.out.println(a);Il testo dell‟errore sara:“The local variable a may not have been initialized”

Più variabili dello stesso tipo possono esseredichiarate nel corso di una medesima istruzione,utilizzando la virgola come separatore.int a, b, c;

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 4: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

The local variable a may not have been

initialized

Page 5: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Le costanti sono speciali variabili il cui contenuto, unavolta assegnato, non può essere modificato.Esempiofinal int COSTANTE = 5;

Se si vuole modificare il valore della costantegenerando un codice scorretto esempio:final int COSTANTE = 5;COSTANTE = 3;viene generato il seguente messaggio di errore:

“The final local variable COSTANTE cannot be

assigned. It must be blank and not using a compound

assignment”

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 6: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

The final local variable costante cannot be

assigned. It must be blank and not using a

compound assignment

Page 7: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

In realtà, le variabili final non sono dellecostanti nel senso più stretto del termine, inquanto possono essere inizializzatedinamicamente e non solo letteralmente. Lacosa più corretta sarebbe quella dietichettarle come variabili di sola lettura.Considerando che ad oggi Java non disponedi altri meccanismi utili per creare costantinel senso più restrittivo del termine, tenendoa mente quanto sopra riportato può essereesteso il concetto di costante, così comedescritto in precedenza.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 8: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Le variabili, cosi come le costanti, hannoun loro “ciclo di vita”. Nascono nelmomento in cui vengono dichiarate,divengono pronte all‟utilizzoimmediatamente dopo l‟inizializzazione e“muoiono” non appena escono dal loroambito di visibilità (validità). Gli ambiti divisibilità, a livello basilare sonostrettamente collegati all‟impiego deiblocchi di istruzioni.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 9: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Esempio

public class EsempioAmbiti {public static void main(String[] args) {int a = 5;int b = 3;int c = a + b;System.out.println(c);}

}Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 10: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Le tre variabili a, b, c, appartengono al

blocco denominato main, in quanto sono

state dichiarate al suo interno. Fin quando

il flusso di esecuzione percorre le

istruzioni racchiuse in questa porzione di

programma, i riferimenti a, b, c possono

essere liberamente impiegati.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 11: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Esempio “variabile al di fuori del suo ambito di validità (visibilità):public class EsempioAmbiti {

public static void main(String[] args) {

int a = 5;

int b = 3;

{int c = a + b;

}

System.out.println(c); /* Errore la variabile si trova al di * fuori del suo ambito di validità */

}}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 12: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Esempio “variabile al di fuori del suo ambito di validità (visibilità):public class EsempioAmbiti {

public static void main(String[] args) {

int a = 5;

int b = 3;

{int c = a + b;

}

System.out.println(c); /* Errore la variabile si trova al di * fuori del suo ambito di validità */

}}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 13: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

c cannot be resolved to a variable

Page 14: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Viene fornita (copiare, salvare e compilare) la seguente classe:public class NumeroIntero{

public int numeroIntero;public void stampaNumero(){

System.out.println(numeroIntero);}

}Questa classe definisce il concetto di numero interocome oggetto. In essa vengono dichiarati una variabile(ovviamente) intera ed un metodo che stamperà lavariabile stessa.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 15: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Scrivere, compilare ed eseguire una classe che:

• istanzierà almeno due oggetti dalla classe NumeroIntero (contenente

ovviamente un metodo main()),

• cambierà il valore delle relative variabili e testerà la veridicità delle

avvenute assegnazioni, sfruttando il metodo stampaNumero();

• Aggiungerà un costruttore alla classe NumeroIntero, che inizializzi la

variabile d‟istanza.

Domande:

1. A che tipologia di variabili appartiene la variabile

numeroIntero definita nella classe NumeroIntero?

2. Se istanziamo un oggetto della classe NumeroIntero,

senza assegnare un nuovo valore alla variabile

numeroIntero, quanto varrà quest‟ultima?

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 16: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Ad ogni variabile corrisponde un identificatore, vale a dire un nome, che può essere

impiegato per richiamare ed utilizzare la variabile dopo che questa è stata dichiarata ed

inizializzata. Gli identificatori, per essere reputati validi, devono rispettare alcune regole.

Per prima cosa si ricorda che Java è un linguaggio case-sensitive: nomeVariabile,

NomeVariabile, NOMEVARIABILE, NomeVARIABILE e tutte le possibili varianti sono nomi che

identificano elementi distinti.

Gli identificatori possono essere costituiti da una sequenza qualsiasi di lettere minuscole o

maiuscole, numeri, trattini di sottolineatura e simboli del dollaro. Non possono, però,

cominciare con un numero. I seguenti identificatori sono validi:

cont Test VariabileProva $aux c3 a_prima

I prossimi, al contrario, sono incorretti:

2aux variabile-prova %perc

La sintassi di Java, inoltre, riserva 52 parole (Tabella 1), che non possono essere impiegate

come identificatori.

Page 17: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Tabella 1

abstract default if private throw

assert do implements protected throws

boolean double import public transient

break else instanceof return true

byte enum int short try

case extends interface static void

catch final long strictfp volatile

char finally native super while

class float new switch

const * for null syncronized

continue goto * package this

* Parole riservate attualmente non utilizzate da

java

Page 18: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

tipi di dato

primitivi

numerici

interivirgola mobile

carattere booleani

riferimento

array classi

Page 19: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Java è un linguaggio tipizzato. Ad ogni tipo corrispondono un

insieme di valori possibili ed una serie di funzionalità utili per

manipolare gli elementi di tale insieme. I valori numerici

dispongono di funzioni utili per il calcolo matematico, le stringhe

godono di utilità per la manipolazione del testo, le date possono

sfruttare delle procedure pensate appositamente per gli intervalli

temporali e così via. Tutto ciò implica una netta ed esplicita divisione

tra i valori di un tipo e quelli di un altro, che mai possono essere

confusi o impiegati in maniera promiscua. I primi dati soggetti a

questa norma sono le costanti letterali. 5 è un intero di tipo int, 5.12 un

numerico a virgola mobile di genere double, 'c' un carattere della

categoria char, "ciao" una stringa e così via. In secondo luogo, anche le

espressioni possiedono un tipo. Le espressioni, sono combinazioni di

valori ed operatori, che lavorano insieme per calcolare un risultato:

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 20: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

5 + 3

Questa espressione, ad esempio, è di tipo int, ossia calcola un risultato numerico intero

appartenente a tale insieme di dati.

5 + 1.12

Questa, invece, è un'espressione di tipo double. Esistono alcune regole, che saranno

discusse nel dettaglio successivamente, che consentono di prevedere il tipo associato ad

una espressione, analizzando il dominio di appartenenza di ciascun suo elemento.

Le variabili e le costanti risentono delle regole di tipizzazione imposte da Java. Quando si

dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

un certo tipo, di conseguenza, non potrà memorizzare dati appartenenti ad una categoria

distinta. Tutte le variabili dichiarate int, ad esempio, non potranno far altro che tener

traccia di valori int.

int a = 5; // Corretto, 5 è un dato int

int b = "Ciao"; // Sbagliato, "Ciao" è una stringa

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 21: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Java, teoricamente, dispone di un illimitato numero di tipi. La

programmazione orientata agli oggetti permette la definizione di nuove

categorie di dati, da sommare a quelle incorporate nel linguaggio e a quelle

prodotte e distribuite da terzi. Le classi non sono altro che dei modelli per la

definizione di nuovi tipi, che il programmatore può utilizzare e riutilizzare a

proprio vantaggio. Nonostante questo, è bene fare distinzione tra tipi

predefiniti (detti altrimenti tipi valore o tipi base) e tipi personalizzati (detti

anche tipi riferimento o semplicemente classi). Java dispone di otto tipi

predefiniti, destinati alla rappresentazione dei valori numerici interi, dei

numerici a virgola mobile, dei caratteri e dei booleani. Le stringhe,

contrariamente a quanto si può credere durante un primo approccio, non

fanno parte dei tipi predefiniti. Ad esse è dedicata un'apposita classe,

contenuta nei pacchetti base della piattaforma. In Java, le stringhe sono degli

oggetti.

Ai valori numerici interi sono destinati i quattro tipi riportati in tabella 2.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 22: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Tipo Dimensione Intervallo

byte 8 bit da - 128 a 127

short 16 bit da - 32.768 a 32767

int 32 bit da - 231 a - 231 - 1

long 64 bit da - 263 a - 263 - 1

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Scegliere quale tipo numerico intero impiegare, è semplice questione di

esigenze. Il più utilizzato è int, che dispone di un intervallo adatto alla

maggior parte dei casi. Il tipo byte è impiegato soprattutto quando si devono

manipolare dei dati riposti in file binari (come le immagini ed i campioni

sonori), che notoriamente sono suddivisi in blocchi di 8 bit ciascuno (8 bit =

1 byte). Il tipo long, che consuma molta memoria ma che copre un intervallo

veramente vasto, è usato soprattutto in relazione alle date e agli intervalli

temporali espressi in millisecondi.

Page 23: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Tipo Dimensione Precisione

float 32 bit Fino a 7 cifre dopo la

virgola (singola precisione)

double 64 bit fino a 16 cifre dopo la

virgola (doppia precisione)

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

I due domini si differenziano per la precisione con la quale possono effettuare calcoli

in virgola mobile. Il tipo float, benché meno dispendioso di risorse, garantisce

precisione sufficiente per un numero non elevato di cifre decimali. Per questo motivo,

è impiegato soprattutto in applicazioni finanziarie, per la rappresentazione delle

valute. I valori in Euro o in Dollari, infatti, di rado si spingono oltre i centesimi. Il tipo

double, invece, garantisce un maggiore margine di precisione, e per questo ben si

adatta alle applicazioni matematiche e scientifiche. Non a caso, molte delle

funzionalità matematiche incorporate nei pacchetti base di Java lavorano

espressamente con i valori double.

Page 24: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Tipo Dimensione Descrizione

char 16 bit Rappresenta un carattere

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Per rappresentare più di un carattere si utilizzano le “stringhe”, che non

sono un tipo predefinito, ma una classe String.

Esempio:

char lettera = „a‟; \\ ammesso un solo carattere

String nome = “Carlo”; \\ ammessi una successione di caratteri

Per la rappresentazione dei caratteri java utilizza la codifica Unicode, e non

la codifica ASCII

Page 25: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Tipo Dimensione Valori

boolean 1 bit True/false

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 26: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Sequenza Significato

\' Apice singolo

\" Apice doppio

\\ Barra retroversa

\r Ritorno a capo

\n Nuova riga

\f Avanzamento modulo

\t Tabulazione

\b Backspace

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Alcuni caratteri che non possono essere digitati, vengono rappresentati

attraverso le sequenze di escape.

Page 27: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

La coercision (o promozione) è unaconversione che il linguaggio, in determinaticasi, può eseguire automaticamente. InTabella 7 sono riportate le conversioniimplicite valide per i tipi predefiniti.Questo tipo di conversione automaticaavviene quando non vi è perdita di dati,esempio si converte un tipo da dimensionipiù piccole a dimensioni più grandi (da inta float).

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 28: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Tipo Conversione

byte short, int, long, float, double

short int, long, float, double

int long, float, double

long float, double

float double

double nessuna conversione implicita ammessa

char int, long, float, double

boolean nessuna conversione implicita ammessa

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 29: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

La conversione da un tipo più grande ad

un tipo più piccolo, poiché potrebbe

esserci una perdita di dati non avviene

automaticamente (esempio da float a int),

per far questo bisogna indicare

esplicitamente la volontà di farlo. In java

l‟operazione che permette di fare ciò

prende il nome di casting, ossia la

conversione esplicita.Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 30: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Il casting è il meccanismo che consente al

programmatore di indicare la conversione

da un tipo ad un altro tipo.

Esempio:

int a = 5;

byte b = (byte) a;

float f = 2.5;

int i = (int) f;Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 31: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Il Parsing, permette la conversione da

“stringa” a tipi primitivi.

Esempi:

int i = Integer.parseInt("55") ;

long l = Long.parseLong("924358725") ;

float f = Float.parseFloat("3.14") ;double d = Double.parseDouble("7.123434534");

boolean b = Boolean.parseBoolean("true");

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 32: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Conversione da stringhe a caratteri (String -> char)Per ottenere un caratterere di una stringa si usa il metodo .charAt(int

posizione). Questo metodo restituisce il carattere nella posizione

specificata. Attenzione che la prima posizione è 0.

String s = "pippo" ; // prendo il primo carattere (posizione 0)

char c1 = s.charAt(0) ;

int lunghezza = s.length() ;

char c2 = s.charAt(lunghezza - 1) ;

// prendo l'ultimo caratterere (ultima posizione = lunghezza

stringa meno uno)

I metodi .length() e .charAt() sono metodi della classe String

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 33: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori sono i caratteri speciali cheidentificano particolari operazioni sui dati. Unoperatore elabora una o più argomenti eproduce un nuovo valore. Gli argomenti sonoin forma diversa da quella di una comunechiamata di metodo, ma l‟effetto è identico.Quasi tutti gli operatori funzionano soltantocon i tipi primitivi; le eccezioni sono costituiteda “=“, “==“ e “!=“, che funzionano con tuttigli oggetti e possono essere fonte diconfusione. Inoltre la classe String supporta“+” e “+=“.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 34: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

= > < ! ~ ?:

== <= >= != && || ++

+ - * / & | ^ % << >> >>>

+= -= *= /= &= |= ^= %= <<= >>= >>>=

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 35: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

AssegnazioneL‟assegnazione viene eseguita mediante l‟operatore =,questa operazione significa prendere il valore sul latodestro, spesso indicato come rvalue, e copiarlo nel latosinistro, spesso chiamato lvalue.Esempio:A = 4;In fase di chiamata di un metodo si fa ricorsoall’Aliasing per cui per fare un operazione diassegnazione si procede nel seguente modo:y.c= ‘z’;Dove c e una variabiale di tipo char ed y è un metododefinito in precedenza.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 36: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori matematici di base sono gli

stessi disponibili nella maggior parte dei

linguaggi di programmazione: somma (+),

sottrazione (-), divisione (/),

moltiplicazione (*) e modulo (%). Da

considerare che la divisione tra interi

tronca il risultato.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 37: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Incremento e decremento automaticoJava dispone di semplificazioni per rendere ilcodice di più facile digitazione, che però puòrisultare più o meno difficile da leggere.Le due semplificazioni più interessanti riguardanogli operatori di autoincremento (++) e diautodecremento (--).Esempio:Se a è un int l‟espressione ++a equivale a (a=a+1).Questi operatori non si limitano a modificare lavariabile, ma producono come risultato il valoredella variabile stessa.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 38: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Incremento e decremento automatico

Esistono due versioni per ogni tipo di

operatore, spesso denominate suffisse e

postfisse.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 39: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori relazionali produno unrisultato booleano valutando la relazionetra i valori degli operandi. Un‟espressionerelazionale produce true (vero) se larelazione è vera e false (falso) se larelazione e falsa. Gli operatori relazionalisono minore di (<), maggiore di (>),minore o uguale (<=), maggiore o uguale(>=>, equivalente a (o uguale a , ==),diverso da (o non equivalente !=).

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 40: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

I tre operatori logici AND (&&) OR (||) e

NOT (!) producono un valore boolean, true

o false in base alla relazione logica tra gli

argomenti.

Questi operatori possono essere usati solo

con valori boolean.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 41: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori bit a bit o bitwise consentono dimanipolare singoli bit nei tipi interi primitivi edeseguono operazioni booleane sui bitcorrispondenti nei due argomenti per produrre ilrisultato.L‟utilizzo di tali operatori deriva dalla necessita dimanipolare direttamente l‟hardware e impostare ibit nei registri hardware (programmazione a bassolivello).L‟utilizzo di questi operatori è stato concepito inquanto alcuni decoder TV sono stati programmatiin Java. In generale in Java l‟utilizzo degli operatoribit a bit non è diffuso.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 42: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori bitwise sono: AND (&) che restituisce 1 nel bit di

output se entrambi i bit di input valgono1 (uno); altrimenti 0 (zero).

OR (|) che restituisce 1 (uno) nel bit dioutput se entrambi i bit se uno dei duebit di ingresso vale 1 (uno) e restituisce0 (zero) se entrambi i bit valgono 0

(zero). XOR od OR esclusivo (^), restituisce 1 se

solo uno dei due bit di ingresso vale 1. NOT (~) detto anche operatore di complemento a uno,e di tipo unario a differenza dei precedenti che erano ditipo binari. L’operatore bit a bit NOT (~) restituiscel’opposto del bit di input, 1 se il bit di input e 0, e 0 se ilbit di input è 1.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 43: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Gli operatori di spostamento o di scorrimento(shift operator) consentono di manipolare anche ibit, e sono utilizzabili esclusivamente con tipiprimitivi interi.L‟operatore di scorrimento a sinistra (<<) sposta asinistra i bit dell‟operando sinistro, per un numerodi posizioni pari al numero di bit specificatodall‟operando a destra dell‟operatore, inserendovalori 0 nei bit di ordine più basso.L‟operatore di scorrimento a destra (>>) sposta adestra i bit dell‟operando sinistro, per un numerodi posizioni pari al numero di bit specificatodall‟operando a destra dell‟operatore.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 44: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

L‟operatore ternario if-else, è atipico poichési serve di tre operandi.Si tratta di un operatore e non di un costruttoquando esso produce un valore.L‟espressione assume la seguente forma:

Boolean-exp ? Value0 : value1Se boolean-exp vale true, viene valutatovalue0 e il suo risultato diventa il valoreprodotto dall‟espressione. Invece se boolean-exp è false, viene valutato value1 e il suorisultato diventa il valore prodottodall‟espressione.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 45: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Java consente un utilizzo speciale degli

operatori, + e += possono essere usati per

concatenare stringhe.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 46: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

All‟interno dei programmi Java possono

essere inserite frasi contenenti commenti o

annotazioni del programmatore, con le

quali è possibile documentare il significato

delle variabili o della costante utilizzate

oppure la funzione svolta da una parte del

programma.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 47: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

In Java vi sono tre forme per rappresentare icommenti. Commento di riga, utilizza i caratteri //,

tutto wuello che viene scritto dopoquesti caratteri e sulla stessa riga èconsiderato un commento , quindi non faparte del codice.

Questa modalità viene usata per i commentibrevi, esempio:

int eta; // dichiarazione di una variabile intera

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 48: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

In Java vi sono tre forme per rappresentare i commenti. Commenti di sezione, la sua forma è la seguente:/* …….

………… */

Tutto il testo compreso tra i caratteri di inizio /* e quelli ditermine */ sono considerati un commento. Questa formaconsente di dividere il testo su più righe, per esempio:

/* commento che occupapiù righe */

Ai programmatori questa forma oltre che ad inserire commentisu più righe può essere utile nel caso in cui si voglia provareun programma escludendo momentaneamente una parte dicodice.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 49: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

In Java vi sono tre forme per rappresentare i commenti. Commento di documentazione, la cui forma è la seguente:/** …. */Rappresenta un commento di documentazione è può essereusato prima di dichiarare una classe o un metodo. Questaforma di documentazione è importante perché vienericonosciuta dagli strumenti per la generazione automaticadella documentazione dei programmi.

Esempio:/** Funzione per calcolare il MCD tra due numeri */Public void calcolaMCD(int a, int b){// istruzioni}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 50: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

L‟uso frequente delle frasi di commentodeve diventare un‟abitudine delprogrammatore fin dai primi sempliciesercizi: in questo modo possono esserecostruiti programmi che siautodocumentano, e che possono esserecompresi e letti facilmente a distanza ditempo, anche da persone diverse dalprogrammatore che ha scritto ilprogramma.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 51: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Scrivere un programma in java che

converta:

Un numero di tipo float dato in input da

tastiera, in un numero di tipo int;

la prima lettera di una stinga

data in input da tastiera in un char;

l‟ultima lettera di una stinga

data in input da tastiera in un char;

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 52: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Dato il seguente codicepublic classe Equivalence.java{

public static void main(String[] args){

Integer n1 = new Integer(47);Integer n2 = new Integer(47);System.out.println(n1 == n2);System.out.println(n1 != n2);

}}

Cosa produce in output il programma?

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 53: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Un programma acquisisce da tastiera in

due variabili di tipo String il nome ed il

cognome di una persona. Il programma

deve restituire in output le due variabili

concatenate.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 54: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Costruire la tavola di verità, facendo uso

degli operatori.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 55: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Realizzare un programma che calcola il

quoziente e il resto della divisione intera,

utilizzando gli operatori / e %

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 56: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Realizzare un programma che calcola il

quoziente e il resto della divisione intera,

non utilizzando gli operatori / e %

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 57: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Di seguito viene listata una classe che aderisce ai requisiti richiesti:

public class ClasseRichiesta{

public static void main (String args []){NumeroIntero uno = new NumeroIntero();NumeroIntero due = new NumeroIntero();uno.numeroIntero = 1;due.numeroIntero = 2;uno.stampaNumero(); due.stampaNumero(); }

}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 58: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

Inoltre un costruttore per la classe NumeroIntero potrebbe impostare l‟unica variabile d‟istanza numeroIntero:

public class NumeroIntero{

public int numeroIntero;public NumeroIntero(int n){numeroIntero = n;}

public void stampaNumero(){System.out.println(numeroIntero);}

}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 59: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

In tal caso, però, per istanziare oggetti dalla classeNumeroIntero, non sarà più possibile utilizzare il costruttore didefault (che non sarà più inserito dal compilatore). Quindi laseguente istruzione produrrebbe un errore in compilazione:NumeroIntero uno = new NumeroIntero();Bisogna invece creare oggetti passando al costruttoredirettamente il valore della variabile da impostare, peresempio:NumeroIntero uno = new NumeroIntero(1);Risposte alle due domande:1. Trattasi di una variabile d‟istanza, perché dichiarataall‟interno di una classe, al di fuori di metodi.2. Il valore sarà zero, ovvero il valore nullo per una variabileintera. Infatti, quando si istanzia un oggetto, le variabilid‟istanza vengono inizializzate ai valori nulli, se nonesplicitamente inizializzate ad altri valori.

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 60: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

L’istruzione System.out.println (n1 == n2)

visualizza il risultato del confronto booleano

posto all’interno delle parentesi. Il

programma produce in output prima false e

poi true. Il risultato non deve sorprendere in

quanto ad un’attenta analisi il confronto con

gli operatori == e != viene fatto non sui

contenuti ma sui riferimenti, ed essi sono

diversi, mentre il contenuto è identico.Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)

Page 61: Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una variabile, è necessario specificare il tipo ad essa associato. Una variabile di

package algebra;

public class Div{/** divisione intera per sottrazioni successive */

public static int div(int a, int b){

if( a == 0 || a < b )return 0;

return div( a-b, b ) + 1;}

/** restodelladivisioneintera */public static int mod(int a, int b){

if( a == 0 )return 0;

if( a < b )return a;

return mod( a-b, b );}

}

Autore: Prof. Agostino Sorbara

ITIS "M. M. Milano" Polistena (RC)