Ciclo while
Esempio potenze di 2 fino a 2^n
public class PotenzeDi2
{
public static void main (String[] args)
{
final int N = Integer.parseInt(args[0]);
int val = 1;
int i = 0;
while (i <= N)
{
System.out.println(i + " "+ val);
val *= 2;
i++;
}
}
}
Esecuzione
- 0 1
- 1 2
- 2 4
- 3 8
- 4 16
Do while
- Si comporta esattamente come il while ma la condizione di uscita viene verificata alla fine dell’esecuzione del corpo del ciclo
public class PotenzeDi2DoWhile
{
public static void main (String[] args)
{
final int N = Integer.parseInt(args[0]);
int val = 1;
int i = 0;
do
{
System.out.println(i + " "+ val);
val *= 2;
i++;
} while (i <= N);
}
}
Ciclo for
- E’ un costrutto alternativo al while che fornisce più flessibilità nella realizzazione di cicli
Sintassi
for (<inizializzazione>; <espressione booleana>; <incremento>)
{
<istruzioni>
}
for (<inziializzaione>; <espressione booleana>; <incremento>)
<istruzione>;
Lo schema è il seguente:
- Inizializza la variabile “di controllo”
- Esegue il testi d’uscita sull’espressione booleana
- Esegue il corpo del for
- Alla fine di ogni ciclo incrementa/decrementa il valore della variabile di controllo come specificato
Equivalenza dell’istruzione con il while
for (<inzializzaione>; <espressione booleana>; <incremento>)
<istruzione>;
Equivale a
<inzializzaione>;
while (<espressione booleana>)
{
<istruzioni>;
<incremento>;
}
Uscire da un ciclo
Indipendentemente dal tipo di ciclo, può essere necessario uscire dal ciclo durante l’esecuzione del suo corpo attraverso l’istruzione break
break
può essere usato solo all’interno di un ciclo
public class StampaPrimeNCifre
{
public void StampaPrimeNCifre (final String s, final int N)
{
int conta = 0;
for (int k = 0; k < s.enght(); k++)
{
char c = s.charAt(k);
if (Character.isDigit(c))
{
Syste,.out.print(c);
cont++;
if (conta == N)break;
}
}
}
public static void main (String[] args)
{
new StampaPrimeNCifre().stampaPrimeNCifre("acsvjchdjvfdv", 3);
}
}
Uscire da cicli annidati
- L’istruzione break permette di uscire solo dal ciclo corrente se non si specifica un’etichetta
- Come fare nel caso in cui si voglia uscire da una sequenza di cicli annidati?
- Si può specificare un’etichetta prima di un ciclo e uscire da quel ciclo con break etichetta
outer:
for (int i = 0; i < h> i++)
{
for (int = 0; j < w; j++)
{
//codice
if (j == 1) break outer;
}
}
Break vs return
- L’istruzione return interrompe l’esecuzio del metodo
- L’istruzione break interrompe l’esecuzione di un ciclo for, while, do…while
Saltare all’iterazione successiva
- Può essere utile saltare all’iteazione successiva
public class StampaPrimeNCifre
{
public void StampaPrimeNCifre (final String s, final int N)
{
int conta = 0;
for (int k = 0; k < s.lenght(); k++)
{
char c = s.charAt(k);
if (Character.isDigit(c)) continue; //Salta questa iterazione
{
Syste,.out.print(c);
cont++;
if (conta == N)break;
}
}
}
public static void main (String[] args)
{
new StampaPrimeNCifre().stampaPrimeNCifre("acsvjchdjvfdv", 3);
}
}
Array
- Rappresenta un gruppo di variabili tutte dello steso tipo
- Gli array sono oggetti
- Quindi le variabili di array contengono il riferimento all’array
- Gli elementi di un array possono essere tipo primitivi oppure riferimenti a oggetti
Esempio di array: creazione senza valori
- Dichiarazioni: `int[] a;
- Creazione senza valori
a = new int[10]
- Dichiarazioni con valori
a = new int[] {5, -2, 3, 0, 1, -6, 75, 32, 122, 4};