Miglioramenti codice

Reeaver

Utente Attivo
1,181
132
CPU
AMD RYZEN 5 1600
Dissipatore
NOCTUA NH-U12S
Scheda Madre
MSI B350 TOMAHAWK
HDD
SSD SAMSUNG 850 250 GB + WD CAVIAR BLUE 1TB
RAM
HYPER X 16GB 2400MHz DDR4 LP
GPU
ASUS ROG STRIX GTX1070 O8GB
Audio
INTEGRATA
Monitor
SAMSUNG C24F390
PSU
SEASONIC SSR-550M
Case
NZXT S340
Periferiche
MOUSE, TASTIERA, MANI
Net
FIBRA FTTH 1GB
OS
WINDOWS 10 PRO 64-BIT
Salve a tutti

Ho appena cominciato un corso di programmazione (Foundations of Programming - Simon Allardice - Lynda.com). Per spiegare i vari concetti viene usato come linguaggio Javascript. Variabili, stringhe, condizione sono spiegati molto bene (in inglese) e di facile comprendimento.

Per allenarmi un po' mi sono proposto di creare un programma che risolva un'equazione di secondo grado. Basta inserire i valori di A, B e C quando richiesti e vengono restituiti i valori di X1 e X2.

Questo è quello che ho scritto.

Codice:
// Equazioni di secondo grado - Codice

alert("Questo programma restituisce il risultato di un'incognita in un equazione di secondo grado");
alert("Inserire i dati quando richiesto");

// Formula = [-b +- (√ b*2 - 4ac)]  / 2a
// Ax*2 + Bx + C = 0

var a = prompt("Inserisci il valore di a");

var b = prompt("Inserisci il valore di b");

var c = prompt("Inserisci il valore di c");

var d = b*b  // Calcolo di B al quadrato
var e = 4*(a*c)  // Calcolo di 4AC
var f = 2*a  // Calcolo di 2A sotto radice
var g = (d-e)  // Calcolo del risultato totale sotto radice

var j = Math.sqrt(g); // Calcolo radice quadrata

// Le lettere sono state "invertite". Non credo questo cambi il risultato.

var h = -b+j  // Somma di -B e il valore della radice
var i = -b-j  // Sottrazione di -B e il valore della radice


alert("Il valore di X1 e'...");
alert(i / f);

alert("Il valore di X2 e'...");
alert(h / f);

Ho notato prima di tutto che se vengono inseriti certi valori, mi viene restituito un errore NaN (e va bene se il numero che va sotto radice è negativo).

Inoltre, ho verificato i risultati e sono giusti. Probabilmente i risulatati di X1 e X2 sono invertiti (mi è successo durante alcune verifiche). Non so perchè certe volte funziona bene e altre no.

Ma la domanda è questa: voi cosa migliorereste ? Sintassi ? Logica ?

C'è da tener conto che fino ad ora ho un'infarinatura dei concetti if ed else.
 

BAT

Moderatore
Staff Forum
Utente Èlite
8,321
3,543
CPU
Neurone solitario
Dissipatore
Ventaglio azionato a mano
Scheda Madre
Casalinga
RAM
Molto molto volatile
GPU
Binoculare integrata nel cranio
PSU
Pastasciutta, pollo e patatine al forno
Net
Segnali di fumo e/o tamburi
OS
Windows 10000 BUG
l'ordine con cui le radici dell'equazione vengono presentati non è importante, è sufficiente che siano corretti;
per quanto riguarda il codice puoi usare meno variabili, per esempio
var delta = b*b-4*a*c
non c'è bisogno di parentesi, le moltiplicazioni vengono eseguite per prime come in algebra;
potresti inserire un controllo sul segno di delta, per restituire i valori complessi coniugati
 
  • Like
Reactions: Reeaver

Reeaver

Utente Attivo
1,181
132
CPU
AMD RYZEN 5 1600
Dissipatore
NOCTUA NH-U12S
Scheda Madre
MSI B350 TOMAHAWK
HDD
SSD SAMSUNG 850 250 GB + WD CAVIAR BLUE 1TB
RAM
HYPER X 16GB 2400MHz DDR4 LP
GPU
ASUS ROG STRIX GTX1070 O8GB
Audio
INTEGRATA
Monitor
SAMSUNG C24F390
PSU
SEASONIC SSR-550M
Case
NZXT S340
Periferiche
MOUSE, TASTIERA, MANI
Net
FIBRA FTTH 1GB
OS
WINDOWS 10 PRO 64-BIT
potresti inserire un controllo sul segno di delta, per restituire i valori complessi coniugati

cosa vuol dire ?

Sapete per caso come si potrebbe la scritta NaN con "Impossibile" ? O come si possono mettere delle frazioni al posto dei risultati decimali ?

Grazie in anticipo
 

BAT

Moderatore
Staff Forum
Utente Èlite
8,321
3,543
CPU
Neurone solitario
Dissipatore
Ventaglio azionato a mano
Scheda Madre
Casalinga
RAM
Molto molto volatile
GPU
Binoculare integrata nel cranio
PSU
Pastasciutta, pollo e patatine al forno
Net
Segnali di fumo e/o tamburi
OS
Windows 10000 BUG
L'equazione x^2+1=0 ha i coefficiente a=1, b=0, c=1
quando calcoli il delta dell'equazione, ossia b^2-4ac ottieni 0^2-4*1*1 = -4 cioè delta<0
Quando delta<0 l'equazione non ha soluzioni reali ma complesse coniugate, questo dovresti saperlo già!
la radice quadrata di un numero negativo è un numero immaginario
mentre le radici quadrate di +4 sono +2 e -2, le radici quadrate di -4 sono +2i e -2i ("i" è l'unità immaginaria);
in questo caso le soluzioni sono X1=(+2i)/2=+i, X2=(-2i)/2=-i
Per risolvere l'equazione devi
A. stampare un messaggio che dice che le soluzioni sono complesse coniugate
B. estrarre la radice di -delta, in questo caso la radice di -(-3)=+4; poi applichi la formula, devi solo ricordarti di moltiplicare per "i" (unità immaginaria) il risultato dell'estrazione di radice quadrata

La conversione di un numero decimale in frazione è possibile ma è complicato da spiegare;
in genere per ottenerlo o si usa una libreria apposita oppure bisogna scrivere gli algoritmi di conversione da sé
 
Ultima modifica:
  • Like
Reactions: Reeaver

Entra

oppure Accedi utilizzando

Hot: E3 2021, chi ti è piaciuto di più?

  • Ubisoft

    Voti: 37 22.8%
  • Gearbox

    Voti: 3 1.9%
  • Xbox & Bethesda

    Voti: 103 63.6%
  • Square Enix

    Voti: 14 8.6%
  • Capcom

    Voti: 7 4.3%
  • Nintendo

    Voti: 21 13.0%
  • Altro (Specificare)

    Voti: 15 9.3%

Discussioni Simili