From 0043f1f83f1ce8e160303e4d2cfd09b6367831cc Mon Sep 17 00:00:00 2001 From: Berack96 Date: Mon, 2 Feb 2026 23:30:10 +0100 Subject: [PATCH] Esercizio 5 --- .../esercizi/area_rettangolo.js | 2 +- .../esercizi/convertitore_valuta.js | 15 +++ .../esercizi/debug_qualcosa_mancante.js | 21 ++++ .../extra/calcolatrice_funzionale.js | 26 ++++ .../extra/debug_shadowing.js | 24 ++++ .../extra/numero_primo.js | 22 ++++ .../tutorial_interattivo.js | 115 ++++++++++++++++++ 7 files changed, 224 insertions(+), 1 deletion(-) create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/convertitore_valuta.js create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/debug_qualcosa_mancante.js create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/calcolatrice_funzionale.js create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/debug_shadowing.js create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/numero_primo.js create mode 100644 JS_Esercizi/JS_Esercizi 05 - Funzioni/tutorial_interattivo.js diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/area_rettangolo.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/area_rettangolo.js index f3a3cf2..432b5c0 100644 --- a/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/area_rettangolo.js +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/area_rettangolo.js @@ -1,5 +1,5 @@ /** - * Esercizio Intermedio: Calcolo Area + * Esercizio: Calcolo Area * * Descrizione: * Scrivi una funzione che calcoli l'area di un rettangolo e la restituisca. diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/convertitore_valuta.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/convertitore_valuta.js new file mode 100644 index 0000000..67fc789 --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/convertitore_valuta.js @@ -0,0 +1,15 @@ +/** + * Esercizio: Convertitore Euro-Dollaro + * + * Descrizione: + * Simula un convertitore di valuta semplice. + * + * Istruzioni: + * 1. Crea una funzione `convertiInDollari` che accetta un parametro `euro`. + * 2. Assumi che il tasso di cambio sia 1.1 (1 Euro = 1.1 Dollari). + * 3. La funzione deve restituire l'importo convertito. + * 4. Chiama la funzione con 50 euro e stampa il risultato. + * + * Con 50 euro, l'output dovrebbe essere "50 Euro sono 55 Dollari". + * Con 100 euro, l'output dovrebbe essere "100 Euro sono 110 Dollari". + */ diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/debug_qualcosa_mancante.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/debug_qualcosa_mancante.js new file mode 100644 index 0000000..18d93bc --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/esercizi/debug_qualcosa_mancante.js @@ -0,0 +1,21 @@ +/** + * Esercizio (DEBUG): Il Risultato Scomparso + * + * Descrizione: + * Vogliamo calcolare il cubo di un numero (numero**3) oppure (numero * numero * numero). + * Il codice esegue il calcolo, ma quando stampiamo il risultato otteniamo "undefined". + * + * Obiettivo: + * 1. Analizza la funzione `calcolaCubo`. + * 2. Trova cosa manca per far "uscire" il valore dalla funzione. + * 3. Correggi il codice. + */ + +function calcolaCubo(n) { + let cubo = n * n * n; +} + +let risultato = calcolaCubo(3); +console.log("Il cubo di 3 è: " + risultato); +// Attualmente stampa: "Il cubo di 3 è: undefined" +// Dovrebbe stampare: "Il cubo di 3 è: 27" diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/calcolatrice_funzionale.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/calcolatrice_funzionale.js new file mode 100644 index 0000000..4dbbe23 --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/calcolatrice_funzionale.js @@ -0,0 +1,26 @@ +/** + * Esercizio Extra: Calcolatrice Modulare + * + * Descrizione: + * Invece di fare tutto in una funzione, creeremo piccole funzioni specializzate. + * + * Istruzioni: + * 1. Crea almeno tre funzioni semplici che restituiscono un valore: + * - `somma(a, b)` + * - `sottrai(a, b)` + * - `moltiplica(a, b)` + * - (opzionale) `dividi(a, b)` + * + * 2. Crea una funzione principale `eseguiOperazione` che accetta 3 parametri: + * - `n1` + * - `n2` + * - `operazione` (una stringa "+", "-", "*" o "/") + * + * 3. Dentro `eseguiOperazione`, usa un `if` o `switch` su `operazione`. + * 4. In base al tipo, CHIAMA la funzione specifica (es. `somma(n1, n2)`) e restituisci il suo risultato. + * + * Con 5, 3 e "+" come input, `eseguiOperazione` dovrebbe restituire 8. + * Con 10, 4 e "-" dovrebbe restituire 6. + * Con 6, 7 e "*" dovrebbe restituire 42. + * Con 20, 5 e "ciao" dovrebbe restituire undefined, null o NaN. + */ diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/debug_shadowing.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/debug_shadowing.js new file mode 100644 index 0000000..787dcff --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/debug_shadowing.js @@ -0,0 +1,24 @@ +/** + * Esercizio Extra (DEBUG): Variabili Fantasma (Shadowing) + * + * Descrizione: + * Il programmatore voleva aggiornare una variabile globale `punteggio` dentro una funzione. + * Tuttavia, ha commesso un errore nella dichiarazione dei parametri o delle variabili interne, + * creando una nuova variabile locale che "nasconde" quella globale. + * + * Il punteggio finale rimane 0 invece di 10. + * + * Obiettivo: + * Correggi la funzione affinché modifichi la variabile esterna `punteggioTotale`. + */ + +let punteggioTotale = 0; + +function aggiungiPunti(punti) { + let punteggioTotale = punti; + + console.log("Punteggio dentro la funzione: " + punteggioTotale); +} + +aggiungiPunti(10); +console.log("Punteggio finale globale: " + punteggioTotale); // Stampa 0, dovrebbe essere 10. diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/numero_primo.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/numero_primo.js new file mode 100644 index 0000000..aebe322 --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/extra/numero_primo.js @@ -0,0 +1,22 @@ +/** + * Esercizio Extra: Verifica Numero Primo + * + * Descrizione: + * Un numero primo è divisibile solo per 1 e per se stesso. + * + * Obiettivo: + * Scrivi una funzione `èPrimo(n)` che restituisce `true` se il numero è primo, e `false` se non lo è. + * + * Istruzioni: + * 1. La funzione accetta un numero `n`. + * 2. Se `n` è minore di 2, restituisci `false`. + * 3. Usa un ciclo `for` che parte da 2 e arriva fino a `n - 1`. + * 4. Dentro il ciclo, controlla se `n` è divisibile per il contatore (n % i === 0). + * 5. Se trovi un divisore, restituisci SUBITO `false` (il numero non è primo). + * 6. Se il ciclo finisce senza trovare divisori, restituisci `true`. + * + * Con 7 dovrebbe restituire `true` + * Con 10 dovrebbe restituire `false` + * Con 401 dovrebbe restituire `true` + * Con 459 dovrebbe restituire `false` + */ diff --git a/JS_Esercizi/JS_Esercizi 05 - Funzioni/tutorial_interattivo.js b/JS_Esercizi/JS_Esercizi 05 - Funzioni/tutorial_interattivo.js new file mode 100644 index 0000000..43382c7 --- /dev/null +++ b/JS_Esercizi/JS_Esercizi 05 - Funzioni/tutorial_interattivo.js @@ -0,0 +1,115 @@ +/** + * =========================================== + * === 1. Dichiarazione e Chiamata === + * Una funzione è un blocco di codice riutilizzabile. + * Si dichiara con la parola chiave 'function'. + * Il codice dentro la funzione non viene eseguito finché non la "chiami". + */ + +// Esempio: +function saluta() { + console.log("Ciao mondo!"); +} +// Per eseguirla: +saluta(); + +// TODO: Dichiara una funzione chiamata 'stampaBenvenuto' che stampi "Benvenuto al corso!". +// Poi chiama la funzione. + +// OUTPUT ATTESO: +// Benvenuto al corso! + + +/** + * =========================================== + * === 2. I Parametri === + * Le funzioni possono ricevere dati in ingresso chiamati "parametri". + * I parametri agiscono come variabili locali dentro la funzione. + */ + +function salutaPersona(nome) { + console.log("Ciao " + nome); +} + +// TODO: Chiama la funzione 'salutaPersona' due volte: +// 1. Passando il nome "Mario". +// 2. Passando il nome "Luigi". + +// OUTPUT ATTESO: +// Ciao Mario +// Ciao Luigi + + +/** + * =========================================== + * === 3. Parametri Multipli === + * Puoi passare più parametri separandoli da virgola. + * L'ordine è importante! + */ + +// TODO: Scrivi una funzione 'descriviPersona' che accetta due parametri: 'nome' e 'età'. +// La funzione deve stampare: nome + " ha " + età + " anni." +// Poi chiamala con "Anna" e 25. + +// OUTPUT ATTESO: +// Anna ha 25 anni. + + +/** + * =========================================== + * === 4. Il Valore di Ritorno (Return) === + * Una funzione può "restituire" un risultato al codice che l'ha chiamata. + * Si usa la parola chiave 'return'. + */ + +function somma(a, b) { + let risultato = a + b; + return risultato; +} + +let x = somma(5, 3); // x ora vale 8. Nulla viene stampato qui. +console.log("Il risultato è: " + x); + +// TODO: Scrivi una funzione 'moltiplica' che accetta due numeri e RESTITUISCE (return) il loro prodotto. +// Poi salva il risultato di moltiplica(4, 5) in una variabile e stampalo. + +// OUTPUT ATTESO: +// 20 + + +/** + * =========================================== + * === 5. Usare le Funzioni nella Logica === + * Possiamo usare il valore restituito da una funzione direttamente dentro un 'if'. + */ + +// TODO: Scrivi una funzione 'èMaggiorenne' che accetta un numero (età). +// Se età >= 18 restituisce true, altrimenti false. +// Poi scrivi un if che usa questa funzione per stampare "Sei maggiorenne" o "Sei minorenne". + +// OUTPUT ATTESO (provando con 20): +// Sei maggiorenne + + +/** + * =========================================== + * === 6. Scope (Visibilità) === + * Le variabili definite dentro una funzione (con let) NON esistono fuori di essa. + * Stessa cosa vale per i parametri, che sono visibili SOLO dentro la funzione. + * È chiamato "scope" (ambito) della variabile. + */ + +function testScope(variabileLocale) { + let segreto = "Codice123" + variabileLocale; + return segreto; +} + +// TODO: Prova a decommentare la riga sotto e osserva l'errore. +// console.log(segreto); +// console.log(variabileLocale); + +// TODO: Correggi l'errore: crea una variabile 'codiceEsterno' e assegnale il risultato della chiamata a 'testScope("456")'. +// Poi stampa 'codiceEsterno'. + +// OUTPUT ATTESO: +// Codice123456