Capitolo 3: Strutture di controllo in Dart e Flutter
Benvenuti al terzo capitolo del nostro corso su Dart.
In questo capitolo, esploreremo le strutture di controllo fondamentali che Dart offre per gestire il flusso del programma.
Comprendere queste strutture è essenziale per scrivere codice efficiente e leggibile.
Analizzeremo le dichiarazioni if/else
, i cicli while
e for
, le istruzioni break
e continue
, le dichiarazioni switch
e le enumerazioni.
Ogni sezione includerà esempi pratici ed esercizi per consolidare l'apprendimento.
Introduzione
Le strutture di controllo permettono al programma di prendere decisioni e ripetere azioni basate su condizioni specifiche.
Senza di esse, un programma eseguirebbe le istruzioni in modo sequenziale senza alcuna logica decisionale.
Dart, come molti altri linguaggi di programmazione, fornisce una varietà di strutture di controllo per gestire diversi scenari.
Dichiarazioni if/else
Le dichiarazioni if/else
consentono al programma di eseguire blocchi di codice diversi in base al risultato di una condizione booleana.
Sintassi:
if (condizione) {
// Codice da eseguire se la condizione è vera
} else {
// Codice da eseguire se la condizione è falsa
}
Esempio:
int numero = 10;
if (numero % 2 == 0) {
print('$numero è pari.');
} else {
print('$numero è dispari.');
}
Esercizi:
- Scrivi un programma che controlli se un numero è positivo, negativo o zero e stampi un messaggio appropriato.
- Crea una funzione che prenda un anno come input e determini se è un anno bisestile.
Cicli while
I cicli while
ripetono un blocco di codice finché una condizione specificata rimane vera.
Sintassi:
while (condizione) {
// Codice da eseguire finché la condizione è vera
}
Esempio:
int contatore = 0;
while (contatore < 5) {
print('Contatore: $contatore');
contatore++;
}
Cicli for
I cicli for
sono utilizzati per iterare su una sequenza di valori, come una lista o un intervallo di numeri.
Sintassi:
for (var i = inizio; i < condizione; i++) {
// Codice da eseguire per ogni iterazione
}
Esempio:
for (int i = 0; i < 5; i++) {
print('Iterazione: $i');
}
Esercizio: Fizz Buzz
Scrivi un programma che stampi i numeri da 1 a 100.
Per i multipli di 3, stampa "Fizz" al posto del numero, e per i multipli di 5, stampa "Buzz".
Per numeri che sono multipli sia di 3 che di 5, stampa "FizzBuzz".
Suggerimento:
Utilizza un ciclo for
e le dichiarazioni if/else
per determinare quando stampare "Fizz", "Buzz" o "FizzBuzz".
Istruzioni break
e continue
Le istruzioni break
e continue
modificano il flusso dei cicli.
break
: termina l'esecuzione del ciclo corrente.continue
: salta l'iterazione corrente e passa alla successiva.
Esempio con break
:
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // Esce dal ciclo quando i è 5
}
print(i);
}
Esempio con continue
:
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // Salta i numeri pari
}
print(i);
}
Dichiarazioni switch
Le dichiarazioni switch
selezionano l'esecuzione di un blocco di codice tra diverse opzioni basate sul valore di una variabile.
Sintassi:
switch (espressione) {
case valore1:
// Codice da eseguire se espressione == valore1
break;
case valore2:
// Codice da eseguire se espressione == valore2
break;
default:
// Codice da eseguire se nessun caso corrisponde
}
Esempio:
String giorno = 'Lunedì';
switch (giorno) {
case 'Lunedì':
print('Inizio della settimana lavorativa.');
break;
case 'Sabato':
case 'Domenica':
print('Fine settimana!');
break;
default:
print('Giorno normale.');
}
Enumerazioni
Le enumerazioni (enum
) sono un modo per definire un insieme di costanti con nome, migliorando la leggibilità del codice.
Definizione:
enum Colore { rosso, verde, blu }
Utilizzo:
Colore colorePreferito = Colore.verde;
switch (colorePreferito) {
case Colore.rosso:
print('Hai scelto il rosso.');
break;
case Colore.verde:
print('Hai scelto il verde.');
break;
case Colore.blu:
print('Hai scelto il blu.');
break;
}
Esercizio: Calcolatrice semplice
Crea un programma che funzioni come una calcolatrice semplice.
Il programma dovrebbe:
- Chiedere all'utente di inserire due numeri.
- Chiedere all'utente di scegliere un'operazione tra addizione, sottrazione, moltiplicazione e divisione.
- Utilizzare una dichiarazione
switch
per eseguire l'operazione scelta. - Stampare il risultato dell'operazione.
Suggerimento:
Utilizza le funzioni stdin.readLineSync()
per ottenere l'input dell'utente e double.parse()
per convertire l'input in numeri.
Conclusione
In questo capitolo, abbiamo esplorato le strutture di controllo fondamentali in Dart e Flutter, inclusi if/else
, cicli while
e for
, istruzioni break
e continue
, dichiarazioni switch
ed enumerazioni.
La padronanza di queste strutture è cruciale per sviluppare applicazioni robuste e mantenibili.
Le strutture di controllo permettono di modificare l'ordine sequenziale di esecuzione del codice, rendendo i programmi più dinamici e adattabili a diverse situazioni.
Nel prossimo capitolo, approfondiremo ulteriori concetti avanzati di Dart, continuando il nostro percorso di apprendimento verso una programmazione più efficace e sofisticata.
Se hai completato tutti gli esercizi sei pronto per proseguire con il 4° Capitolo.
Se hai invece riscontrato dubbi, non esitare a contattarmi.