๐ Benvenuto nella Lezione 8!
Bentornato Navigator! ๐ฏ Hai imparato if/else per le condizioni. Ma cosa fai quando hai 10, 20 o piรน opzioni da gestire?
Lo switch statement รจ perfetto per questi casi! ร piรน pulito, leggibile e performante quando hai molte condizioni basate su UN valore.
In questa lezione creerai un sistema di tab interattivo come quelli di app professionali! ๐ฑ
๐ฏ Cosa Imparerai
- โ Sintassi switch statement completa
- โ Case multipli e break
- โ Default case per gestire il resto
- โ Quando usare switch vs if/else
- โ Navigazione tra contenuti
- โ Progetto: Menu tab con 4 sezioni
๐ฎ Dove Si Usa Switch?
Switch รจ perfetto per:
- ๐ฑ Menu navigazione: Home, About, Services, Contact
- ๐ฎ Stati di gioco: menu, playing, paused, game-over
- ๐ Lingue: it, en, es, fr, de
- ๐ Giorni settimana: lun, mar, mer...
- ๐จ Temi: light, dark, blue, custom
๐ Demo: Selettore Giorni
Clicca un giorno e vedi il messaggio cambiare!
๐ Che giorno รจ oggi?
๐ค Come Funziona?
Il codice usa uno switch:
switch (giorno) {
case 'lun':
messaggio = '๐ผ Inizio settimana!';
break;
case 'ven':
messaggio = '๐ Ultimo giorno!';
break;
case 'sab':
case 'dom':
messaggio = '๐๏ธ Weekend!';
break;
default:
messaggio = 'Giorno lavorativo';
}
๐ Switch Statement: Sintassi Base
Switch valuta UN'espressione e confronta con diversi case:
Sintassi
switch (espressione) {
case valore1:
// Codice se espressione === valore1
break;
case valore2:
// Codice se espressione === valore2
break;
default:
// Codice se nessun case corrisponde
}
Esempio Pratico: Voti
const voto = 'A';
switch (voto) {
case 'A':
console.log('๐ Eccellente!');
break;
case 'B':
console.log('๐ Ottimo!');
break;
case 'C':
console.log('โ
Buono');
break;
case 'D':
console.log('โ ๏ธ Sufficiente');
break;
default:
console.log('โ Insufficiente');
}
๐ Come Funziona
- Switch valuta l'espressione (es.
voto) - Confronta con ogni
caseusando=== - Quando trova un match, esegue quel codice
- Il
breakesce dallo switch defaultviene eseguito se nessun case corrisponde
๐ Break e Default
Perchรฉ serve Break?
Senza break, il codice continua nei case successivi!
const giorno = 1;
switch (giorno) {
case 1:
console.log('Lunedรฌ');
// Manca break! โ
case 2:
console.log('Martedรฌ');
// Anche questo viene eseguito!
case 3:
console.log('Mercoledรฌ');
}
// Output: Lunedรฌ, Martedรฌ, Mercoledรฌ ๐ฑ
Case Multipli (Fall-Through Voluto)
A volte vuoi che piรน case eseguano lo stesso codice:
const giorno = 'sab';
switch (giorno) {
case 'lun':
case 'mar':
case 'mer':
case 'gio':
case 'ven':
console.log('๐ผ Giorno lavorativo');
break;
case 'sab':
case 'dom':
console.log('๐๏ธ Weekend!');
break;
default:
console.log('โ ๏ธ Giorno non valido');
}
Default Case
const lingua = 'jp';
switch (lingua) {
case 'it':
saluto = 'Ciao';
break;
case 'en':
saluto = 'Hello';
break;
case 'es':
saluto = 'Hola';
break;
default:
saluto = 'Hello (default)'; // 'jp' non รจ nei case
}
โ ๏ธ Ricorda!
- SEMPRE metti
break(tranne fall-through voluto) defaultรจ opzionale ma consigliatodefaultpuรฒ essere ovunque, ma di solito รจ alla fine
โ๏ธ Switch vs If/Else
Quando usare switch e quando if/else?
| Criterio | Switch | If/Else |
|---|---|---|
| Confronti | โ UN valore con molte opzioni | Condizioni diverse |
| Leggibilitร | โ Piรน pulito con 5+ opzioni | Meno chiaro con molti else if |
| Flessibilitร | Solo uguaglianza (===) | โ Qualsiasi condizione (>, <, &&, ||) |
| Performance | โ Piรน veloce con molti case | Controlla ogni condizione |
Esempio Confronto
switch (ruolo) {
case 'admin':
accesso = 'completo';
break;
case 'editor':
accesso = 'modifica';
break;
case 'viewer':
accesso = 'lettura';
break;
default:
accesso = 'guest';
}
if (ruolo === 'admin') {
accesso = 'completo';
} else if (ruolo === 'editor') {
accesso = 'modifica';
} else if (ruolo === 'viewer') {
accesso = 'lettura';
} else {
accesso = 'guest';
}
โ Quando Usare Cosa
Usa Switch quando:
- Confronti UN valore con 5+ opzioni
- Hai valori esatti da confrontare (stringhe, numeri)
- Menu, navigazione, stati
Usa If/Else quando:
- Condizioni complesse (&&, ||, >, <)
- Range di valori (etร > 18)
- Condizioni diverse tra loro
โ๏ธ Esercizio Guidato: Calculator Display
Crea una calcolatrice che mostra operazioni diverse usando switch!
๐ Cosa Devi Fare
- Seleziona i 2 input numeri e il select operazione
- Seleziona il bottone calcola e il div risultato
- Aggiungi evento click al bottone
- Prendi i valori e convertili in numeri
- Usa switch per gestire le 4 operazioni (+, -, *, /)
- Mostra il risultato con operatore emoji
๐ Struttura HTML da Usare
Ecco gli elementi HTML con cui lavorerai:
<!-- Numeri -->
<input id="calcNum1" type="number" value="10">
<input id="calcNum2" type="number" value="5">
<!-- Operazione -->
<select id="calcOperation">
<option value="+">Addizione</option>
<option value="-">Sottrazione</option>
<option value="*">Moltiplicazione</option>
<option value="/">Divisione</option>
</select>
<!-- Controlli -->
<button id="btnCalculate">Calcola</button>
<div id="calcResult"></div>
#calcNum1โ Primo numero#calcNum2โ Secondo numero#calcOperationโ Operazione (valori: "+", "-", "*", "/")#btnCalculateโ Bottone calcola#calcResultโ Div risultato
๐งฎ Calcolatrice
๐ฎ Progetto Finale: Menu Tab Profilo Completo
ร il momento del progetto vero! ๐ฑ
Creerai un sistema di tab professionale con:
- โ 4 tab: Info, Skills, Projects, Settings
- โ Switch per gestire la navigazione
- โ Contenuti diversi per ogni tab
- โ Tab attivo evidenziato
- โ Animazioni smooth
๐ฏ Obiettivi del Progetto
- โ Click su tab โ mostra contenuto corrispondente
- โ Nascondi tutti i panel prima
- โ Switch per decidere quale mostrare
- โ Classe 'active' sul tab selezionato
- โ Classe 'active' sul panel visibile
๐ Riferimento Elementi HTML
<!-- Tab Buttons (4) -->
<button id="tabInfo" class="profile-tab">๐ Info</button>
<button id="tabSkills">๐ช Skills</button>
<button id="tabProjects">๐ Projects</button>
<button id="tabSettings">โ๏ธ Settings</button>
<!-- Content Panels (4) -->
<div id="panelInfo" class="profile-panel">...</div>
<div id="panelSkills">...</div>
<div id="panelProjects">...</div>
<div id="panelSettings">...</div>
๐ฑ Il Profilo Live
๐ Progetti Recenti
โ๏ธ Preferenze
๐ป Completa il Codice del Menu Tab
๐ฏ Conclusione: Sei un Navigation Master!
โ Recap: Cosa Hai Imparato
- โ Sintassi switch completa (case, break, default)
- โ Fall-through voluto per case multipli
- โ Quando usare switch vs if/else
- โ Switch per navigazione menu
- โ Sistema tab completo e professionale!
๐ Challenge: Vai Oltre!
Migliora il menu tab aggiungendo:
- โจ๏ธ Keyboard Nav: Frecce destra/sinistra per cambiare tab
- ๐ URL Sync: Sincronizza tab con URL hash (#info)
- ๐พ Salva Tab: Ricorda ultimo tab visitato
- ๐ Piรน Sezioni: Aggiungi tab Activity, Messages
- ๐จ Temi: Switch per cambiare tema profilo