// ╔══════════════════════════════════════════════════════════════════════════════╗ // ║ 📇 LA RUBRICA CONTATTI — ESERCIZIO SEMI-GUIDATO ║ // ║ ║ // ║ In questo esercizio devi implementare tutto DA SOLO. ║ // ║ Per ogni capitolo trovi: ║ // ║ ║ // ║ 📋 REQUISITO — cosa devi fare ║ // ║ 💡 HINT — un piccolo aiuto se ti blocchi ║ // ║ ║ // ║ Se non riesci, torna all'Esercizio 1 e ripassa il capitolo corrispondente.║ // ╚══════════════════════════════════════════════════════════════════════════════╝ // ============================================================================ // CAPITOLO 1 — VARIABILI E TIPI // ============================================================================ // 📋 REQUISITO: Crea le variabili fondamentali della rubrica: // - nomeApp (const, string): "La Mia Rubrica" // - versione (const, number): 1.0 // - maxContatti (const, number): 50 // - contattiRegistrati (let, number): 0 // - appAttiva (let, boolean): true // // Stampa tutte le variabili e i loro tipi con typeof. // // 💡 HINT: const per cose che non cambiano, let per cose che cambieranno. // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 2 — OPERATORI // ============================================================================ // 📋 REQUISITO: // 1. Crea "postiLiberi" = maxContatti - contattiRegistrati // 2. Crea "percentualeUso" = (contattiRegistrati / maxContatti) * 100 // 3. Crea "haPosti" = postiLiberi > 0 // 4. Crea "èNuova" = contattiRegistrati === 0 // 5. Crea "puòAccettare" = haPosti && appAttiva // 6. Crea "èPiena" = !haPosti // // Stampa tutti i risultati. // // 💡 HINT: Usa ===, !==, &&, ||, ! come nell'esercizio 1 Capitolo 2. // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 3 — STRUTTURE CONDIZIONALI // ============================================================================ // 📋 REQUISITO: // 1. Dato un numero di telefono (string, es. "+39 333 1234567"): // - Se inizia con "+39" → stampa "📱 Numero italiano" // - Se inizia con "+1" → stampa "🇺🇸 Numero americano" // - Altrimenti → stampa "🌍 Numero internazionale" // HINT: usa stringa.startsWith("+39") // // 2. Data una categoria (string, es. "Lavoro"): // Usa uno switch per stampare un'emoji: // - "Famiglia" → "👨👩👧" // - "Lavoro" → "💼" // - "Amici" → "🎉" // - "Altro" → "📌" // - default → "❓" // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 4 — CICLI // ============================================================================ // 📋 REQUISITO: // 1. Dato questo array di numeri di telefono: const telefoni = ["+39 333 111", "+1 555 222", "+39 06 333", "+44 20 444", "+39 02 555"]; // // Usa un ciclo FOR per contare quanti numeri italiani ci sono // (quelli che iniziano con "+39"). // Stampa: "Numeri italiani: X su Y" // // 2. Usa un ciclo WHILE per stampare: // "Contatto 1 verificato" ... "Contatto 5 verificato" // // 💡 HINT: usa telefoni[i].startsWith("+39") dentro il ciclo. // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 5 — FUNZIONI // ============================================================================ // 📋 REQUISITO: // 1. Crea una funzione "formattaTelefono" che: // - Riceve un numero grezzo (es. "3331234567") // - Restituisce "+39 " + numero // // 2. Crea una funzione "emojiCategoria" che: // - Riceve una categoria (string) // - Restituisce l'emoji corrispondente (come il switch del Cap 3) // // 3. Crea una funzione "creaRiepilogo" che: // - Riceve: nome, cognome, categoria // - Usa emojiCategoria() per ottenere l'emoji // - Restituisce: "EMOJI NOME COGNOME (CATEGORIA)" // - Esempio: "💼 Mario Rossi (Lavoro)" // // Testa tutte e 3 le funzioni con console.log. // // 💡 HINT: Una funzione può chiamarne un'altra (come nell'Esercizio 1, Cap 5). // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 6 — ARRAY // ============================================================================ // 📋 REQUISITO: // 1. Crea un array "categorie" con: "Famiglia", "Lavoro", "Amici", "Altro" // 2. Aggiungi "VIP" con .push() // 3. Rimuovi l'ultimo elemento con .pop() // 4. Stampa quanti elementi ci sono // 5. Crea un array "nomiContatti" con almeno 4 nomi // 6. Usa .map() per creare un nuovo array con i nomi in maiuscolo // 7. Usa un for...of per stampare ogni nome con un prefisso "📇 " // // 💡 HINT: metodi array → .push(), .pop(), .map(), .length // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 7 — OGGETTI // ============================================================================ // 📋 REQUISITO: // 1. Crea un oggetto "contatto" con: // nome, cognome, telefono, email, categoria, preferito (boolean) // // 2. Aggiungi una proprietà "dataCreazione" con la data di oggi: // contatto.dataCreazione = new Date().toLocaleDateString(); // // 3. Usa la destrutturazione per estrarre nome e cognome: // const { nome, cognome } = contatto; // // 4. Crea un array "rubrica" con almeno 3 oggetti contatto // (ognuno con: nome, cognome, telefono, email, categoria, preferito) // // 5. Usa un for...of per stampare ogni contatto della rubrica: // "NOME COGNOME — TELEFONO (CATEGORIA)" // // 💡 HINT: L'array di oggetti è esattamente come "menu" nell'esercizio 1. // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 8 — DOM: SELEZIONE E MODIFICA // ============================================================================ // 📋 REQUISITO: // 1. Seleziona la statistica "stat-totale" e metti rubrica.length // 2. Conta i preferiti nell'array rubrica (quelli con preferito === true) // e metti il numero in "stat-preferiti" // 3. Trova la categoria più frequente nell'array rubrica e mettila in "stat-categoria" // 4. Seleziona "messaggio", scrivi "Rubrica caricata!", rendilo visibile, // e aggiungi la classe "msg-successo" // // 💡 HINT: Per trovare la categoria più frequente, puoi usare un oggetto // come contatore: const conteggio = {}; poi scorrere l'array e contare // (o fare la soluzione semplice se ti blocchi). // 👇 SCRIVI QUI IL TUO CODICE // ============================================================================ // CAPITOLO 9 — DOM: CREAZIONE ELEMENTI E EVENTI // ============================================================================ // 📋 REQUISITO: // 1. Crea una funzione "renderizzaTabella" che: // - Seleziona #corpo-tabella // - Lo svuota (innerHTML = "") // - Per ogni contatto nell'array "rubrica", crea una
. // // 4. VALIDAZIONE EMAIL: Prima di aggiungere un contatto, verifica che l'email // contenga "@" e "." — altrimenti mostra un errore. // 👇 SCRIVI QUI IL TUO CODICE (Bonus) // ✅ Se hai completato tutto, ben fatto! Hai ripassato TUTTO JavaScript! // Hai dimostrato di saper usare JavaScript in autonomia!