Basi di Java
Strutture base di Java
Basi di java
▪ Variabili
▪ Operatori
▪ Condizioni e Cicli
▪ Array
Variabili
Cosa è una variabile ?
▪ Una variabile è una casella di memoria identificata da un nome
▪ Il suo scopo è di contenere un valore di un certo tipo. Serve per memorizzare dati
durante l’esecuzione di un programma.
▪ Il nome di una variabile (come il nome di una classe o di un metodo) è un
identificatore.
Può essere costituito da lettere, numeri e underscore (esempi: num1, i, risultato,
costo_tot, ...) Non deve coincidere con una parola chiave del linguaggio (esempi
“sbagliati”: class, static, int, …) È bene che sia significativo per il programma
(meglio base, altezza e area di X1, X2 e X3)
Variabili in Java
In Java ogni variabile deve essere dichiarata prima
del suo uso
Nella dichiarazione di una variabile se ne specifica il nome e il tipo (o
meglio, il tipo dei valori che pu`o contenere)
ATTENZIONE! Ogni variabile deve essere dichiarata UNA SOLA
VOLTA (la prima volta che compare nel programma)
Tipi primitivi
Tipi Interi
int numeroIntero;
// 4 bytes –2,147,483,648 to 2,147,483, 647 (just over 2 billion)
short numeroInteroPiccolo; // 2 bytes –32,768 to 32,767
long numeroInteroGrande; // 8 bytes –9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
byte numeroInteroPiccoloPiccolo; // 1 byte –128 to 127
Tipi a virgola mobile
float virgolaMobileSingolaPrecisione;
// 4 bytes approximately
// ±3.40282347E+38F (6–7 significant decimal digits)
double virgolaMobileDoppiaPrecisione; // 8 bytes approximately
// ±1.79769313486231570E+308 (15 significant digits)
char singoloCarattere;
// 'u'
boolean miPiaceQuestoPost;
// true o false
package ict.primoprogetto;
Assegnamento
public class AreaTriangolo {
public static void main(String[] args) {
int base, altezza;
int area;
base = 5;
altezza = 10;
area = base * altezza / 2;
System.out.println(area);
}
}
Si può memorizzare un valore in
una variabile tramite l’operazione di
assegnamento
Il
valore
da
assegnare a una variabile può
essere un letterale o il risultato
della valutazione di un’espressione
Dall’ esempio si può notare che le
variabili possono essere usate
anche all’interno di espressioni.
I valori di base e altezza vengono
letti e usati nell’espressione Il
risultato dell’espressione viene
scritto nella variabile area
Come vediamo la variabile può
essere inizializzata contestualmente alla sua
dichiarazione.
Inizializzazione
Dichiarazione+assegamento
Si pu`o combinare dichiarazione e
assegnamento (dichiarazione con
inizializzazione).
Costanti
Nella dichiarazione delle variabili che NON DEVONO
mai cambiare valore si può utilizzare il modificatore
final
Costanti
Il compilatore si occuperà di
controllare che il valore delle costanti
non
venga
mai
modificato
(riassegnato) dopo essere stato
inizializzato.
Aggiungere
il
modificatore
final
non
cambia
funzionamento
programma...
ma
serve
a
prevenire
errori
di
programmazione
Operatori
Cosa è un operatore ?
In informatica e programmazione, un operatore è un simbolo che specifica quale
legge applicare a uno o più operandi, per generare un risultato.
▪ gli operatori unari lavorano su un singolo operando. Esempi di operatori unari
sono quelli di incremento e decremento (vedi sezione seguente);
▪ gli operatori binari lavorano su due operandi: ne sono esempi gli operatori
aritmetici e quelli di assegnamento;
▪ gli operatori ternari lavorano su tre operandi; uno dei rari esempi è l'operatore
condizionale, usato in programmazione.
Principali Operatori Java
Operazioni Aritmetiche
L’operazione di divisione / si comporta diversamente a seconda che sia applicato a
letterali interi o frazionari
▪ 25/2 = 12 (divisione intera)
▪ 25%2 = 1 (resto della divisione intera)
▪ 25.0/2.0 = 12.5 (divisione reale) 25.0%2.0 = 1.0 (resto della divisione intera)
Una operazione tra un letterale intero e un frazionario viene eseguita come tra due
frazionari 25/2.0 = 12.5
ATTENZIONE AGLI ERRORI
1.5 + (25/2) = 13.5 (attenzione all’ordine di esecuzione delle operazioni) ERRORE
1.5+(25.0/2.0) = 14.0
Operatori relazionali JAVA
package ict.primoprogetto;
public class Bisestile {
public static void main(String[] args) {
int anno = 1900;
boolean èBisestile;
// divisible per 4 ma non per 100
èBisestile = (anno % 4 == 0) && (anno % 100 != 0);
//O è divisibile per 400
èBisestile = èBisestile || (anno % 400 == 0);
System.out.println("E' bisestile ?"+èBisestile);
}
}
Condizioni e Cicli
Sequenza
Esecuzione in sequenza delle
operazioni sulle variabili inizializzate
Alternativa
• Inizializzazione: assegnazione dei
valori iniziali alle variabili
caratteristiche del ciclo (viene
eseguita una sola volta); • Corpo:
esecuzione delle istruzioni
fondamentali del ciclo che devono
essere eseguite in modo ripetitivo;
• Modifica: modifica dei valori delle
variabili che controllano l'esecuzione
del ciclo (eseguito ad ogni iterazione);
• Controllo: determina, in base al
valore delle variabili che controllano
l'esecuzione del ciclo se il ciclo deve
essere ripetuto o meno
Iterazione
Iterazione o Ripetizione Esprime la ripetizione di una sequenza di istruzioni. Nel
caso piu` generale (ripetizione enumerativa),
Iterazione
• Inizializzazione: assegnazione dei valori iniziali
alle variabili caratteristiche del ciclo (viene eseguita
una sola volta);
• Corpo: esecuzione delle istruzioni fondamentali
del ciclo che devono essere eseguite in modo
ripetitivo;
• Modifica: modifica dei valori delle variabili che
controllano l'esecuzione del ciclo (eseguito ad ogni
iterazione);
• Controllo: determina, in base al valore delle
variabili che controllano l'esecuzione del ciclo se il
ciclo deve essere ripetuto o meno.
Istruzioni condizionali
Un’istruzione condizionale if-else ha questa forma:
if (...condizione...) ...comando... else ...comando...
dove:
La condizione è detta anche guardia dell’if
If….. else….
▪ La guardia può essere vera (true) o falsa (false)
In un programma spesso c’e’ bisogno
di scegliere tra operazioni diverse
▪ I due comandi alternativi sono detti anche rami Il
ramo else è opzionale (vedremo)
Per questo esiste l’istruzione
condizionale if-else
Condizioni in Java
public class Lancia { public static void main(String[] args) {
if (Math.random() < 0.5) System.out.println(“Testa");
elseMath.random() < 0.5) System.out.println(“Croce");
}
Cicli
▪ Nota per i programmatori C++
▪ I costrutti di controllo del flusso offerti da Java sono praticamente uguali a quelli
del C++: per voi dovrebbe quindi essere molto naturale usarli. Solo con Java 5 è
stato introdotto un nuovo costrutto per ciclare, il foreach, molto elegante e
potente. ( lo vedremo dopo aver introdotto gli array).
class WhileDemo {
public static void main(String[] args){
int count = 1;
while (count < 11) {
System.out.println("Count is: " + count);
count++;
}
}
}
While
Il codice di cui sopra stampa il
valore
di
count:
il
loop while viene eseguito 10
volte, dopodichè la condizione
diventa false e il flusso
continua in modo lineare.
class DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println("Count is: " + count);
count++;
} while (count <= 11);
}
}
Do-While
L’unica differenza tra il while e
il do-while è che il secondo
valuta l’espressione alla fine
del loop, anziché all’inizio:
questo
implica
che
gli
statement
inclusi
nel
blocco do sono eseguiti
almeno una volta.
// vengono stampati i numeri da 1 a 10
for (int i = 1; i <= 10; i++)
System.out.println(i);
// conto alla rovescia da 10 a 1
for (int i = 10; i > 0; i--)
System.out.println("Conto alla rovescia . . . " + i);
System.out.println("Decollo!");
For:
for (initialization;
termination; increment or
decrement) {
statement(s)
}
L’espressione di inizializzazione
è eseguita una volta sola,
quando il loop inizia. Quando
l’espressione di terminazione
vale false il loop termina.
L’espressione di incremento è
invocata ad ogni iterazione del
loop e può incrementare o
decrementare un valore.
Array
Array
Un array è una struttura dati che memorizza una collezione di valori dello stesso
tipo. Ogni elemento singolo viene acceduto tramite un indice intero. Vediamo come
dichiarare e usare un array con un esempio di codice:
Supponiamo di voler scrivere un programma che
chiede all’utente di inserire 10 numeri, e poi li stampa
nell’ordine in cui sono stati inseriti
Dovremmo usare 10 variabili di tipo intero per
collezionare i valori inseriti.
SCOMODO, IMPRATICABILE QUANDO LE
VARIABILI SONO MIGLIAIA
I linguaggi di programmazione ci forniscono il
costrutto degli ARRAY
Array
Un array `e: una sequenza di variabili
di tipo omogeneo (tutti dello stesso
tipo) distinguibili l’uno dall’altro
(indirizzabili) in base alla loro
posizione all’intero della sequenza
(indici interi)
int [] elementi = new int [5];
Dichiarazione di un
array
// crea un array di 5 elementi inizializzati a 10 , 5, 21 , -12 e 74
Tipo dell’array
Simbolo [ ]
int [] numeri = { 10 , 5 , 21 , -12 , 74 };
Utilizziamo l’operatore new e
chiamiamo il COSTRUTTORE
dell’array passandogli la dimensione
tra [ ]
Uso degli array
double[] x = { 0.3, 0.6, 0.1 };
double[] y = { 0.5, 0.1, 0.4 };
int N = x.length;
double sum = 0.0;
for (int i = 0; i < N; i++) {
sum = sum + x[i]*y[i];
}
Attenzione
I singoli elementi di un array possono essere acceduti in lettura (in un’espressione)
o in scrittura (in un assegnamento) indicandone la posizione (indice) tra parentesi
quadrate Ricordarsi che il primo elemento ha indice 0!!!
ATTENZIONE: se l’array ha dimensione n l’indice tra le parentesi deve essere
compreso tra 0 e n-1
▪ in caso contrario si incontrerà un errore in fase di esecuzione