03

Giocare con i Numeri ๐Ÿ”ข

JavaScript รจ un campione di matematica! Impara a fare calcoli, convertire tipi, usare Math, e costruisci una calcolatrice completa e funzionante.

โฑ๏ธ 40 minuti ๐ŸŽฏ Livello: Principiante ๐ŸŽฎ 1 Calcolatrice Completa

๐Ÿ“š 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

Math.floor() 3 โ†“ In giรน
Math.round() 4 โ†•๏ธ Piรน vicino
Math.ceil() 4 โ†‘ In su

๐Ÿ’ช Potenze e Radici

elevato a
2ยณ = 8

๐Ÿค” Cosa Hai Visto?

  • ๐ŸŽฒ Numeri casuali: Math.random() genera numeri tra 0 e 1
  • ๐Ÿ“ Arrotondamenti: floor (giรน), round (vicino), ceil (su)
  • ๐Ÿ’ช Potenze: ** o Math.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:

  1. Parentesi ( ) โ†’ Prima di tutto
  2. Potenze ** โ†’ Poi le potenze
  3. Moltiplicazione e Divisione * / % โ†’ Da sinistra a destra
  4. 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...
Uso comune:
// 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

Valore originale: -
Tipo originale: -
Number(): -
parseInt(): -
parseFloat(): -

๐Ÿ“ 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

  1. Prendi i valori dai due input (e convertili in numeri!)
  2. Quando clicchi "+", somma i due numeri
  3. Quando clicchi "-", sottrai
  4. Quando clicchi "*", moltiplica
  5. Quando clicchi "/", dividi (controlla divisione per zero!)
  6. Mostra il risultato nel display

๐Ÿ“ Struttura HTML da Usare

Ecco gli elementi con cui lavorerai:

HTML - Elementi della Calcolatrice
<!-- 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>
๐Ÿ“Œ IDs da Usare:
  • #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!

0

๐Ÿ’พ 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 ZIP

Pratica Math.random(), toFixed(), e formule matematiche!

01
โญโญ Medio โฑ๏ธ 15-20 min

๐Ÿ”ข Calcolatrice Base

Crea una calcolatrice con le 4 operazioni base. Impara Number() e gli operatori matematici.

โœ… Number() conversione โœ… Operatori +, -, *, / โœ… Input utente ๐ŸŒŸ Bonus: Divisione per zero
02
โญโญ Medio โฑ๏ธ 20-25 min

๐ŸŽฒ Gioco del Dado

Tira un dado virtuale! Usa Math.random(), Math.floor() e Math.max() per creare un gioco interattivo.

โœ… Math.random() โœ… Math.floor() โœ… Math.max() ๐ŸŒŸ Bonus: Statistiche
03
โญโญโญ Difficile โฑ๏ธ 25-30 min

๐ŸŒก๏ธ Convertitore Temperature

Converti tra Celsius e Fahrenheit usando formule matematiche e toFixed() per arrotondare.

โœ… Formule matematiche โœ… toFixed() arrotondamento โœ… Conversioni bidirezionali ๐ŸŒŸ Bonus: Kelvin

๐Ÿ“ฆ Cosa Include

๐Ÿ”ข
Math.random()

Genera numeri casuali

๐Ÿ“
Arrotondamenti

floor(), ceil(), toFixed()

๐Ÿ”„
Number()

Conversione stringa โ†’ numero

โž•
Operatori

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:

HTML - 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>
๐Ÿ“Œ Selettori da Usare:
IDs:
  • #display โ†’ Display principale
  • #history โ†’ Storico
  • #clear โ†’ Bottone C
  • #equals โ†’ Bottone =
  • #decimal โ†’ Bottone punto
Classi:
  • .num โ†’ Tutti i numeri
  • .operator โ†’ Tutti gli operatori
  • data-num โ†’ Valore del numero
  • data-op โ†’ Tipo di operatore

๐Ÿ’ก Tip: Usa querySelectorAll('.num') per selezionare tutti i numeri, poi forEach per aggiungere eventi!

๐Ÿ“ฑ La Calcolatrice Live

0

๐Ÿ’ป 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 โ†’ legge data-num
  • button.dataset.op โ†’ legge data-op

๐Ÿ’ก Cosรฌ ogni bottone "sa" quale valore rappresenta!

๐ŸŽฏ Conclusione: Sei un Math Wizard! ๐Ÿง™โ€โ™‚๏ธ

โœ… Recap: Cosa Hai Imparato

  • โœ… Tutti gli operatori matematici: +, -, *, /, %, **
  • โœ… L'oggetto Math e 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!

๐Ÿ“š Prossima Lezione

Nella Lezione 4 imparerai a giocare con il TESTO! Manipolare stringhe, template literals avanzati, e costruirai un Generatore di Biglietti Personalizzati! ๐Ÿ“โœจ