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>
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.
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>
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)
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
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)
