Le basi del linguaggio Java – parte prima

•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 variabili
costituiscono
l‟elemento
base
per
la
memorizzazione dei dati ed il mantenimento delle
informazioni, In Java, le variabili si definiscono
combinando un tipo, un identificatore ed
opzionalmente un parametro di inizializzazione:
Tipo identificatore [= inizializzazione;
Esempio
Int a = 5;
non è necessario assegnare un valore alla
variabila 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 una
variabile venga sempre inizializzata prima di poter
essere utilizzata. Il seguente codice produce un
errore 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 essere
dichiarate 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)
The local variable a may not have been
initialized
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
Le costanti sono speciali variabili il cui contenuto, una
volta assegnato, non può essere modificato.
Esempio
final int COSTANTE = 5;
Se si vuole modificare il valore della costante
generando 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)
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)
In realtà, le variabili final non sono delle
costanti nel senso più stretto del termine, in
quanto
possono
essere
inizializzate
dinamicamente e non solo letteralmente. La
cosa più corretta sarebbe quella di
etichettarle come variabili di sola lettura.
Considerando che ad oggi Java non dispone
di altri meccanismi utili per creare costanti
nel senso più restrittivo del termine, tenendo
a mente quanto sopra riportato può essere
esteso il concetto di costante, così come
descritto in precedenza.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
Le variabili, cosi come le costanti, hanno
un loro “ciclo di vita”. Nascono nel
momento in cui vengono dichiarate,
divengono
pronte
all‟utilizzo
immediatamente dopo l‟inizializzazione e
“muoiono” non appena escono dal loro
ambito di visibilità (validità). Gli ambiti di
visibilità,
a
livello
basilare
sono
strettamente collegati all‟impiego dei
blocchi 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)
c cannot be resolved to a variable
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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 intero
come oggetto. In essa vengono dichiarati una variabile
(ovviamente) intera ed un metodo che stamperà la
variabile 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)
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
interi
carattere
riferimento
booleani
array
classi
virgola
mobile
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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
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.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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)
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.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
Tipo
Dimensione
Descrizione
char
16 bit
Rappresenta un carattere
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
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
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
Alcuni caratteri che non possono essere digitati, vengono rappresentati
attraverso le sequenze di escape.
Autore: Prof. Agostino Sorbara
ITIS "M. M. Milano" Polistena (RC)
La coercision (o promozione) è una
conversione che il linguaggio, in determinati
casi, può eseguire automaticamente. In
Tabella 7 sono riportate le conversioni
implicite valide per i tipi predefiniti.
Questo tipo di conversione automatica
avviene quando non vi è perdita di dati,
esempio si converte un tipo da dimensioni
più piccole a dimensioni più grandi (da int
a 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 che
identificano particolari operazioni sui dati. Un
operatore elabora una o più argomenti e
produce un nuovo valore. Gli argomenti sono
in forma diversa da quella di una comune
chiamata di metodo, ma l‟effetto è identico.
Quasi tutti gli operatori funzionano soltanto
con i tipi primitivi; le eccezioni sono costituite
da “=“, “==“ e “!=“, che funzionano con tutti
gli oggetti e possono essere fonte di
confusione. 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)
Assegnazione
L‟assegnazione viene eseguita mediante l‟operatore =,
questa operazione significa prendere il valore sul lato
destro, spesso indicato come rvalue, e copiarlo nel lato
sinistro, spesso chiamato lvalue.
Esempio:
A = 4;
In fase di chiamata di un metodo si fa ricorso
all’Aliasing per cui per fare un operazione di
assegnazione si procede nel seguente modo:
y.c= ‘z’;
Dove c e una variabiale di tipo char ed y è un metodo
definito 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 automatico
Java dispone di semplificazioni per rendere il
codice di più facile digitazione, che però può
risultare più o meno difficile da leggere.
Le due semplificazioni più interessanti riguardano
gli operatori di autoincremento (++) e di
autodecremento (--).
Esempio:
Se a è un int l‟espressione ++a equivale a (a=a+1).
Questi operatori non si limitano a modificare la
variabile, ma producono come risultato il valore
della 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 un
risultato booleano valutando la relazione
tra i valori degli operandi. Un‟espressione
relazionale produce true (vero) se la
relazione è vera e false (falso) se la
relazione e falsa. Gli operatori relazionali
sono 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 di
manipolare singoli bit nei tipi interi primitivi ed
eseguono
operazioni
booleane
sui
bit
corrispondenti nei due argomenti per produrre il
risultato.
L‟utilizzo di tali operatori deriva dalla necessita di
manipolare direttamente l‟hardware e impostare i
bit nei registri hardware (programmazione a basso
livello).
L‟utilizzo di questi operatori è stato concepito in
quanto alcuni decoder TV sono stati programmati
in Java. In generale in Java l‟utilizzo degli operatori
bit 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
valgono
1 (uno); altrimenti 0 (zero).
 OR
(|)
che
restituisce
1
(uno)
nel
bit
di
output
se
entrambi
i
bit
se
uno
dei
due
bit
di
ingresso
vale
1
(uno)
e
restituisce
0
(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 di
tipo binari. L’operatore bit a bit NOT (~) restituisce
l’opposto del bit di input, 1 se il bit di input e 0, e 0 se il
bit 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 i
bit, e sono utilizzabili esclusivamente con tipi
primitivi interi.
L‟operatore di scorrimento a sinistra (<<) sposta a
sinistra i bit dell‟operando sinistro, per un numero
di posizioni pari al numero di bit specificato
dall‟operando a destra dell‟operatore, inserendo
valori 0 nei bit di ordine più basso.
L‟operatore di scorrimento a destra (>>) sposta a
destra i bit dell‟operando sinistro, per un numero
di posizioni pari al numero di bit specificato
dall‟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 costrutto
quando esso produce un valore.
L‟espressione assume la seguente forma:
Boolean-exp ? Value0 : value1
Se boolean-exp vale true, viene valutato
value0 e il suo risultato diventa il valore
prodotto dall‟espressione. Invece se booleanexp è false, viene valutato value1 e il suo
risultato
diventa
il
valore
prodotto
dall‟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 i
commenti.
 Commento di riga, utilizza i caratteri //,
tutto wuello che viene scritto dopo
questi caratteri e sulla stessa riga è
considerato un commento , quindi non fa
parte del codice.
Questa modalità viene usata per i commenti
brevi, 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 di
termine */ sono considerati un commento. Questa forma
consente di dividere il testo su più righe, per esempio:
/* commento che occupa
più righe */
Ai programmatori questa forma oltre che ad inserire commenti
su più righe può essere utile nel caso in cui si voglia provare
un programma escludendo momentaneamente una parte di
codice.
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ò essere
usato prima di dichiarare una classe o un metodo. Questa
forma di documentazione è importante perché viene
riconosciuta dagli strumenti per la generazione automatica
della 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 commento
deve
diventare
un‟abitudine
del
programmatore fin dai primi semplici
esercizi: in questo modo possono essere
costruiti
programmi
che
si
autodocumentano, e che possono essere
compresi e letti facilmente a distanza di
tempo, anche da persone diverse dal
programmatore
che
ha
scritto
il
programma.
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 codice
public 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 classe
NumeroIntero, non sarà più possibile utilizzare il costruttore di
default (che non sarà più inserito dal compilatore). Quindi la
seguente istruzione produrrebbe un errore in compilazione:
NumeroIntero uno = new NumeroIntero();
Bisogna invece creare oggetti passando al costruttore
direttamente il valore della variabile da impostare, per
esempio:
NumeroIntero uno = new NumeroIntero(1);
Risposte alle due domande:
1. Trattasi di una variabile d‟istanza, perché dichiarata
all‟interno di una classe, al di fuori di metodi.
2. Il valore sarà zero, ovvero il valore nullo per una variabile
intera. Infatti, quando si istanzia un oggetto, le variabili
d‟istanza vengono inizializzate ai valori nulli, se non
esplicitamente 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)