๐ Benvenuto nella Lezione 3!
Bentornato Math Wizard! ๐งโโ๏ธ Hai imparato a usare le variabili. Ora รจ il momento di farle LAVORARE con la matematica!
JavaScript non รจ solo per fare animazioni e cambiare colori. ร anche un potentissimo calcolatore! Puoi fare calcoli complessi, generare numeri casuali, arrotondare, calcolare radici quadrate, e molto altro.
In questa lezione costruirai una calcolatrice vera e propria, come quella del tuo telefono! ๐ฑ
๐ฏ Cosa Imparerai
- โ Tutti gli operatori matematici (+, -, *, /, %, **)
- โ L'oggetto Math e i suoi metodi potenti
- โ Come convertire stringhe in numeri (e viceversa)
- โ Tecniche di arrotondamento (floor, ceil, round)
- โ Come gestire input numerici dell'utente
- โ Costruire una calcolatrice funzionante completa
๐ฎ Perchรฉ la Matematica in JavaScript?
Quasi ogni applicazione web usa la matematica:
- ๐ E-commerce: Calcolare totali, sconti, tasse, spedizioni
- ๐ฎ Giochi: Punteggi, fisica, collisioni, posizioni
- ๐ Grafici: Statistiche, percentuali, medie
- ๐จ Animazioni: Transizioni, easing, timing
- ๐ฐ Finanza: Interessi, rate, conversioni valute
๐ Demo Interattiva: Playground Matematico
Prima di tutto, gioca con i numeri! Vedi cosa puรฒ fare JavaScript ๐
๐ฒ Generatore Numeri Casuali
๐ Arrotondamenti Magici
๐ช Potenze e Radici
๐ค Cosa Hai Visto?
- ๐ฒ Numeri casuali:
Math.random()genera numeri tra 0 e 1 - ๐ Arrotondamenti: floor (giรน), round (vicino), ceil (su)
- ๐ช Potenze:
**oMath.pow()per elevare a potenza - ๐ Radici:
Math.sqrt()per la radice quadrata
โ Operatori Matematici Completi
Hai giร visto gli operatori base. Ora vediamoli TUTTI in dettaglio!
Addizione
10 + 5 // 15
-3 + 8 // 5
Somma due numeri
Sottrazione
10 - 5 // 5
5 - 10 // -5
Sottrae il secondo dal primo
Moltiplicazione
10 * 5 // 50
-2 * 3 // -6
Moltiplica due numeri
Divisione
10 / 5 // 2
10 / 3 // 3.333...
Divide il primo per il secondo
Resto (Modulo)
10 % 3 // 1
15 % 4 // 3
Resto della divisione
Potenza
2 ** 3 // 8 (2ยณ)
5 ** 2 // 25 (5ยฒ)
Eleva il primo alla potenza del secondo
โ ๏ธ Ordine delle Operazioni (Precedenza)
JavaScript segue le regole matematiche standard:
- Parentesi
( )โ Prima di tutto - Potenze
**โ Poi le potenze - Moltiplicazione e Divisione
* / %โ Da sinistra a destra - Addizione e Sottrazione
+ -โ Infine
5 + 3 * 2
โ
5 + 6
โ
11
* prima di +
(5 + 3) * 2
โ
8 * 2
โ
16
() prima di tutto
10 / 2 + 3
โ
5 + 3
โ
8
/ prima di +
โ๏ธ Prova Tu: Precedenza Operatori
Indovina il risultato PRIMA di eseguire il codice!
10 + 5 * 2
(10 + 5) * 2
2 ** 3 + 1
๐ฒ L'Oggetto Math: Superpotere Matematico
JavaScript ha un oggetto speciale chiamato Math pieno di metodi utili!
Math.random()
Numero casuale tra 0 e 1
Math.random() // 0.7392...
// Numero casuale da 1 a 100
Math.floor(Math.random() * 100) + 1
Math.floor()
Arrotonda per difetto (giรน)
Math.floor(4.9) // 4
Math.floor(-4.1) // -5
Math.ceil()
Arrotonda per eccesso (su)
Math.ceil(4.1) // 5
Math.ceil(-4.9) // -4
Math.round()
Arrotonda al piรน vicino
Math.round(4.5) // 5
Math.round(4.4) // 4
Math.abs()
Valore assoluto (rimuove il segno)
Math.abs(-5) // 5
Math.abs(5) // 5
Math.pow()
Potenza (alternativa a **)
Math.pow(2, 3) // 8
Math.pow(5, 2) // 25
Math.sqrt()
Radice quadrata
Math.sqrt(9) // 3
Math.sqrt(16) // 4
Math.max() / min()
Massimo/Minimo tra numeri
Math.max(5, 10, 3) // 10
Math.min(5, 10, 3) // 3
Math.PI
Costante Pi Greco (ฯ)
Math.PI // 3.14159...
๐ก Esempi Pratici
๐ฒ Dado a 6 Facce
// Numero casuale da 1 a 6
const dado = Math.floor(Math.random() * 6) + 1;
console.log("Hai tirato:", dado);
โญ Calcolare l'Area di un Cerchio
const raggio = 5;
const area = Math.PI * Math.pow(raggio, 2);
// oppure: Math.PI * raggio ** 2
console.log("Area:", area.toFixed(2));
๐ฐ Arrotondare Prezzo a 2 Decimali
const prezzo = 19.999;
const prezzoArrotondato = Math.round(prezzo * 100) / 100;
console.log(prezzoArrotondato); // 20.00
๐ Conversioni di Tipo: Da Stringa a Numero
Problema comune: l'input dell'utente รจ sempre una stringa, anche se sembra un numero!
โ ๏ธ Il Problema dell'Input
const input = document.querySelector('input').value;
console.log(input); // "10" (stringa!)
console.log(typeof input); // "string"
// Problema: "10" + "5" = "105" (concatenazione!)
console.log(input + "5"); // "105" โ
โ Metodi di Conversione
Number()
Il piรน comune e sicuro
Number("42") // 42
Number("3.14") // 3.14
Number("ciao") // NaN
parseInt()
Converte in numero intero
parseInt("42") // 42
parseInt("3.14") // 3 (tronca)
parseInt("42px") // 42 (ignora resto)
parseFloat()
Converte in numero decimale
parseFloat("3.14") // 3.14
parseFloat("3.14px") // 3.14
Operatore + (Unario)
Modo veloce e moderno
+"42" // 42
+"3.14" // 3.14
๐ NaN: Not a Number
NaN รจ un valore speciale che significa "Non รจ un Numero"
Number("ciao") // NaN
10 / "abc" // NaN
// Controllare se รจ NaN:
isNaN(NaN) // true
isNaN(42) // false
Number.isNaN(NaN) // true (piรน affidabile)
๐ฎ Convertitore Interattivo
๐ Arrotondamenti e Precisione
JavaScript usa numeri decimali "floating point" che a volte danno risultati strani!
โ ๏ธ Il Problema della Precisione
// Problema famoso:
0.1 + 0.2 // 0.30000000000000004 ๐ฑ
// Soluzione: Arrotondare!
(0.1 + 0.2).toFixed(1) // "0.3"
๐ ๏ธ Metodi di Arrotondamento
toFixed(n)
Arrotonda a n decimali (restituisce stringa)
const num = 3.14159;
num.toFixed(2) // "3.14"
num.toFixed(0) // "3"
// Per ottenere un numero:
Number(num.toFixed(2)) // 3.14
toPrecision(n)
n cifre significative totali
const num = 123.456;
num.toPrecision(4) // "123.5"
num.toPrecision(2) // "1.2e+2"
Math.round() con Decimali
Tecnica per arrotondare a n decimali
const num = 3.14159;
// Arrotonda a 2 decimali:
Math.round(num * 100) / 100 // 3.14
// Arrotonda a 3 decimali:
Math.round(num * 1000) / 1000 // 3.142
โ๏ธ Esercizio Guidato: Mini-Calcolatrice
Mettiamo in pratica tutto! Creiamo una calcolatrice che fa le 4 operazioni base.
๐ Cosa Devi Fare
- Prendi i valori dai due input (e convertili in numeri!)
- Quando clicchi "+", somma i due numeri
- Quando clicchi "-", sottrai
- Quando clicchi "*", moltiplica
- Quando clicchi "/", dividi (controlla divisione per zero!)
- Mostra il risultato nel display
๐ Struttura HTML da Usare
Ecco gli elementi con cui lavorerai:
<!-- Input numeri -->
<input type="number" id="num1">
<input type="number" id="num2">
<!-- Display risultato -->
<div id="calcResult">0</div>
<!-- Bottoni operazioni -->
<button id="btnAdd">+</button>
<button id="btnSubtract">-</button>
<button id="btnMultiply">*</button>
<button id="btnDivide">/</button>
#num1โ Primo numero input#num2โ Secondo numero input#calcResultโ Display del risultato#btnAddโ Bottone somma#btnSubtractโ Bottone sottrazione#btnMultiplyโ Bottone moltiplicazione#btnDivideโ Bottone divisione
๐ก Ricorda: Usa Number(input.value) per convertire!
๐พ Esercizi Pratici da Scaricare
Pronto a mettere in pratica la matematica? Ho preparato 3 esercizi progressivi per padroneggiare Math, operatori e conversioni!
HTML e CSS pronti - tu completi solo il JavaScript seguendo le istruzioni! ๐
Scarica Tutti gli Esercizi
3 esercizi: calcolatrice, dado, convertitore temperature
๐ฅ Scarica ZIPPratica Math.random(), toFixed(), e formule matematiche!
๐ข Calcolatrice Base
Crea una calcolatrice con le 4 operazioni base. Impara Number() e gli operatori matematici.
๐ฒ Gioco del Dado
Tira un dado virtuale! Usa Math.random(), Math.floor() e Math.max() per creare un gioco interattivo.
๐ก๏ธ Convertitore Temperature
Converti tra Celsius e Fahrenheit usando formule matematiche e toFixed() per arrotondare.
๐ฆ Cosa Include
Genera numeri casuali
floor(), ceil(), toFixed()
Conversione stringa โ numero
Tutti gli operatori matematici
๐ Pronto per la Matematica?
Scarica e pratica Math, operatori e conversioni!
๐ฅ Scarica Esercizi๐ฎ Progetto Finale: Calcolatrice Completa
Il grande finale! ๐
Costruirai una calcolatrice professionale con:
- โ Display stile iPhone
- โ Bottoni numerici (0-9)
- โ Operazioni (+, -, *, /)
- โ Punto decimale
- โ Clear (C) e Delete
- โ Uguale (=) per il risultato
- โ Storico operazioni
๐ฏ Obiettivi del Progetto
- โ Input da tastiera (bottoni numerici)
- โ Gestione operatori (+, -, *, /)
- โ Calcolo al click di "="
- โ Clear e delete funzionanti
- โ Gestione errori (divisione per zero)
- โ Storico delle operazioni
๐ Riferimento Elementi HTML
La calcolatrice ha molti elementi. Ecco la mappa completa:
<!-- Display -->
<div id="display">0</div>
<div id="history"></div>
<!-- Bottoni usano CLASSI (non ID!) -->
<button class="num" data-num="1">1</button>
<button class="operator" data-op="+">+</button>
<!-- Bottoni speciali -->
<button id="clear">C</button>
<button id="equals">=</button>
<button id="decimal">.</button>
#displayโ Display principale#historyโ Storico#clearโ Bottone C#equalsโ Bottone =#decimalโ Bottone punto
.numโ Tutti i numeri.operatorโ Tutti gli operatoridata-numโ Valore del numerodata-opโ Tipo di operatore
๐ก Tip: Usa querySelectorAll('.num') per selezionare tutti i numeri, poi forEach per aggiungere eventi!
๐ฑ La Calcolatrice Live
๐ป Completa il Codice JavaScript
Segui la struttura e completa le parti mancanti:
๐ Come Funzionano i Data Attributes
Nell'HTML ogni bottone ha attributi data-*:
<button class="num" data-num="7">7</button>
<button class="operator" data-op="+">+</button>
In JavaScript li leggi con button.dataset:
button.dataset.numโ leggedata-numbutton.dataset.opโ leggedata-op
๐ก Cosรฌ ogni bottone "sa" quale valore rappresenta!
๐ฏ Conclusione: Sei un Math Wizard! ๐งโโ๏ธ
โ Recap: Cosa Hai Imparato
- โ
Tutti gli operatori matematici:
+,-,*,/,%,** - โ
L'oggetto
Mathe i suoi metodi: random, floor, ceil, round, sqrt, pow - โ
Come convertire stringhe in numeri:
Number(),parseInt(),parseFloat() - โ
Arrotondare numeri con
toFixed()e tecniche avanzate - โ Gestire la precedenza degli operatori con le parentesi
- โ Costruire una calcolatrice completa e funzionante
๐ Challenge: Vai Oltre!
Migliora la calcolatrice aggiungendo:
- โจ๏ธ Supporto tastiera: premi i tasti della tastiera invece dei bottoni
- ๐งฎ Operazioni avanzate: percentuale (%), radice quadrata (โ)
- ๐ Storico completo: salva tutte le operazioni fatte
- ๐จ Temi colorati: cambia colore in base all'operazione
- ๐พ LocalStorage: salva l'ultima operazione
- ๐ Suoni: beep quando premi un bottone
๐ Hai Padroneggiato la Matematica in JavaScript!
Operazioni
Tutte le operazioni matematiche di base e avanzate
Math Object
Random, arrotondamenti, potenze, radici
Conversioni
Stringa โ Numero senza problemi
Calcolatrice
Progetto complesso completato!
๐ฌ Esercizi Extra per Casa
- Convertitore Unitร : Crea un convertitore km โ miglia, ยฐC โ ยฐF
- Calcolatore Etร : Inserisci anno di nascita, calcola etร e giorni vissuti
- Gioco Indovina Numero: Computer sceglie un numero (1-100), tu indovini
- Calcolatore IMC: Input peso e altezza, calcola l'indice di massa corporea
- Calcolatore Interessi: Capitale iniziale, tasso interesse, anni โ capitale finale
La matematica รจ ovunque! Divertiti a creare calcolatori utili! ๐