🔄 Lezione 8: Controllo di Flusso – If, Switch e Cicli

Impara a controllare il flusso di esecuzione con condizioni e cicli

Istruzioni Condizionali

If, Else If, Else

js
let età = 19;
let haPatente = true;

// Struttura completa
if (età < 18) {
    console.log("Minorenne - non puoi guidare");
} else if (età === 18) {
    console.log("Appena maggiorenne!");
} else {
    console.log("Maggiorenne");
}

// Condizioni multiple
if (età >= 18 && haPatente) {
    console.log("Puoi guidare la macchina! 🚗");
} else if (età >= 18 && !haPatente) {
    console.log("Puoi prendere la patente");
} else {
    console.log("Non puoi guidare");
}

// Forma compatta per istruzioni semplici
if (età >= 18) console.log("Maggiorenne");

Operatore Ternario

js
let età = 20;

// Sintassi: condizione ? valoreSeVero : valoreSeFalso
let stato = età >= 18 ? "adulto" : "minorenne";

// Ternario annidato
let messaggio = età >= 65 ? "Anziano" : 
                età >= 18 ? "Adulto" : 
                "Minorenne";

// Assegnazione condizionale
let sconto = età < 18 || età > 65 ? 0.2 : 0.1;

console.log(stato);     // "adulto"
console.log(messaggio); // "Adulto"  
console.log(`Sconto: ${sconto * 100}%`); // "Sconto: 10%"

Switch/Case

js
let giorno = 2;
let nomeGiorno;

switch (giorno) {
    case 1:
        nomeGiorno = "Lunedì";
        break;
    case 2:
        nomeGiorno = "Martedì";
        break;
    case 3:
        nomeGiorno = "Mercoledì";
        break;
    case 4:
        nomeGiorno = "Giovedì";
        break;
    case 5:
        nomeGiorno = "Venerdì";
        break;
    case 6:
        nomeGiorno = "Sabato";
        break;
    case 7:
        nomeGiorno = "Domenica";
        break;
    default:
        nomeGiorno = "Giorno non valido";
}

console.log(nomeGiorno); // "Martedì"

// Switch con multiple cases
let voto = "B";

switch (voto) {
    case "A":
    case "B":
        console.log("Ottimo lavoro!");
        break;
    case "C":
        console.log("Puoi fare meglio");
        break;
    case "D":
    case "F":
        console.log("Devi studiare di più");
        break;
    default:
        console.log("Voto non valido");
}

Cicli e Iterazioni

Ciclo For

js
// Ciclo for standard
for (let i = 0; i < 5; i++) {
    console.log(`Iterazione ${i}`);
}

// Ciclo for con array
let frutta = ["mela", "pera", "banana"];
for (let i = 0; i < frutta.length; i++) {
    console.log(frutta[i]);
}

// for...of (per iterabili come array)
for (let elemento of frutta) {
    console.log(elemento);
}

// for...in (per oggetti, itera sulle chiavi)
let persona = {nome: "Mario", età: 30};
for (let chiave in persona) {
    console.log(`${chiave}: ${persona[chiave]}`);
}

While e Do...While

js
// While - verifica condizione prima di eseguire
let contatore = 0;
while (contatore < 5) {
    console.log(contatore);
    contatore++;
}

// Do...While - esegue almeno una volta
let numero = 10;
do {
    console.log(numero);
    numero--;
} while (numero > 0);

// Esempio pratico: attesa input utente
let inputUtente;
do {
    inputUtente = prompt("Inserisci 'si' per continuare:");
} while (inputUtente !== "si");

Break e Continue

js
// Break - interrompe il ciclo
for (let i = 0; i < 10; i++) {
    if (i === 5) {
        break; // Esce dal ciclo quando i = 5
    }
    console.log(i); // Stampa solo 0, 1, 2, 3, 4
}

// Continue - salta all'iterazione successiva
for (let i = 0; i < 10; i++) {
    if (i % 2 === 0) {
        continue; // Salta i numeri pari
    }
    console.log(i); // Stampa solo 1, 3, 5, 7, 9
}

// Esempio pratico: cerca elemento in array
let numeri = [1, 3, 5, 7, 9, 2, 4, 6];
let primoPari = null;

for (let num of numeri) {
    if (num % 2 === 0) {
        primoPari = num;
        break; // Trovato, esci dal ciclo
    }
}

console.log("Primo numero pari:", primoPari); // 2

🎯 Esercizio Pratico: Analizzatore di Numeri

Obiettivo: Crea un programma che analizza un array di numeri

js
let numeri = [12, 7, 25, 8, 31, 14, 9, 42, 17, 6];

function analizzaNumeri(numeriArray) {
    let pari = [];
    let dispari = [];
    let somma = 0;
    let massimo = numeriArray[0];
    
    for (let numero of numeriArray) {
        // Controlla se pari o dispari
        if (numero % 2 === 0) {
            pari.push(numero);
        } else {
            dispari.push(numero);
        }
        
        // Calcola somma
        somma += numero;
        
        // Trova massimo
        if (numero > massimo) {
            massimo = numero;
        }
    }
    
    return {
        pari: pari,
        dispari: dispari,
        somma: somma,
        media: somma / numeriArray.length,
        massimo: massimo
    };
}

let risultato = analizzaNumeri(numeri);
console.log("Numeri pari:", risultato.pari);
console.log("Numeri dispari:", risultato.dispari);
console.log("Somma totale:", risultato.somma);
console.log("Media:", risultato.media);
console.log("Numero massimo:", risultato.massimo);

Sfida avanzata: Aggiungi queste funzionalità:

  1. Trova i numeri primi nell'array
  2. Conta quanti numeri sono maggiori della media
  3. Ordina i numeri in ordine crescente e decrescente

Torna in alto