🔄 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à:
- Trova i numeri primi nell'array
- Conta quanti numeri sono maggiori della media
- Ordina i numeri in ordine crescente e decrescente