Lezione 4: Strutture di Controllo – Prendere Decisioni (E Dire al Tuo Programma Cosa Fare!)


Lezione 4

Lezione 4: Strutture di Controllo – Prendere Decisioni (E Dire al Tuo Programma Cosa Fare!)


Bentornato, intrepido esploratore del codice! 🗺️

Finora hai memorizzato numeri, eseguito qualche operazione matematica e fatto sentire importanti le tue variabili. Ma ora è il momento di alzare la posta in gioco e controllare il flusso del tuo programma. Perché, diciamocelo, se il tuo codice non può prendere decisioni o ripetere compiti, è come un GPS che non sa come ricalcolare il percorso — totalmente perso!

Preparati a esplorare il misterioso mondo delle strutture di controllo. Dalle istruzioni if ai cicli, stai per prendere in mano il volante e decidere esattamente cosa il tuo programma deve fare e quando. Quindi allacciati le cinture, prendi una tazza di caffè (meglio doppio oggi), e tuffiamoci dentro!


Istruzioni If – Insegnare al Tuo Codice a Pensare

Iniziamo dalle basi: l’istruzione if. Pensala come il buttafuori di un locale notturno — lascia entrare solo le condizioni giuste.

La sintassi è semplice:

if (condizione) {
    // codice da eseguire se la condizione è vera
}

Immagina di avere un programma che controlla se hai abbastanza caffè nella tazza:

#include <stdio.h>

int main() {
    int caffe = 3;

    if (caffe > 0) {
        printf("Continua a programmare, hai ancora caffè!\n");
    }

    return 0;
}

Spiegazione: Se il valore di caffe è maggiore di 0, il programma stamperà “Continua a programmare, hai ancora caffè!”. Altrimenti, se ne starà zitto — come un buon barista che non ti disturba quando sei senza caffeina.

L’Istruzione else – Gestire gli Scenari “Eh No, Amico!”

Ma cosa succede se il caffè finisce? Non vuoi che il tuo programma se ne stia lì a fissarti, muto. Ecco che entra in scena l’istruzione else:

if (caffe > 0) {
    printf("Continua a programmare, hai ancora caffè!\n");
} else {
    printf("Caffè finito! Tempo di fare il pieno.\n");
}

Con l’istruzione else, ora il tuo programma sa come gestire entrambe le situazioni. È come avere un piano di riserva — perché nessuno vuole programmare senza caffeina!


L’Istruzione else if – Aggiungere Più Condizioni

E se hai troppo caffè? (Sì, è possibile!) Aggiungiamo un’altra condizione con else if:

if (caffe > 5) {
    printf("Ehi, vai piano con il caffè! È ora di rallentare.\n");
} else if (caffe > 0) {
    printf("Continua a programmare, hai ancora caffè!\n");
} else {
    printf("Caffè finito! Tempo di fare il pieno.\n");
}

Ora il tuo programma gestisce tre scenari:

  1. Se hai più di 5 tazze, ti dice di calmarti.
  2. Se hai un po’ di caffè, ti incoraggia a continuare.
  3. Se non hai caffè, ti manda in cucina.

L’Istruzione switch – Quando Hai Più Opzioni

Se if, else e else if sono come i segnali stradali, switch è più simile a un semaforo — diverse strade, una sola condizione. Usa switch quando hai un singolo valore e più risultati.

Immagina di voler controllare il giorno della settimana:

#include <stdio.h>

int main() {
    int giorno = 4; // Supponiamo che 4 sia giovedì

    switch (giorno) {
        case 1:
            printf("Lunedì… ugh.\n");
            break;
        case 2:
            printf("Martedì… ci siamo quasi!\n");
            break;
        case 3:
            printf("Mercoledì, siamo a metà!\n");
            break;
        case 4:
            printf("Giovedì, quasi arrivati!\n");
            break;
        case 5:
            printf("Venerdì, tempo di festeggiare!\n");
            break;
        case 6:
        case 7:
            printf("Weekend! Relax totale.\n");
            break;
        default:
            printf("Giorno non valido...\n");
    }

    return 0;
}

Spiegazione: A seconda del valore di giorno, il programma stampa un messaggio diverso. switch è fantastico quando hai molte opzioni e non vuoi ingombrare il codice con un mucchio di if.


Cicli – Far Lavorare il Tuo Codice Senza Sosta

Ora che abbiamo coperto le decisioni, parliamo di far ripetere le azioni al tuo programma più e più volte. È qui che entrano in gioco i cicli. I cicli sono come i tapis roulant della programmazione — continuano fino a quando non gli dici di fermarsi.

  1. Ciclo for – Ideale quando sai esattamente quante volte vuoi ripetere qualcosa.
for (int i = 0; i < 5; i++) {
    printf("Iterazione %d\n", i);
}
  1. Ciclo while – Ottimo quando non sai quante volte vuoi ripetere qualcosa.
int caffe = 3;
while (caffe > 0) {
    printf("Hai ancora %d tazze di caffè.\n", caffe);
    caffe--; // Bevi una tazza
}
  1. Ciclo do-while – Come while, ma viene eseguito almeno una volta.
int caffe = 0;
do {
    printf("Meglio prenderne di più!\n");
} while (caffe > 0);

Errori Comuni nei Cicli

  1. Cicli Infiniti: Dimenticare di aggiornare la variabile del ciclo può intrappolare il tuo programma per sempre. Assicurati di avere sempre una via d’uscita!

  2. Errori di Off-By-One: for (int i = 0; i <= 5; i++) si eseguirà 6 volte, non 5. Controlla sempre le condizioni attentamente!

  3. Break e Continue: Usa break per uscire dal ciclo prima del previsto e continue per saltare direttamente alla prossima iterazione.


Sfida per Casa: Crea il Tuo Gioco di Indovinelli!

Metti alla prova le tue nuove abilità creando un gioco di indovinelli. Ecco cosa dovrebbe fare:

  1. Scegli un numero casuale tra 1 e 10.
  2. Chiedi all’utente di indovinare il numero.
  3. Usa if e while per dare suggerimenti e continua a chiedere finché non indovina.

Punti Extra: Aggiungi un contatore per tenere traccia di quanti tentativi ci sono voluti. Riuscirai a battere il tuo stesso record?


Pensieri Finali

Oggi hai padroneggiato le strutture di controllo — la vera base di ogni programma complesso. Ma non riporre ancora il tuo zaino da coder! Unisciti a me nella Lezione 5, dove ci addentreremo nel mondo delle funzioni. Preparati a organizzare il codice, evitare la ripetizione e diventare un vero mago delle funzioni! 🧙‍♂️✨


Vedi anche