STRUTTURE FONDAMENTALI DI CONTROLLO

SELEZIONE BINARIA NIDIFICATA


F


acciamo il punto.
Argomenti correlati:

 

funzione isNaN(argomento)
Is not a number
Si tratta di una funzione che restituisce true (vero) se l'argomento non è un numero, false (falso) altrimenti.

PROVA

Inserire nella casella di testo sottostante un valore numerico, oppure un testo qualunque, e premere il tasto OK. Particolarmente interessante è il caso in cui si scrive una frazione con denominatore zero (ad esempio 4/0).

CODICE DELLA FUNZIONE:
function check(str) {
flag = isNaN(str);
if (flag == true) {
alert(str + " non è un numero");
}
else {
alert(str + " è un numero ");
}
}

funzione parseInt(argomento)
restituisce la parte intera di un numero. Se si inserisce una stringa, si ottiene il messaggio "NaN" (not a number).

PROVA

Inserire nella casella di testo sottostante un valore numerico, oppure un testo qualunque, e premere il tasto OK.

Provare con:
  • 12.9
  • 0x66 (base esadecimale)
  • 066 (base ottale)
  • ciao
  • 34*2
  • 34a66
Notare che parseInt non esegue le operazioni, ma considera l'argomento come stringa.
Dalle ultime due prove si nota che parseInt si interrompe non appena trova un simbolo non numerico (* nel penultimo caso, a nell'ultimo).
CODICE DELLA FUNZIONE:
function check1(str) {
flag = parseInt(str)
alert('parseInt('+str + ')=' + flag);
}

funzione parseInt(argomento, radix)
restituisce la parte intera di un numero nella base espressa da radix Se si inserisce una stringa, si ottiene il messaggio "NaN" (not a number).

PROVA

Inserire nella casella di testo sottostante un valore numerico, oppure un testo qualunque, e premere il tasto OK.

Provare con:
  • 12.9 base 10
  • 0x66 base 16
  • 1001 base 2
  • 1001 base 1 (si ottiene NaN poiché 1 non è una cifra aammissibile in base 2)
  • ciao base 16 (si ottiene 12 poiché c in base esadecimale è proprio 12 in base dieci: visto che la i non è una cifra esadecimale, il programma si interrompe.)
  • ca base 16
  • 32 base 5

NUMERO
BASE
CODICE DELLA FUNZIONE:
function check2(str,r) {
flag = parseInt(str,r)
alert(str + ' in base '+ r + ' = ' + flag + ' in base dieci');
}

window.prompt, window.alert
Metodi dell'oggetto window
!=
Diverso, operatore relazionale
==
Uguale, operatore relazionale
%
Restituisce il resto della divisione fra numeri interi, operatore aritmetico
Esempio: 34 % 5 = 4

Si ha la selezione multipla quando non si effettua solo una scelta fra due alternative, come nella selezione binaria, ma l'else porta a sua volta ad un'altra scelta.

 

ESEMPIO


Vogliamo verificare se un numero introdotto da tastiera è pari.
Introduciamo a questo scopo una funzione JavaScript con il seguente codice, da inserite fra i tags <HEAD> ed </HEAD> :

 

<script language=JavaScript>
    function controlla() {
     numero=window.prompt('Inserisci un numero intero');
     if (numero % 2 ==0) {
       window.alert(numero +' è pari');
      }
    else {
     window.alert(numero + ' è dispari');
      }
    }
</script>

Creiamo un bottone con il seguente codice, da inserire fra i tags <BODY> e </BODY> :
:
<form name="Mioform2">
<input type=button value="Clicca" name="bottone1" OnClick="javascript:controlla()">
</form>
Otteniamo il seguente risultato:

Se proviamo a cliccare sul bottone, notiamo che:
  1. Se inseriamo un numero pari, ad esempio 4, otteniamo l'avviso " 4 è pari";
  2. Se inseriamo un numero dispari, ad esempio 5, otteniamo l'avviso "5 è dispari";
  3. Se inseriamo una parola, ad esempio "ciao", otteniamo l'avviso "ciao è dispari".
Ancora una volta non abbiamo tenuto conto di tutte le ipotesi, infatti per noi è naturale, parlando di numeri pari, riferirci all'ambiente dei numeri naturali, ma per l'interprete Javascript no!
E' quindi necessario migliorare ulteriormente il programma.

 

PRIMO MIGLIORAMENTO


Un primo miglioramento si ottiene ampliando il ventaglio delle ipotesi:

  • Se l'utente non ha introdotto un numero
    • Scrivi il messaggio "Devi inserire un numero"
      • altrimenti
        • se il resto della divisione per 2 è zero
          • Scrivi il messaggio "Il numero è pari"
            • altrimenti
              • Scrivi il messaggio "Il numero è dispari"
Introduciamo a questo scopo una funzione JavaScript con il seguente codice, da inserite fra i tags <HEAD> ed </HEAD> :

 

<script language=JavaScript>
    function controlla1() {
     numero=window.prompt('Inserisci un numero intero');
     if (isNaN(numero) == true) {
       window.alert('Devi inserire un numero')
      }
     else {
         if (numero % 2 ==0) {
            window.alert(numero +' è pari');
          }
         else {
           window.alert(numero + ' è dispari');
          }
        }
    }
</script>

Creiamo un bottone con il seguente codice, da inserire fra i tags <BODY> e </BODY> :
:
<form name="Mioform2">
<input type=button value="Clicca" name="bottone1" OnClick="javascript:controlla1()">
</form>
Otteniamo il seguente risultato:

Se proviamo a cliccare sul bottone, notiamo che:
  1. Se inseriamo una parola, ad esempio "ciao", otteniamo l'avviso "Devi inserire un numero".
  2. Se inseriamo un numero pari, ad esempio 4, otteniamo l'avviso " 4 è pari";
  3. Se inseriamo un numero dispari, ad esempio 5, otteniamo l'avviso "5 è dispari";
  4. Se inseriamo un numero decimale, ad esempio 5.4, otteniamo l'avviso "5.4 è dispari";
E' quindi necessario migliorare ulteriormente il programma.

 

SECONDO MIGLIORAMENTO


Ampliamo ancora il ventaglio delle ipotesi:

  • Se l'utente non ha introdotto un numero
    • Scrivi il messaggio "Devi inserire un numero"
      • altrimenti
        • se la parte intera del numero è diversa dal numero stesso
          • Scrivi il messaggio "Devi inserire un numero intero"
            • altrimenti
              • se il resto della divisione per 2 è zero
                • Scrivi il messaggio "Il numero è pari"
                  • altrimenti
                    • Scrivi il messaggio "Il numero è dispari"

    Introduciamo a questo scopo una funzione JavaScript con il seguente codice, da inserite fra i tags <HEAD> ed </HEAD> :

     

    <script language=JavaScript>
        function controlla2() {
         numero=window.prompt('Inserisci un numero intero');
         if (isNaN(numero) == true) {
           window.alert('Devi inserire un numero')
          }
         else {
             if (parseInt(numero)!=numero) {
                window.alert('Devi inserire un numero intero!')
              }
    else {
             if (numero % 2 ==0) {
                window.alert(numero +' è pari');
              }
             else {
               window.alert(numero + ' è dispari');
              }
            }
        }
        }
    </script>

    Creiamo un bottone con il seguente codice, da inserire fra i tags <BODY> e </BODY> :
    :
    <form name="Mioform3">
    <input type=button value="Clicca" name="bottone2" OnClick="javascript:controlla2()">
    </form>
    Otteniamo il seguente risultato:

    Se proviamo a cliccare sul bottone, notiamo che:
    1. Se inseriamo una parola, ad esempio "ciao", otteniamo l'avviso "Devi inserire un numero".
    2. Se inseriamo un numero pari, ad esempio 4, otteniamo l'avviso " 4 è pari";
    3. Se inseriamo un numero dispari, ad esempio 5, otteniamo l'avviso "5 è dispari";
    4. Se inseriamo un numero decimale, ad esempio 5.4, otteniamo l'avviso "Devi inserire un numero intero";
    5. Se inseriamo un numero con la parte decimale uguale a zero, ad esempio 5.0, otteniamo l'avviso "5.0 è dispari";
    6. Se inseriamo ad esempio 6.0, otteniamo l'avviso "6.0 è pari";
    Con le nostre conoscenze attuali non siamo in grado di rendere questo programma in grado di funzionare in tutti i casi.


INDICE

Selezione multipla

INDIETRO

©2003 www.webfract.it