Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una...
Transcript of Variabili e costanti Tipi di dato Casting Operatori Commenti e … · 2018-11-18 · dichiara una...
•Variabili e costanti•Tipi di dato•Casting•Operatori•Commenti e documentazione
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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)
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)
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
The local variable a may not have been
initialized
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)
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
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)
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)
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)
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)
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)
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)
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
c cannot be resolved to a variable
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)
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)
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.
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
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
tipi di dato
primitivi
numerici
interivirgola mobile
carattere booleani
riferimento
array classi
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)
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)
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)
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.
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.
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
Tipo Dimensione Valori
boolean 1 bit True/false
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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.
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)
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)
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)
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)
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)
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)
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)
= > < ! ~ ?:
== <= >= != && || ++
+ - * / & | ^ % << >> >>>
+= -= *= /= &= |= ^= %= <<= >>= >>>=
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
Java consente un utilizzo speciale degli
operatori, + e += possono essere usati per
concatenare stringhe.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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)
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)
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)
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)
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)
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)
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)
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)
Costruire la tavola di verità, facendo uso
degli operatori.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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)
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)
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)
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)
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)
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)
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)