Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema calcolatrice per newbie

    Buonasera a tutti, mi sono appena iscritto a questo forum. Frequento il 5° anno del tecnico industriale specializzazione informatica, e solo da qualche lezione abbiamo cominciato a scrivere pagine html, per poi passare molto velocemente e a grandi linee al javascript. Il problema è che domani ho il compito in classe, e credo proprio che sarà su uno degli esercizi più classici: la creazione di una calcolatrice. Premetto che ho già visionato alcuni file presenti nei vostri archivi che portavano la dicitura "semplice calcolatrice" e cose varie, il problema è che queste per me risultano ugualmente incomprensibili (diciamo che l'informatica non è esattamente la mia passione ). Ho provato a creare da me una calcolatrice basilare mentre ero in classe, ma non riesco a capire perchè non funziona. Ho chiesto anche l'aiuto del prof, il quale è rimasto seduto con me un quarto d'ora e non ha capito neanche lui qual'è il problema (i soliti sessantenni che si intendono solo di schede perforate e sono messi in una scuola a fare i prof di informatica ). Ecco quindi che mi rivolgo a voi esperti, chiedendo se gentilmente potreste segnalarmi gli errori nel file che sto per postare. Grazie anticipatamente.

    codice:
    <html>
    <head>
    <script language="JavaScript">
    function calcola()
    {
     var ris=0;
     intero1=parseInt(calcol.primo.value);
     intero2=parseInt(calcol.second.value);
     if (calcol.oper.value() == "+")
     {ris=intero1+intero2;}
     if (calcol.oper.value() == "-")
     {ris=intero1-intero2;}
     if (calcol.oper.value() == "*")
     {ris=intero1*intero2;}
     if (calcol.oper.value() == "/")
     {ris=intero1/intero2;}
    }
     document.write("il Valore di ris ",ris);
     alert("Il risultato è ",ris);
     alert('Il risultato è ',ris);
    }
    </script>
    </head>
    <body>
    <div align="center"><h1>Calcolatrice</h1></div></br>
    <form name="calcol">
    <div align="center">Primo numero    <input type=text name="primo" maxlength=15 size=15></div></br>
    <div align="center">Secondo numero  <input type=text name="second" maxlength=15 size=15></div></br>
    <div align="center">Scegliere operando   <select name=oper><option>+<option>-<option>*<option>/</select></br></br>
    <div align="center"><input type="button" value="Calcola" onclick="calcola()"></div></br>
    </form>
    </body>
    </html>

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    codice:
    <html>
    <head>
    <script language="JavaScript">
    function calcola()
    {
     var ris=0;
     intero1 = parseInt(document.calcol.primo.value);
     intero2 = parseInt(document.calcol.second.value);
     // il valore testuale di una select si ottiene cosi' (non hai impostato i value delle option) :
     op = document.calcol.oper.options[document.calcol.oper.selectedIndex].text;
     if (op == "+")
    	 {ris=intero1+intero2;}
     if (op == "-")
    	 {ris=intero1-intero2;}
     if (op == "*")
    	 {ris=intero1*intero2;}
     if (op == "/")
    	 {ris=intero1/intero2;}
    // document.write("il Valore di ris ",ris); // non si puo' usare document.write a pagina disegnata
    // alert("Il risultato è ",ris); // perche' la virgola di separazione?
     alert('Il risultato è '+ris);
    }
    </script>
    </head>
    <body>
    <div align="center"><h1>Calcolatrice</h1></div></br>
    <form name="calcol">
    <div align="center">Primo numero        <input type=text name="primo" maxlength=15 size=15></div></br>
    <div align="center">Secondo numero    <input type=text name="second" maxlength=15 size=15></div></br>
    <div align="center">Scegliere operando    <select name=oper><option>+<option>-<option>*<option>/</select></br></br>
    <div align="center"><input type="button" value="Calcola" onclick="calcola()"></div></br>
    </form>
    </body>
    </html>
    Buono studio
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Molte grazie! Finalmente la "mia" calcolatrice funziona! Avrei però qualche domanda:

    1) Quel parseInt all'inizio della funzione "calcola" dovrebbe servire (in base a quello che ha spiegato il prof) a convertire una stringa in un numero, e la cosa non mi va molto a genio. Preferirei fare un controllo e continuare con le operazioni solo se si sono inseriti dei numeri. Come mi devo comportare? Con un controllo simile al C? Tipo questo:

    codice:
     
    num1 = document.calcol.primo.value;
    num2 = document.calcol.second.value;
    if (((num1>-1)&&(num1<10000000000))&&((num2>-1)&&(num2<10000000000)))
    { fai operazioni }
    else {messaggio di errore}
    //tutto questo sempre suppondendo che io voglia mettere dei limiti ai valori che è possibile inserire
    2) Non ho capito bene perchè non si può usare il document.write
    3) In quell'alert avevo messo la virgola prima della variabile perchè pensavo avesse una sintassi simile al document.write, ma quel + è l'equivalente della virgola o vuol dire qualcosa in particolare?

    Grazie ancora!

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da iaddo91
    Molte grazie! Finalmente la "mia" calcolatrice funziona! Avrei però qualche domanda:

    1) Quel parseInt all'inizio della funzione "calcola" dovrebbe servire (in base a quello che ha spiegato il prof) a convertire una stringa in un numero,
    Esatto e + precisamente a convertire un numero intero per conversioni con virgola va usato il parseFloat
    e la cosa non mi va molto a genio. Preferirei fare un controllo e continuare con le operazioni solo se si sono inseriti dei numeri. Come mi devo comportare? Con un controllo simile al C? Tipo questo:
    No sono due linguaggi diversi con sintassi e metodi diversi, anche se molto simili.
    Per verifica "boleana" di un dato se è numerico si usa isNaN:
    codice:
     
    num1 = document.calcol.primo.value;
    num2 = document.calcol.second.value;
    //controllo se sono numeri
    if (!isNaN(num1) && isNaN(num2))
    {errore dato non numerico}
    //controllo la lunghezza delle cifre 
    else if(num1.length>9 || num2.length>9){messaggio di errore}else{procedi con il calcolo}
    2) Non ho capito bene perchè non si può usare il document.write
    Perché quando la pagina è formata il document.write sovrascriverebbe tutto, al evento onclick avresti il risultato ma sparirebbe il form.
    3) In quell'alert avevo messo la virgola prima della variabile perchè pensavo avesse una sintassi simile al document.write, ma quel + è l'equivalente della virgola o vuol dire qualcosa in particolare?
    Il + utilizzato tra due stringhe serve per co-incantenarle (unirle) "ciao"+"mondo" diventerà "ciao mondo"
    Grazie ancora!
    Prego consiglio leggi le ottime guide di html.it che trovi qui
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Originariamente inviato da cavicchiandrea
    Il + utilizzato tra due stringhe serve per co-incantenarle (unirle) "ciao"+"mondo" diventerà "ciao mondo"
    mmmmm, quindi nel mio caso il + serviva solo per unire il messaggio con la variabile, ma non sarebbe stato lo stesso scrivere ('il valore è num') scrivendo tutto nella stessa stringa? E se per esempio dopo la variabile dovessi continuare il messaggio dovrei scrivere tipo così ('Il totale è di' +num + 'euro')? Non mi è molto chiaro questo punto

    Per il resto grazie per la dritta sulla verifica con isNaN, il link con le guide e tutto il resto! Se avrò altri problemi non mancherò a farmi sentire

    Saluti!

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da iaddo91
    mmmmm, quindi nel mio caso il + serviva solo per unire il messaggio con la variabile, ma non sarebbe stato lo stesso scrivere ('il valore è num') scrivendo tutto nella stessa stringa?
    No, ogni linguaggio ha le proprie regole.
    E se per esempio dopo la variabile dovessi continuare il messaggio dovrei scrivere tipo così ('Il totale è di' +num + 'euro')?
    Esatto
    Non mi è molto chiaro questo punto
    Non mi sembra cosi difficile, comunque una volta apprese le basi del linguaggio ti risulterà molto + semplice e intuitivo.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.