Istruzioni cicliche - Dipartimento di Informatica

Java
Programmazione in Java
Guido Boella
Dipartimento di Informatica
Universita` degli Studi di Torino
C.so Svizzera, 185 I-10149 Torino
[email protected]
http://www.di.unito.it/~guido
Commenti
/* Commento su
piu` linee */
public class BenvenutoInJava {
public static void main(String[] args) {
System.out.println("Benvenuto in Java!");
// Commento su una sola linea
}
}




Commenti su piu` linee possono essere fatti racchiudendoli
tra i simboli /* e */
Commenti su di una sola linea possono essere fatti
facendoli precedere dal simbolo //
I commenti non compaiono nel codice eseguibile
Esiste anche il commento racchiuso tra /** e */
2
Classi come contenitori di metodi
specificatore di accesso class NomeClasse
{
/* definizione metodi */
spec.accesso static tipo nomeMetodo(dichiarazione
variabili)
{
istruzione;
istruzione;…
}
spec.accesso static tipo nomeMetodo(dichiarazione
variabili)
{
istruzione;
istruzione;…
}
}
3
Definizione di un metodo
spec.accesso static tipo nomeMetodo(tipo nomeVar,
tipo nomeVar, …)
{
/* dichiarazione variabili */
tipo nomeVar;
tipo nomeVar;
…
/* inizializzazione variabili */
nomeVar = valore;
nomeVar = valore;
…
/* chiamate a metodi */
NomeClasse.nomeMetodo(valore);
nomeVar = NomeClasse.nomeMetodo(valore);
/*se tipo di ritorno non è void */
return valore;
}
4
Classi come contenitori di metodi
public class MyMath
{
/* definizione metodi */
public static int quadrato(int x)
{
istruzione;
istruzione;…
}
public static double percento(int lire, double tasso)
{
istruzione;
istruzione;…
}
}
5
Tipi primitivi


Java e` un linguaggio fortemente tipato, ogni variabile deve
avere un tipo dichiarato
Esistono otto tipi primitivi, sei per i tipi di numeri, uno per i
caratteri (codifica Unicode) e uno per boolean







int (4 byte)
short (2 byte)
long (8 byte)
byte (1 byte)
- float (4 byte)
- double (8 byte)
- char
- boolean
I tipi primitivi non sono oggetti (puntatori)
Non dipendono dalla macchina di destinazione
void indica che un metodo non ha tipo (non si usa con le
variabili)
6
Dichiarazione di variabile





identificatore = lettera (lettera | cifra)*
lettera e cifra nel senso “Unicode”
Lunghezza illimitata
Per convenzione si usano nomi che iniziano con una lettera
minuscola
L’inizializzazione e` come in C
int variabileIntera;
long variabileInteraDi8byte;
double piGrecoApprossimato = 3.1415;
boolean flag = false; /* o false o true !
Assegnamento
*/
7
Operatori






Operatori aritmetici: + - * / %
Assegnamento e operatori aritmetici: += -= *= /= %= (es. a
+= i;)
Operatori di incremento (in posizione di prefisso o di
suffisso di una variabile numerica): ++ e -- (es. i++; a=--i;)
Operatori relazionali e booleani: == != < > <= >= && || !
Operatori sui bit: & | ^ ~ >> <<
Parentesi: ( )
8
Valori
/* un numero è un valore */
1
/* una variabile inizializzata è un valore */
x
/* una operazione fra valori + un valore */
1+1
x+1
x*x
x+y
/* una chiamata ad un metodo non void è un valore */
MyMath.quadrato(x)
MyMath.quadrato(2)
Math.round(2.3)
Console.readInt(“dimmi…”)
/* misto */
x + MyMath.quadrato(2)
2 + MyMath.quadrato(x)
9
Definizione di un metodo
public static void quadrato(int x)
{
/* dichiarazione variabili */
int risultato;
/* inizializzazione variabili */
risultato = x * x;
/* chiamate a metodi */
/*se tipo di ritorno non è void */
return risultato;
}
10
Definizione di un metodo
public static void salutatore(String nome)
{
/* dichiarazione variabili */
String saluto;
/* inizializzazione variabili */
saluto = “Ciao “ + nome;
/* chiamate a metodi */
System.out.println(saluto);
/*se tipo di ritorno non è void */
}
11
Istruzioni condizionali
if (condizione) istruzione;
if (condizione)
{
istruzione;
istruzione;…
}
if (condizione) istruzione; else istruzione;
12
Istruzioni condizionali
if (x==0) System.out.println(“zero”);
if (x!=0)
{
x=x+1;
System.out.println(“ho incrementato x”);
}
if (x<0) System.out.print(“minore di zero”);
else System.out.print(“maggiore o uguale a zero”);
13
Istruzioni cicliche
OGNI VOLTA CHE LA CONDIZIONE E’ VERA
ESEGUI L’ISTRUZIONE (O LE ISTRUZIONI)
SPECIFICATE
while (condizione) istruzione;
while (condizione)
{
istruzione;
istruzione;…
}
14
Istruzioni cicliche
while (x!=0) x=Console.readInt(“dimmi..:”);
while (e<0)
{
risultato = risultato * b;
e = e – 1;
}
while (capitale<2000)
{
capitale = capitale + MyMath.percento(capitale, tasso);
anni = anni + 1;
}
15
For




for (inizializzazione var; condizione; step) { istruzione;…}
Inizializzazione: istruzione che dichiara o assegna valore ad una
variabile: int x = 0; i=1;…
Condizione: x<10; i<0; x!=i;
Step: istruzione che modifica il valore della variabile utilizzata:
x=x+1; i=i*2; x=x-1; …
for (int i=0; i<10; i=i+1)
System.out.println(i);
for (int i=0; i<e; i=i+1)
{ris = ris * b;}
16
Classi come generatori di oggetti
specificatore di accesso class NomeClasse
{
/* definizione variabili di istanza */
specificatore di accesso dichiarazione var;
specificatore di accesso dichiarazione var; …
/* definizione costruttore */
specificatore di accesso NomeClasse(dichiarazione variabili)
{
inizializzazione variabili di istanza;
istruzione;…
}
/* definizione metodi */
specificatore di accesso tipo nomeMetodo(dich. variabili)
{
istruzione;
istruzione;…
}
}
17
Classi come generatori di oggetti
public class Conto
{
/* definizione variabili di istanza */
private int capitale;
public String nome;
/* definizione costruttore */
public Conto(int lire, String n)
{
capitale = lire;
nome = n;
}
/* definizione metodi */
public void deposito(int lire)
{
capitale = capitale + lire;
}
}
18
Classi come generatori di oggetti
specificatore di accesso class NomeClasse
{
/* definizione variabili di istanza */
specificatore di accesso static dichiarazione var;
specificatore di accesso static dichiarazione var;…
/* definizione variabili di istanza */
specificatore di accesso dichiarazione var;
specificatore di accesso dichiarazione var; …
/* definizione costruttore */
specificatore di accesso NomeClasse(dichiarazione variabili)
{
…
}
/* definizione metodi */
specificatore di accesso tipo nomeMetodo(dichiarazione var)
{
19
…