ESERCITAZIONE JAVASCRIPT - WHILE

ESERCIZIO 1 (WHILE-ARRAY)

Costruire una pagina HTML che legga una sequenza di numeri la cui lunghezza non è nota a priori (la sequenza si considera terminata quando l'utente digita 0). Al termine della lettura viene stampata la sequenza invertendo l'ordine di digitazione (l'ultimo valore letto è il primo ad essere stampato).

SOLUZIONE CON WHILE

<SCRIPT Language="JavaScript">
       Elenco= new Array
       Continua=1;
       i=0;
       x=prompt("Fornire il "+(i+1)+"° numero: ","0")
       if ( (isNaN(x) || x==null) )
          {
              document.write("Non hai scritto un numero - Programma terminato")
              Continua=0;
          }
       while ( (x!=0) && (Continua) )
          {
              Elenco[i++]=x;
              x=prompt("Fornire il "+(i+1)+"° numero: ","0")
              if ( isNaN(x) || x==null )
                 {
                     document.write("Non hai scritto un numero - Programma terminato")
                     Continua=0;
                 }
          }
       if (Continua)
          for (n=i-1 ; n >=0 ; n--)
              document.write(Elenco[n]+"<BR>")
</SCRIPT>

SOLUZIONE CON DO-WHILE

<SCRIPT Language="JavaScript">
    Elenco= new Array
    Continua=1;
    i=0;
    do
        {
            x=prompt("Fornire il "+(i+1)+"° numero: ","0")
            if ( (isNaN(x) || x==null) )
               {
                   document.write("Non hai scritto un numero - Programma terminato")
                   Continua=0;
               }
           else
              if (x!=0)
                 Elenco[i++]=x;
        }
    while ( (x!=0) && (Continua) )
    if (Continua)
       for (n=i-1 ; n >=0 ; n--)
          document.write(Elenco[n]+"<BR>")
</SCRIPT>

ESERCIZIO 2 (WHILE)

Costruire una pagina HTML che legga una sequenza di numeri la cui lunghezza non è nota a priori (la sequenza si considera terminata quando l'utente digita 0).  Al termine della lettura il programma visualizza:
a) il minimo valore digitato
b) il massimo valore digitato
c) la somma dei valori digitati

ESERCIZIO 3 (WHILE-ARRAY)

Costruire una pagina HTML che legga una sequenza di numeri la cui lunghezza non è nota a priori (la sequenza si considera terminata quando l'utente digita 0).  Al termine della lettura viene fornito l'elenco dei numeri ordinato in modo crescente.

SOLUZIONE

<SCRIPT Language="JavaScript">
   Elenco= new Array
   Continua=1;
   N=0;
   x=prompt("Fornire il "+(N+1)+"° numero: ","0")
   if ( (isNaN(x) || x==null) )
      {
          document.write("Non hai scritto un numero - Programma terminato")
          Continua=0;
      }
   while ( (x!=0) && (Continua) )
      {
         j=0;
         if (N>0)
            {
               for (j=0 ; j < N ; j++)
                   if (Elenco[j] >= parseFloat(x))
                      break;
               for (k=N-1 ; k>=j ;k--)
                   Elenco[k+1]=Elenco[k]
             }
         Elenco[j]=parseFloat(x);
         N++;
         x=prompt("Fornire il "+(N+1)+"° numero: ","0")
         if ( isNaN(x) || x==null )
           {
              document.write("Non hai scritto un numero - Programma terminato")
              Continua=0;
           }
      }
   if (Continua)
      for (j=0 ; j<N ; j++)
          document.write(Elenco[j]+"<BR>")
</SCRIPT>

ESERCIZIO 4 (WHILE-ARRAY)

Costruire una pagina HTML che legga una sequenza di cognomi (si supponga che la sequenza termini quando l'utente digita la stringa vuota ""). I cognomi, nell'elenco iniziale, possono essere anche ripetuti più volte nella sequenza.  Al termine della lettura  viene fornito l'elenco, privo di ripetizioni, di tutti i cognomi digitati.

ESERCIZIO 5 (WHILE-ARRAY)

Costruire una pagina HTML che legga una sequenza di cognomi (si supponga che la sequenza termini quando l'utente digita la stringa vuota ""). I cognomi, nell'elenco iniziale, possono essere anche ripetuti più volte nella sequenza.  Al termine della lettura  viene fornito l'elenco di tutti i cognomi senza duplicati con a fianco il nr. di ripetizioni.

ESERCIZIO 6 (WHILE-ARRAY)

Costruire una pagina HTML che legga due sequenze di numeri (ciascuna sequenza si considera terminata quando l'utente digita 0).  Al termine della lettura viene fornito l'elenco dei numeri comuni ad entrambe le sequenze ordinato in modo crescente.

ESERCIZIO 7 (WHILE)

Costruire una pagina HTML che legga un numero X è restituisca la sua scomposizione in fattori primi (o fattorizzazione). Esempio: 924=2*2*3*7*11

SOLUZIONE

<SCRIPT Language="JavaScript">
   x=prompt("Dammi un numero intero da scomporre in fattori primi: ","0")
   Errore=0;
   if ( (isNaN(x) || x==null) )
      {
          document.write("Non hai scritto un numero - Programma terminato")
          Errore=1;
      }
   else
      {
          N=parseInt(x)
          // Verifico di aver scritto un numero intero
          if (Math.abs(N-parseFloat(x))!=0)
             {
                document.write("Non hai scritto un numero intero - Programma terminato")
                Errore=1;
             }
          else
             {
                s="";
                d=2;
                while (Math.abs(N)>=d)
                   {
                       if (N%d==0)
                          {
                             s=s+( (s!="") ? "*" : "")
                             s=s+d
                             N=N/d;
                          }
                       else
                          d++
                   }
             }
      }
   if (!Errore)
      {
           if (s=="")
              s=x
           else
              s=x+"="+( (N<0) ? "-" : "") + s
           document.write(s)
      }
</SCRIPT>

ESERCIZIO 8 (WHILE)

Costruire una pagina HTML che legga due numeri x e y e restituisca il minimo comune multiplo tra i due. (suggerimento: il mcm è pari al prodotto dei numeri primi presenti in entrambe le fattorizzazioni di x e di y)

ESERCIZIO 9 (WHILE)

Costruire una pagina HTML che legga due numeri x e y e restituisca il Massimo Comune Divisore tra i due (suggerimento: il MCD è pari al prodotto dei numeri primi presenti nella fattorizzazione di x oppure di y)

ESERCIZIO 10 (WHILE-ARRAY)

Costruire una pagina HTML che legga una stringa S di caratteri alfabetici e restituisca il numero di volte che ogni carattere si è presentato.
Nella risoluzione si utilizzi:
a) S.toLowerCase() che trasforma la stringa S in minuscolo.
b) S.charCodeAt(N) che restituisce il codice ASCII dell'N-esimo carattere della stringa S. (il primo carattere ha posizione N=0)

ESERCIZIO 11 (WHILE-ARRAY)

Costruire una pagina HTML che legga una stringa S  e restituisca la stessa stringa senza le ripetizioni consecutive dello stesso carattere. Ad esempio se S="AAaBBbbbCAAD" allora il programma deve visualizzare "AaBbCAD"
Nella risoluzione si utilizzi:
a) S.charAt(N) restituisce il carattere N-esimo della stringa S (Il primo carattere ha posizione N=0)
b) S.length che restituisce la lunghezza della stringa S

ESERCIZIO 12 (WHILE)

Costruire una pagina HTML che legga un numero N e calcoli il numero M per cui vale la relazione:

(M-1)! <=N <M!

M! indica il fattoriale di M ovvero M!=1*2*3*...*(M-1)*M

ESERCIZIO 13 (FOR-WHILE-IF)

Costruire una pagina HTML che consenta di posizionare 3 navi per il gioco di battaglia navale su un tabellone 10x10. Il programma deve richiedere per ogni nave:
   1) le coordinate X e Y relative alla posizione iniziale della nave
   2) la lunghezza (da 2 a 4) della nave
   3) la direzione (Nord, Est, Ovest e Sud)