Cicli
- #java
- #programmazione
- #cicli
In questa lezione
- 1. Introduzione ai cicli
- 2. Ciclo For
- 2.1 Sintassi
- 2.2 Esempio
- 2.3 Esempio
- 2.6 Cicli annidati
- 3. Ciclo While
- 3.1 Sintassi
- 3.2 Esempio
- 4. Ciclo Do-While
- 4.1 Sintassi
- 4.2 Esempio
- 5. Istruzioni break e continue
- 5.1 Istruzione break
- 5.2 Istruzione continue
- 6. In Sintesi
- 7. Quiz a risposta multipla
- 8. Esercizi
- 8.1 Esercizio - Numeri da 1 a N
- 8.2 Esercizio - Somma dei numeri
- 8.3 Esercizio - Indovina il numero
1. Introduzione ai cicli
I cicli permettono di eseguire più volte un blocco di istruzioni.
Sono fondamentali quando dobbiamo:
- ripetere operazioni
- elaborare sequenze di dati
- evitare codice ripetuto
In Java esistono tre principali tipi di ciclo:
fornumero di ripetizioni notowhilecondizione controllata primado-whileeseguito almeno una volta
2. Ciclo For
Il ciclo for viene utilizzato quando conosciamo quante volte vogliamo ripetere un’operazione.
2.1 Sintassi
for (inizializzazione; condizione; aggiornamento) {
// istruzioni
}
L’istruzione per richiamare il ciclo for si caratterizza è da 4 parti:
- dichiarazione (non sempre!) e assegnazione di una variabile contatore,
- condizione del ciclo,
- aggiornamento della variabile contatore,
- corpo del ciclo.
2.2 Esempio
Il seguente ciclo scrive per 10 volte sullo schermo la parola “ciao”.
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("ciao");
}
}
}
dove:
int i=0Dichiarazione e assegnazione di una variabile contatore;i < 10Condizione del ciclo for;i++Aggiornamento della variabile contatore;
2.3 Esempio
public class Main {
public static void main(String[] args) {
int val2 = 0;
// il primo ciclo viene ripetuto 5 volte
// il secondo ciclo viene ripetuto 5 volte
for (int i = 0; i < 5; i++) {
val2++;
}
for (int a = 0; a < 5; a++) {
val2++;
}
System.out.println("Valore = " + val2);
}
}
2.6 Cicli annidati
È possibile inserire un ciclo dentro un altro ciclo.
2.6.1 Esempio
public class Main {
public static void main(String[] args) {
int val = 1;
// il primo ciclo viene ripetuto 5 volte
// il secondo ciclo viene ripetuto 5*5 volte
for (int i = 0; i < 5; i++) {
for (int a = 0; a < 5; a++) {
System.out.println("i = " + i);
System.out.println("a = " + a);
System.out.println("Valore = " + val);
System.out.println();
val++;
}
}
}
}
2.6.2 Esempio
public class Main {
public static void main(String[] args) {
int val3 = 1;
// il primo ciclo viene ripetuto 5 volte
// il secondo ciclo viene ripetuto 5*5 volte
// il terzo ciclo viene ripetuto 5*5*3 volte
for (int i = 0; i < 5; i++) {
for (int a = 0; a < 5; a++) {
for (int x = 0; x < 3; x++) {
System.out.println("i = " + i);
System.out.println("a = " + a);
System.out.println("x = " + x);
System.out.println("Valore = " + val3);
System.out.println();
val3++;
}
}
}
}
}
Ogni ciclo interno viene eseguito completamente ad ogni iterazione del ciclo esterno.
3. Ciclo While
L’istruzione while prevede che prima venga valutata la condizione e poi, se è vera, verranno eseguite le operazioni all’interno del ciclo. Ecco perchè si definisce pre-condizionale.
Quando la condizione diventa falsa il ciclo si interrompe e si passa all’istruzione successiva.
Il ciclo potrebbe non essere mai eseguito se la condizione non fosse vera in partenza.
Il ciclo potrebbe essere infinito se la condizione risultasse sempre vera. In questo caso si genera un loop.
3.1 Sintassi
L’utilizzo tipico del while prevede quasi sempre l’esecuzione di un blocco di istruzioni, quindi quasi sempre troviamo il costrutto espresso nella forma:
while (condizione) {
// Istruzioni da eseguire
}
3.2 Esempio
Generiamo i numeri da 0 a 10, a step di 2, utilizzando il ciclo while in Java:
public class Main {
public static void main(String[] args) {
int count = 0;
while (count <= 10) {
System.out.println(count);
count = count + 2;
}
}
}
Attenzione
Attenzione ai cicli infiniti: se la condizione rimane sempre vera il programma non termina
4. Ciclo Do-While
L’idea alla base del ciclo do-while sta nel fatto che prima si entra nel ciclo (viene eseguito il corpo del ciclo), poi si controllo. Per questa ragione viene definito post-condizionale
In altre parole il corpo del ciclo do-while viene eseguito almeno una volta.
La semantica del costrutto do-while è dunque la seguente:
- Si esegue l’istruzione (o più di una);
- Si valuta la condizione, la quale può essere vera o falsa.
- Se la condizione è vera si ritorna al punto 1; altrimenti si passa all’istruzione successiva.
4.1 Sintassi
Troviamo il costrutto espresso nella forma:
do {
// istruzioni;
} while (condizione);
4.2 Esempio
Continuare a leggere numeri finché non viene inserito un valore negativo.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int valore;
do {
System.out.print("Inserire valore negativo: ");
valore = input.nextInt();
}
while (valore >= 0);
}
}
5. Istruzioni break e continue
Durante l’esecuzione di un ciclo può essere necessario modificare il comportamento normale del flusso.
Java mette a disposizione due istruzioni fondamentali:
breakcontinue
5.1 Istruzione break
L’istruzione break permette di interrompere immediatamente un ciclo.
Quando viene eseguita:
- il ciclo termina.
- il programma continua dopo il ciclo.
5.1.1 Esempio
Interrompere il ciclo quando viene trovato il numero 5.
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println(i);
}
System.out.println("Ciclo terminato");
}
}
5.2 Istruzione continue
L’istruzione continue non interrompe il ciclo.
- salta solo l’iterazione corrente
- passa direttamente alla successiva
5.2.1 Esempio
Stampare solo numeri dispari.
public class Main {
public static void main(String[] args) {
for(int i = 0; i < 10; i++) {
if(i % 2 == 0) {
continue;
}
System.out.println(i);
}
}
}
6. In Sintesi
| Ciclo | Quando usarlo |
|---|---|
for | numero di iterazioni noto |
while | controllo prima dell’esecuzione |
do-while | esecuzione garantita almeno una volta |
| Istruzione | Effetto |
|---|---|
break | termina completamente il ciclo |
continue | salta solo l’iterazione corrente |
7. Quiz a risposta multipla
Mettiti alla prova
0/7 risposte
Quando è preferibile usare un ciclo for?
Quale ciclo viene eseguito almeno una volta?
Quando un ciclo while può non essere eseguito?
Cosa provoca un ciclo infinito?
Un ciclo dentro un altro ciclo si chiama:
Cosa fa l'istruzione break?
Cosa fa continue?
8. Esercizi
8.1 Esercizio - Numeri da 1 a N
Realizzare un programma che chiede un numero N e stampa i numeri da 1 a N.
💡 Mostra soluzione
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Inserisci N: ");
int n = input.nextInt();
for(int i = 1; i <= n; i++){
System.out.println(i);
}
}
}8.2 Esercizio - Somma dei numeri
Calcolare la somma dei numeri da 1 a N usando il ciclo while.
💡 Mostra soluzione
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.print("Inserisci N: ");
int n = input.nextInt();
int i = 1;
int somma = 0;
while(i <= n){
somma += i;
i++;
}
System.out.println("Somma = " + somma);
}
}8.3 Esercizio - Indovina il numero
Il programma continua a chiedere un numero finché l’utente non inserisce 0.
💡 Mostra soluzione
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int numero;
do {
System.out.print("Inserisci un numero (0 per uscire): ");
numero = input.nextInt();
} while(numero != 0);
System.out.println("Programma terminato");
}
}