Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni28 pagine

Esercizi JavaScript

Il documento presenta esercizi di programmazione in JavaScript per il corso di Fondamenti di Informatica e Programmazione, suddivisi in tre sezioni: variabili, condizioni e assegnazioni; iterazione e vettori; e funzioni. Ogni sezione include vari esercizi pratici con relative soluzioni dettagliate. È destinato agli studenti dell'Università degli Studi di Torino per l'anno accademico 2021/2022.

Caricato da

gallivan.1310
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
5 visualizzazioni28 pagine

Esercizi JavaScript

Il documento presenta esercizi di programmazione in JavaScript per il corso di Fondamenti di Informatica e Programmazione, suddivisi in tre sezioni: variabili, condizioni e assegnazioni; iterazione e vettori; e funzioni. Ogni sezione include vari esercizi pratici con relative soluzioni dettagliate. È destinato agli studenti dell'Università degli Studi di Torino per l'anno accademico 2021/2022.

Caricato da

gallivan.1310
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Università degli Studi di Torino

Esercizi JavaScript con


soluzioni

Corso “Fondamenti di Informatica e


Programmazione”

A cura di:
Prof. Felice Cardone
[Link] Laura Ventrice

Anno Accademico 2021/2022


Indice

I Esercizi 2

1 Variabili, condizioni e assegnazioni 3

2 Iterazione e vettori 7

3 Funzioni 10

II Soluzioni 12

1 Variabili, condizioni e assegnazioni 13

2 Iterazione e vettori 16

3 Funzioni 21

1
Parte I

Esercizi

2
1 — Variabili, condizioni e
assegnazioni

1) Si scriva un programma che a partire da tre numeri interi calcola e vi-


sualizza la media dei tre numeri. Provare anche utilizzando il comando
”prompt()”;

2) Si scriva un programma che data una stringa di n caratteri trasforma


la prima lettera in maiuscolo.

3) Si scriva un programma che data una stringa di caratteri, determina


se una parola inizia per vocale o consonante.

4) Si scriva un programma che a partire da tre stringhe, a b e c, determini


se vale la condizione che a ”concatenata a” b è uguale a c.
Variante: provare a ottenere le stringhe tramite il comando ”prompt()”

5) Dato il seguente codice:

(a) Quali valori devono avere le variabili booleane vampiro, bestiale


e tenero perché venga stampata su output la frase “l’uomo morde
il cane”?
(b) Quando vampiro = true, bestiale = false e tenero = true, quale
frase viene scritta su output?

<script>
var vampiro;
var bestiale;
var tenero;
vampiro = true; bestiale = true; tenero = false;
if (vampiro)
[Link]("l'uomo");

3
ESERCIZI 1. VARIABILI, CONDIZIONI E ASSEGNAZIONI

else
[Link]("il cane");
if (vampiro && !tenero)
[Link](" morde ");
else
[Link](" accarezza ");
if (bestiale)
[Link]("il cane");
else
[Link]("la donna");
</script>

6) Dato il seguente codice:

(a) Quale scritta viene visualizzata in base ai valori assegnati alle


variabili giallo e in costume?
(b) Quali valori devono avere le variabili booleane per ottenere la
stampa ”il bandito estraendo la pistola sparò al poliziotto”?

<script>
var giallo = false;
var in_costume = false;
if (giallo) {
[Link]("il bandito ");
if (in_costume)
[Link]("estraendo la pistola ");
else
[Link]("in fuga ");
} else {
[Link]("la ricca ereditiera ");
if (in_costume)
[Link]("incipriandosi il naso ");
else
[Link]("sollevando il telefono ");
}
if (giallo)
[Link]("sparò ");
else
[Link]("sorrise ");
if (giallo)
ESERCIZI 1. VARIABILI, CONDIZIONI E ASSEGNAZIONI

[Link]("al poliziotto");
else
[Link]("alla cameriera");
</script>

7) Si consideri il seguente frammento di codice:

var x = 2, y = -3;
if (x >= 2)
x = x + 1;
else
[Link](x + 1);
[Link](x-y);
if (y >= 1)
[Link](x+y);
else
[Link](x);

Fra le seguenti affermazioni qual è quella corretta?

a) Stampa a video ”63”


b) Stampa a video ”66”
c) Stampa a video ”54”
d) Stampa a video ”464”
e) Stampa a video ”45”
f) Stampa a video ”565”

8) Si consideri il seguente frammento di codice:

var x = 15, y = 6;
if (x < 5)
[Link](x-y);
x = x + 3;
if (y > -4)
[Link](y-x);
else
[Link](x);
[Link](x-y);

Fra le seguenti affermazioni qual è quella corretta?


ESERCIZI 1. VARIABILI, CONDIZIONI E ASSEGNAZIONI

a) Stampa a video ”-50”


b) Stampa a video ”-19”
c) Stampa a video ”-99”
d) Stampa a video ”-9”
e) Stampa a video ”-1212”
f) Stampa a video ”4-2”
2 — Iterazione e vettori

1) Si scriva un programma che determini tutte le possibili coppie di valori


tratti rispettivamente dai due array:

<script>
lusso = ["Saab", "BMW", "Ferrari", "Aston Martin",
"Alfa Romeo", "Audi"];
utilitaria = ["Fiat","Lancia", "Dacia"];
</script>

2) Si scriva un programma che elimini gli spazi bianchi da una stringa S


e stampi il risultato.

3) Si scriva un programma che data una stringa di caratteri di lunghezza


assegnata determina quante volte un certo carattere vi è contenuto.

4) Si scriva un programma che data una stringa di lunghezza assegnata ne


costruisce altre due una con i caratteri di posto dispari (della prima)
e l’altra con i caratteri di posto pari.

5) Dato il seguente codice individuare il suo compito:

<script>
var stringa1 = "ciao";
var stringa2 = "sole";
var stringaRis = "";
for (var i = 0; i < [Link]; i++) {
if(i % 2 == 0)
stringaRis += stringa1[i];
else
stringaRis += stringa2[i];
}

7
ESERCIZI 2. ITERAZIONE E VETTORI

[Link]("RISULTATO: " + stringaRis);


</script>

6) Dato il seguente codice individuare il suo obiettivo:

<script>
var cars = ["Saab", "Fiat", "BMW", "Ferrari", "Aston Martin",
"Lancia", "Alfa Romeo", "Audi", "Dacia"];
var max = cars[0];
for (var i = 0; i < [Link]; i++) {
if(cars[i].length > [Link])
max = cars[i];
}

[Link]("La stringa di lunghezza maggiore è: " + max);


</script>

7) Dato il seguente codice individuarne il suo obiettivo:

<script>
var stringa = "ciao a tutti";
var nuovaStringa = "";
for (var i = 0; i < [Link]; i++) {
nuovaStringa += stringa[i].toUpperCase();
}
[Link]("Stringa di partenza: " + stringa +
"<br>");
[Link]("Stringa risultato: " +
nuovaStringa +"<br>");
</script>

8) Si scriva un programma in grado di calcolare l’altezza media degli


studenti di una classe, a partire dal numero di allievi e le corrispettive
altezze.

9) Si scriva un programma che a partire da un valore numerico k, e un


vettore di interi di lunghezza k conti quanti valori sono maggiori di k
scrivendo infine il risultato.

10) Si scriva un programma che a partire da un valore numerico k, e un


vettore di interi di lunghezza k conti quanti sono i valori maggiori di
k, quanti i valori uguali a k e quanti quelli minori.
ESERCIZI 2. ITERAZIONE E VETTORI

11) Si scriva un programma che, a partire da un vettore di interi, verifichi


che i valori al suo interno sono in ordine crescente o meno.

12) Si scriva un programma che, a partire da una stringa, costruisca l’in-


verso.

13) (HARD) Si scriva un programma che a partire da due stringhe, la


prima di lunghezza m e la seconda di lunghezza n, di cui possiamo
assumere che m > n, riconosce se la seconda stringa è contenuta nella
prima.

14) (HARD) Una ”palindroma” è una parola che può essere letta nello
stesso modo sia da destra verso sinistra che da sinistra verso destra,
ad esempio: otto, Ada.
Si scriva un algoritmo che, data una parola costituita da k lettere
rappresentate come x1 , x2 , x3 . . . ,xk , stabilisce se la parola è una
palindroma oppure no.
3 — Funzioni

1) Si scriva una funzione max che prende come parametro un array di


interi positivi non vuoto a e restituisce il valore del massimo elemento
contenuto.

2) Si scriva una breve funzione calculateDogAge che prende come


parametro l’età di un cane e calcola l’età in base alla conversione 1
anno umano = 7 anni canini. Infine stampa la scritta ”Il tuo cane ha
NN anni in anni canini!”.

3) Si scriva una funzione posMax che prende come parametro un array


di interi non vuoto di nome a e restituisce la posizione dell’elemento
di valore massimo di a.

4) Si scriva una funzione isOrdered che prende come parametro un


array di interi non vuoto a che contiene almeno due valori, e verifica
se l’array è ordinato o meno. L’ordine deve essere deciso dall’utente.

5) Si scriva una breve funzione countVowels che prende come parame-


tro una stringa e conti il numero di vocali presenti.

6) Si scriva una breve funzione deletePunct che rimuove la punteggia-


tura da una stringa s che memorizza una frase.
Per esempio questa operazione trasforma le stringhe: “Let’s try, Mike.”
in “Lets try Mike”.

7) Si scriva una breve funzione isBalanced che prende come parametro


una stringa e determina se in essa risultano correttamente bilanciate
le parentesi tonde, quadre e graffe.

8) Si scriva una breve funzione countChar che determina quante volte


un carattere è ripetuto in una certa stringa di n caratteri passata come
parametro.

10
ESERCIZI 3. FUNZIONI

9) Si scriva una breve funzione allDifferent che prenda in input una


stringa di caratteri s e determini se tutti i caratteri sono differenti gli
uni dagli altri.
10) Si scriva una breve funzione printNumbers che prende come parame-
tro un numero intero > 0 chiamato n e stampi tutti i numeri naturali
da 1 a n usando la ricorsione.
11) Si scriva una breve funzione printRange che prende come parametro
due numeri interi i e j con i > 1 e i < j, che stampi tutti i numeri che
si trovano nell’intervallo [i, j] usando la ricorsione.
12) Si scriva una breve funzione sumArray che restituisce la somma dei
valori all’interno di un vettore dato con la ricorsione. Consiglio: la
funzione può contenere come parametri il vettore, l’indice di posizione
che stiamo esaminando e infine la variabile che memorizza la somma.
13) Completare il seguente codice ricorsivo negli spazi vuoti per ottenere
la stampa ”120”:
<script>
function h(n) {
if( ...... )
return ...... ;
else
return n * ...... ;
}

[Link](h(5));
</script>
14) (HARD) Si scriva una breve funzione maxMin che prende come pa-
rametro un vettore non vuoto a di valori positivi e stampa il valore
massimo e minimo del vettore usando la ricorsione. Consiglio: la fun-
zione può contenere come parametri il vettore, l’indice di posizione, e
le variabili per memorizzare il valore massimo e minimo.
15) (HARD) Si scriva una funzione createWatershed che non ha para-
metri e permetta di inserire n valori interi fissati in un vettore. Inoltre
definito un valore k, restituisca due vettori contenenti rispettivamente
tutti i valori minori di k e tutti i valori maggiori di k. Consiglio: usare
la funzione push e per restituire i due vettori si può utilizzare un altro
vettore che li contenga.
Parte II

Soluzioni

12
1 — Variabili, condizioni e
assegnazioni

1) <script>
var i = 3;
var j = 5;
var k = 23;
var mean = (i + j + k) / 3;
[Link]("La media dei numeri "+ i + j + k
,→ + " è: ");
[Link](mean);
</script>

Variante con il comando ”prompt()”:

<script>
var i = Number(prompt("Inserire il primo numero:
,→ "));
var j = Number(prompt("Inserire il secondo
,→ numero: "));
var k = Number("Inserire il terzo numero: ");
var mean = (i + j + k) / 3;
[Link]("La media dei numeri "+ i + j + k
,→ + " è: ");
[Link](mean);
</script>

13
SOLUZIONI 1. VARIABILI, CONDIZIONI E ASSEGNAZIONI

2) <script>
var stringa = "ciao";
var primoCarattere = [Link](0);
primoCarattere = [Link]();
stringa = [Link](1);
stringa = primoCarattere + stringa;
[Link]("La stringa con la lettera
,→ maiuscola è: ");
[Link](stringa);
</script>

3) <script>
var stringa = "ciao";
var primoCarattere = [Link](0);
if(primoCarattere == "a" || primoCarattere ==
,→ "e" || primoCarattere == "i" ||
,→ primoCarattere == "o" || primoCarattere ==
,→ "u") {
[Link]("La prima lettera è una
,→ vocale");
} else {
[Link]("La prima lettera è una
,→ consonante");
}
</script>

4) <script>
var a = "ci";
var b = "ao";
var c = "ciao";
var concatenazione = a + b;
if (concatenazione == c) {
[Link]("Vale la condizione a
,→ 'concatenata a' b è uguale a c");
} else {
[Link]("Non vale la condizione a
,→ 'concatenata a' b è uguale a c");
}

</script>
SOLUZIONI 1. VARIABILI, CONDIZIONI E ASSEGNAZIONI

Variante:

<script>
var a = prompt("Inserire prima stringa");
var b = prompt("Inserire seconda stringa");
var c = prompt("Inserire terza stringa");
var concatenazione = a + b;
if (concatenazione == c) {
[Link]("Vale la condizione a
,→ 'concatenata a' b è uguale a c");
} else {
[Link]("Non vale la condizione a
,→ 'concatenata a' b è uguale a c");
}

</script>

5) Dato il seguente codice:

(a) vampiro = true, tenero = false, bestiale = true


(b) ”l’uomo accarezza la donna”

6) (a) ”la ricca ereditiera sollevando il telefono sorrise alla cameriera”


(b) giallo = true e in costume = true

7) Stampa a video ”63”

8) Stampa a video ”-1212”


2 — Iterazione e vettori

1) <script>
lusso = ["Saab", "BMW", "Ferrari", "Aston
,→ Martin", "Alfa Romeo", "Audi"];
utilitaria = ["Fiat","Lancia", "Dacia"];
for (var i = 0; i < [Link]; i++) {
for (var j = 0; j < [Link]; j++) {
[Link](lusso[i] + " " +
,→ utilitaria[j] + "<br>");
}
}
</script>

2) <script>
var s = "ciao a tutti";
var nuovaStringa = "";
for (var i = 0; i < [Link]; i++) {
if(s[i] != ' ')
nuovaStringa += s[i];
}
[Link]("Stringa con gli spazi: " + s +
,→ "<br>");
[Link]("Stringa senza gli spazi " +
,→ nuovaStringa + "<br>");
</script>

3) <script>
var stringa = "ciao a tutti";
var carattere = "t";
var count = 0;
for (var i = 0; i < [Link]; i++) {

16
SOLUZIONI 2. ITERAZIONE E VETTORI

if(stringa[i] == carattere)
count++;
}
[Link]("La stringa " + stringa +"
,→ contiene " + count + " volte " + "il
,→ carattere " + carattere);
</script>

4) <script>
var stringa = "ciao";
var posDispari = "";
var posPari = "";
for (var i = 0; i < [Link]; i++) {
if(i % 2 == 0)
posPari += stringa[i];
else
posDispari += stringa[i];
}

[Link]("posDispari: " + posDispari +


,→ "<p>");
[Link]("posPari: " + posPari);
</script>

5) Viene costruita una stringa che contiene tutti i caratteri delle stringhe
con posti alternativamente uno della prima e uno della seconda.

6) Viene determinata la massima lunghezza di una stringa presente in un


array di stringhe.

7) A partire da una stringa data viene costruita la corrispettiva stringa


con le lettere al suo interno maiuscole.

8) <script>
var numeroStudenti = 5;
var altezze = [160, 175, 162 ,170, 155];
var somma = 0;
var i = 0;

while (i < numeroStudenti) {


somma = somma + altezze[i];
SOLUZIONI 2. ITERAZIONE E VETTORI

i++;
}

var media = somma/numeroStudenti;


[Link]("La media delle altezze e': " +
,→ media);
</script>

9) <script>
var k = 5;
var i = 0;
var array = [2, 5, 1, 3, 8];
var count = 0;
while (i < k) {
if(array[i] > k)
count++;
i++;
}

[Link]("Il numero di valori maggiori di k


,→ e': " + count);
</script>

10) <script>
var k = 5;
var i = 0;
var array = [2, 5, 1, 3, 8];
var countMaggiori = 0;
var countUguali = 0;
var countMinori = 0;
while (i < k) {
if(array[i] > k)
countMaggiori++;
else if(array[i] < k)
countMinori++;
else
countUguali++;
i++;
}
SOLUZIONI 2. ITERAZIONE E VETTORI

[Link]("Il numero di valori maggiori di k


,→ e': " + countMaggiori + "<br>");
[Link]("Il numero di valori minori di k e':
,→ " + countMinori + "<br>");
[Link]("Il numero di valori uguali a k e': "
,→ + countUguali);
</script>

11) <script>
var i = 0;
var ordineCrescente = true;
var array = [3, 8, 5, 7];
while (i < [Link] - 1 && ordineCrescente) {
ordineCrescente = array[i] < array[i +
,→ 1];
i++;
}

[Link]("I valori all'interno del vettore


,→ sono in ordine crescente: " + ordineCrescente);
</script>

12) <script>
var stringa = "ciao";
var stringaRis = "";
for (var i = [Link] - 1; i >= 0; i--) {
stringaRis += stringa[i];
}
[Link]("RISULTATO: " + stringaRis);
</script>

13) <script>
var stringa1 = "ciao a tutti";
var stringa2 = "ia";
var i = 0;
var j = 0;
while(i < [Link] && j <
,→ [Link]) {
if(stringa1[i] == stringa2[j])
j++;
SOLUZIONI 2. ITERAZIONE E VETTORI

else
j = 0;
i++;
}

if(j == [Link])
[Link]("La stringa2 è sottostringa
,→ di stringa1");
else
[Link]("La stringa2 non è
,→ sottostringa di stringa1");
</script>

14) <script>
var stringa = "scca";
var palindroma = true;
var i = 0;
var j = [Link] - 1;
while(i < j && palindroma) {
palindroma = (stringa[i] == stringa[j]);
i++;
j--;
}

[Link]("La stringa " + stringa + " è


,→ palidroma: " + palindroma);
</script>
3 — Funzioni

1) <script>
function max(a) {
var maxValue = 0;
for(var i = 0; i < [Link]; i++) {
if(a[i] > maxValue)
maxValue = a[i];
}
return maxValue;
}

var vettore = [2, 1, 5, 4, 2];


[Link]("Il valore massimo è: " +
,→ max(vettore));
</script>

2) <script>
function calculateDogAge(eta) {
etaCanina = eta * 7;
[Link]("Il tuo cane ha " + etaCanina + "
,→ in anni canini!");
}

calculateDogAge(5);

</script>

21
SOLUZIONI 3. FUNZIONI

3) <script>
function posMax(a) {
var indMaxValue = 0;
for(var i = 0; i < [Link]; i++) {
if(a[i] > a[indMaxValue])
indMaxValue = i;
}
return indMaxValue;
}

var vettore = [2, 1, 5, 4, 2];


[Link]("L'indice del valore massimo è: "+
,→ posMax(vettore));
</script>

4) <script>
function isOrdered(a) {
var ordered = true;
var criterioOrdine = Number(prompt("Criterio di
,→ ordine, inserire 1 per non decrescente e 2
,→ per non crescente"));
for(var i = 0; i < [Link] - 1; i++) {
if(criterioOrdine == 1)
ordered = ordered && a[i] <= a[i + 1];
else
ordered = ordered && a[i] >= a[i + 1];
}
return ordered;
}

var vettore = [2, 2, 5, 7, 10];


[Link]("Il vettore è ordinato: " +
,→ isOrdered(vettore));
</script>
SOLUZIONI 3. FUNZIONI

5) <script>
function countVowels(a) {
var count = 0;
for(var i = 0; i < [Link]; i++) {
if(a[i] == 'a' || a[i] == 'e' || a[i] == 'i'
,→ || a[i] == 'o' || a[i] == 'u')
count++;

}
return count;
}

var stringa = "ciao";


[Link]("Numero di vocali: "+
,→ countVowels(stringa));
</script>

6) <script>
function deletePunct(s) {
var stringa = "";
for(var i = 0; i < [Link]; i++) {
if(s[i] != "," && s[i] != ":" && s[i] != ";"
,→ && s[i] != "." && s[i] != "'" && s[i] !=
,→ "?" && s[i] != "!")
stringa = stringa + s[i];
}
return stringa;
}
var stringa = "Let's try, Mike!";
[Link]("Senza punteggiatura " +
,→ deletePunct(stringa));
</script>
SOLUZIONI 3. FUNZIONI

7) <script>
function isBalanced(s) {
var balancedTonda = 0;
var balancedQuadra = 0;
var balancedGraffa = 0;
for(var i = 0; i < [Link] && balancedTonda >=
,→ 0 && balancedQuadra >= 0 && balancedGraffa
,→ >= 0; i++) {
if(s[i] == '(')
balancedTonda++;
if(s[i] == '[')
balancedQuadra++;
if(s[i] == '{')
balancedGraffa++;
if(s[i] == ')')
balancedTonda--;
if(s[i] == ']')
balancedQuadra--;
if(s[i] == '}')
balancedGraffa--;
}
return balancedTonda == 0 && balancedQuadra == 0
,→ && balancedGraffa == 0;
}

var stringa = "C{ia}o";


[Link]("è bilanciata " +
,→ isBalanced(stringa));
</script>

8) <script>
function countChar(s, char) {
var count = 0;
for(var i = 0; i < [Link]; i++) {
if(s[i] == char)
count++;
}
return count;
}
var stringa = "Anna";
SOLUZIONI 3. FUNZIONI

[Link]("Numero di caratteri " +


,→ countChar(stringa, "n"));
</script>

9) <script>
function allDifferent(s) {
var allDifferent = true;
for(var i = 0; i < [Link] && allDifferent;
,→ i++) {
var j = i + 1;
while(j < [Link] && allDifferent) {
allDifferent = s[i] != s[j];
j++;
}
}

return allDifferent;
}

[Link](allDifferent("ciao"));

</script>

10) <script>
function printNumbers(n) {
if(n == 1) {
[Link](n + "<br>");
} else {
printNumbers(n - 1);
[Link](n + "<br>");
}
}

printNumbers(5);
</script>

11) <script>
function printRange(i, j) {
if(i == j) {
[Link](i + "<br>");
SOLUZIONI 3. FUNZIONI

} else {
[Link](i + "<br>");
printRange(i + 1, j);
}
}

printRange(2, 6);
</script>

12) <script>
function sumArray(a, i, sum) {
if(i == [Link]) {
return sum;
} else {
sum = sum + a[i];
return sumArray(a, i + 1, sum);
}
}

var array = [4, 5, 2];


[Link](sumArray(array, 0, 0));
</script>

13) <script>
function h(n) {
if( n == 1 )
return 1;
else
return n * h(n - 1);
}

[Link](h(5));
</script>

14) <script>
function maxMin(a, i, max, min) {
if(i == [Link]) {
[Link]("max: " + max + ", min: " +
,→ min);
} else {
SOLUZIONI 3. FUNZIONI

if(a[i] > max)


max = a[i];
else if(a[i] < min)
min = a[i];

maxMin(a, i + 1, max, min);


}
}

var array = [4, 5, 2];


maxMin(array, 0, array[0], array[0]);
</script>

15) <script>
function createWatershed() {
var n = 3;
var k = 2;
var vettore = [];
var vettoreMax = [];
var vettoreMin = [];
for(var i = 0; i < n; i++)
[Link](Number(prompt("Inserire numero:
,→ ")));

for(var i = 0; i < [Link]; i++) {


if(vettore[i] > k)
[Link](vettore[i]);
else
[Link](vettore[i]);
}
return [vettoreMax, vettoreMin];
}

var risultato = createWatershed();


[Link]("Vettore che supera k: " +
,→ risultato[0] + "<br>");
[Link]("Vettore che non supera k: " +
,→ risultato[1]);
</script>

Potrebbero piacerti anche