








Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Esercizi su programmazione base in JavaScript
Tipologia: Esercizi
1 / 14
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!









var n = Number(prompt("scrivere numero intero")); var flag = true; while (n != 0){ if ((n % 2) == 0 ) flag = flag && true; //accumulo il valore del flag else flag = flag && false; //si può anche scrivere solo flag = false, in quanto and con false dà sempre false come risultato n = Number(prompt("scrivere numero intero")); } document.write("i numeri inseriti da comando prompt sono tutti pari? " + flag); //se scrivo document.write fuori da while mi da solo il risultato dell'ultimo valore immesso
var n = Number(prompt("scrivere numero intero")); var flag = true; //parto da uno dei due a seconda del programma che voglio scrivere e in base a quello che mi serve while (n != 0){ if ((n % 2) !== 0) //non cerchiamo di trovare i numeri pari ma quello dispari flag = false; //else non ci va perchè sostituisce il valore dispari che abbiamo trovato con condizione di if n = Number(prompt("scrivere numero intero")); } document.write("i numeri inseriti da comando prompt sono tutti pari? " + flag);
var n = Number(prompt("scrivere numero intero")); var flag = true; while (n != 0){ flag = ((n % 2) == 0) && flag; n = Number(prompt("scrivere numero intero")); } document.write("i numeri inseriti da comando prompt sono tutti pari? " + flag); /* non uso la condizionale, ma uso la congiunzione tra il flag e il capire se il numero è pari (n % 2) == 0). Se uno due numeri pari: si parte con flag vero, è numero il cui resto è uguale a 0, quindi la risultante flag è vera */
var n; var flag = true; do { n = Number(prompt("inserire numero intero o uguale a 0")); // parte che deve essere eseguita almeno una volta, si tratta di istruzione di lettura if (n != 0) // se abbiamo letto numero diverso da 0, lo analizza, se letto 0 allore si esce, il ciclo finisce if (n % 2 != 0) //se è dispari abbasso il flag, se è pari no flag = false; } while (n != 0); document.write(flag); //scrivere flag alla fine, quello che rimane //almeno una volta fa il ciclo do-while, poi controlla se è vero, e allora lo rifà
- devo fare la stessa cosa del trovare il numero massimo (?)
var s = 0; //stdin da dove prendo le stringhe var max = 0; //lunghezza massima della stringa letta while(s != '.'){ s = prompt("inserire una stringa di caratteri"); if (s.length > max) max = s.length; // prima avevo messo = s, ma in questo modo s non è definito, in quanto cambia con prompt } document.write("la lunghezza massima delle stringhe lette é: " + max);
var s; var max = 0 ; do { s = prompt("inserire una stringa di caratteri"); if = (s != '.') if (s.length > max) max = s.length; } while (s != ".") document.write(max);
var s = " "; //parto da situazione di stringa s vuota var t; do { t = prompt("inserire una stringa o ."); if (t != ".") s = s + t } while (t != ".") document.write(s);
Indovina il numero
Il seguente programma implementa un gioco in cui si deve indovinare un numero scelto a caso dallo stesso, compreso tra 1 e 20, usando dei suggerimenti relativi alla grandezza del numero congetturato rispetto a quello nascosto
var r = 1 ; var c; while(r <= 10){ c = r; while(c <= 10){ document.write(" o "); c++; } document.write(""); r++; }
scrivere un programma che permette all'utente di scegliere ripetutamente da un menu della forma:
//se non si specifica, prompt legge i numeir come stringhe!! Lezione 8
//programma per creare quadrato di elementi "o", ma usando istruzione for for (var r = 1; r <= 10; r++) { for (var c = 1; c <= 10; c++) { document.write("o"); } document.write(""); } //fine for esterno /* possiamo rimpiazzare istruzione while della forma: var i = 0 //inizializzazione while (i < 0) { //istruzioni } i++; si può rimpiazzare con un for della forma: for (var i = 0; i < 10; i++) //istruzioni */
for(var n = 0; n <= 100; n++){ // i +=2, notazione per incrementare di 2 if((n % 2) == 0 ) document.write(n + ""); }
(Fatto contando la presenza di “a”) var s = prompt("inserire una stringa di caratteri"); var num = 0; //conta le a che sono state trovate for (var c = 0; c <= s.length; c++){ if(s.charAt(c) == "a") num++; } document.write(num != 0);
var s = prompt("inserire una stringa di caratteri"); var flag = false; //se trova una "a" va a true for (var c = 0; c <= s.length && !flag ;c++){ if(s.charAt(c) == "a") flag = true; } document.write(flag);
//strutture che servono ad elaborare dati che in modo naturale vengono messi in sequenza. Una sola variabile che raggruppa un insieme di stringhe tra [] var cars = ["Volvo", "Fiat", "Bmw"]; document.write(cars); //consentono di poter accedere ad ogni posizione dell'elenco usando (cars[0]), si può scrivere anche un’espressione Usare anche cars.length, per sapere da quante stringhe è composto un array
var cars = ["Volvo", "Fiat", "Bmw"]; cars[1] = “Bugatti"; //sostistuisco la seconda posizione con questa stringa document.write (cars[1].charAt(1)); //voglio sapere il secondo carattere della seconda stringa di cui è composto array. In questo caso ottengo “u”
var cars = ["Volvo", "Fiat", "Bmw"]; cars[1] = "Bugatti"; cars.push("Ferrari") document.write (cars);
var lusso = ["Saab", "BMW", "Ferrari", "Aston Martin", "Alfa Romeo", "Audi"]; var utilitaria = ["Fiat", "Lancia", "Dacia"]; var x = 0 ; for(var l = 0; l < lusso.length; l++){ for(var u = 0; u < utilitaria.length; u++){ x++; document.write(x + ") " + lusso[l] + ", " + utilitaria[u] + ""); } } Lezione 9
function scrivi(x){ document.write(x + ""); } // x è un parametro formale, sta per un valore che io immetto nella funzione, serve per calcolarne il risultato. Commportamento delle istruzioni cambia solamente variando la x // 'scrivi' è il nome che è stato dato alla funzione //ogni volta x cambia valore e succederà qualcosa di diverso //servono anche per abbreviare delle sequenze di azioni che si eseguono //funzione viene parametrizzata sul valore x, che non è specificata, quando la uso devo dare un valore specifico a x, in modo da modulare il comportamentto della funzione var x = 0 ; scrivi(x++); // scrive valore di x++, x viene valutata ---> 0, perchè? viene incrementata dopo a 1 scrivi(x); // dopo averla valutata si incrementa ---> 1 scrivi(++x);// prima si incrementa poi si valuta ---> 2 scrivi(x); // 2 scrivi(x--); // prima valuto, dopo si decrementa ---> 2 scrivi(x); // ora si decrementa ---> 1 scrivi(--x); // prima si decrementa poi si valuta ---> 0 scrivi(x); // 0 scrivi(x++ + x--); // prima si valuta, poi si opera ---> x++ prima 0 poi lo sommo a 1, incrementato da x++, quindi 0+1= scrivi(x); // x decrementa di 1 ---> 0 a causa x-- della riga prima //in questo caso mano a mano scriverà il valore della funzione in relazione a quanto scritto nelle (). Cosa verrà scritto? ——-
var r = 1; //righe var c; //colonne, o elementi presenti in ogni riga while(r <= 10){ c = 1; //ogni riga parte con 1 elemento, fino ad arrivare a 10 compreso, grazie al secondo while all'interno del primo while(c <= 10){ document.write((r * c) + " "); c++; } document.write(""); r++; }
//ogni riga e ogni colonna sono composte da 10 elementi, dove ogni punto di incrocio tra una riga e una colonna su cui mi tro- vo, bisogna mettere il prodotto di riga e colonna corrispondenti //finchè il numero di righe non è uguale a 10, per ogni riga inizio a generare 10 elementi per ognuna di esse, finchè anche que- sto non diventa uguale a 10. Ogni volta che ogni riga avrà al suo interno 10 elementi si passa alla riga sucessiva e si ripete lo stesso procedimento ——-
var c; for(var r = 1; r <= 10; r++){ for(var c =1; c <= 10; c++){ document.write((r * c) + " "); } //fine for interno document.write(""); } //fine for esterno ——-
function tabellina(n){ //racchiudo tutto in una funzione for(var r = 1; r <= n; r++){ for(var c =1; c <= n; c++){ document.write((r * c) + " "); } //fine for interno document.write(""); } //fine for esterno } //fine della funzione tabellina(12); //ogni volta che voglio una tabellina diversa, basta cambiare SOLO il parametro della variabile che avevo chiamato n ——-
var n = Number(prompt("scegliere dimensione della tabellina che si vuole creare")); function tabellina(t){ //racchiudo tutto in una funzione for(var r = 1; r <= n; r++){ //n considerato come segnaposto, non interferisce con a, che uso per acquisire da STDIN for(var c =1; c <= n; c++){ document.write((r * c) + " "); } //fine for interno document.write(""); } //fine for esterno } //fine della funzione tabellina(t); //ogni volta che voglio una tabellina diversa, basta utilizzare il comando prompt per riceverlo da STDIN ——- /* Scrivere un programma che stampa tutti i numeri da 1 a 100, con due eccezioni: per i numeri divisibili per 3 (e non per 5) stampa Fizz per i numeri divisibili per 5 (e non per 3) stampa Buzz / var n = 1; //scrive tutti i numeri da 1 a 100 for(var n = 1; n <= 100; n++){ if(((n % 3) == 0) & !((n % 5) == 0)) document.write("Fizz" + ""); else { if (((n % 5) == 0) & !((n % 3) == 0)) document.write("Buzz" + ""); else document.write(n + ""); } //fine else } ——- / Scrivere un programma che stampa tutti i numeri da 1 a 100, con due eccezioni: per i numeri divisibili per 3 (e non per 5) stampa Fizz
//VARIAZIONE(2), per capire il significato di return var a = [2,2,1,4,2]; //determino l'array var flag = true; //dichiarata all'esterno del blocco function, quindi fuori la vedo function pari(a){ for(var i = 0; i < a.length; i++){ //faccio scorrere l'array con ciclo for if((a[i] % 2) != 0) flag = false ; //vedere se almeno uno non è pari } //fine for } //fine function pari(a); //la funzione è stata generata per un 'a' generico, ora bisogna trovare la soluzione per il nostro array specifico document.write(flag); //se qui avessi messo 'flag', non sarebbe successo nulla, infatto questo parametro non è visibile al di fuori della funzione //in questo caso 'return' non serve più perchè la variabile flag viene dichiarata al di fuori del blocco della funzione ——- funzioni richiedono che impacchettiamo il più possibile, servono per contenere tutto il necessario per il loro calcolo, prima in generale, poi in specifico rispetto all'array che ci serve utilizzare in quel momento ——- //altro esempio di return (1), non con flag, ma con espressioni e numeri: si tratta di ricursione e di trovare il fattoriale function f(n){ if (n == 0) return 1 ; else return f(n - 1) * n; } var x = Number(prompt("Scrivere un numero naturale, cioè >= 0")); document.write(f(x)); ——- //altro esempio di return (2), non con flag, ma con espressioni e numeri: si tratta di trovare il quadrato del numero function f(n){ return nn } var x = Number(prompt("Scrivere un numero naturale, cioè >= 0")); document.write(f(x)); ——- Con ‘return’ si interrompe la funzione, e non è possibile inserire altro dopo questo comando. Il risultato viene rimandato indie- tro, in modo che possa essere scritto al di fuori della generica funzione scritta in precedenza, ma determinato in modo specifico a seconda delle esigenze ——- //scrivere una funzione che per un array di stringhe, restituisce il valore massimo della lunghezza delle stringhe contenute al suo interno. function max(a){ var l = 0 ; for(var i = 0; i < a.length; i++){ if ((a[i].length) > l) l = a[i].length; } return l; //questo va FUORI DAL CICLO FOR } var x = ["mamma", "mia", "dammi", "cento", "lire"]; document.write(max(x)); // questo va FUORI DA BLOCCO FUNCTION / 1 – prima si scorre l'array, con for 2 – poi determinare il massimo tra le lunghezze delle stringhe */ ——-
Lezione 10
Si tratta di un problema relativo ad una tecnica di programmazione, ma si riferisce alla possibilità che noi abbiamo di vedere una certa classe di problemi in un certo modo. Struttura che si identifica dentro certi oggetti o problemi, per interpretarli e affron- tarli con tecniche di programmazione adeguate. Applico la soluzione al problema più piccolo, per poi applicarla ad un'altro pro- blema più in grande. Bisogna sapere come trasformarla. ——- var m = [[1,2,3],[4,5,2,6],[1,2,3,4,7]]; //si tratta di un array di array //idea è quella di stamparla come matrice stampa_matrice(m); function stampa_riga(m,i){ //stampa le varie righe for(var j = 0; j < m[i].length; j++)//posiz. interna ai singoli array document.write(m[i][j] + " "); //scrive l'elemento che si trova all'interno della matrice m, e all'interno della matrice i, in posizione j } function stampa_matrice(m){ for(var i = 0; i < m.length; i++){ stampa_riga(m,i); document.write(""); } } /* se io scrivo: document.write(m.length), dice che la lunghezza totale dell'array m è 3 document.write(m[1].length), ci dice la lunghezza dell'array situato in posizione 1 all'interno di m è 4 document.write(m[1][0]), dice che cosa c'è dentro il secondo array che compone m alla posizione 0, in questo caso il risul- tato è 1 ——-
(Altra versione es di compito) ——- /calcolo delle potenze di 2 in modo ricorsivo vogliamo calcolare 2^n, che è come scrivere 2222... 2 (prodotto di n copie di 2) se volessi fare 2^5, verrebbe 22222, anche scritto in: 2^42, così come 2^322, o ancora: 2^2222; per poi arrivare a 2^0 22222, che è 122222 o anche a 22222. function exp(n){ if(n == 0) return 1 ; else return exp(n-1) * 2; //sarebbe come scrivere 2^n = 2^(n-1)2. “Exp” sta per dire 2^… } //usare lo stesso nome all’interno del corpo della funzione è la base della ricursione x = Number(prompt("a che potenza vuoi elevare 2?")); document.write(exp(x)); //con ‘exp’ si intende un 2^ e l’argomento che va come apice lo si trova all’interno delle istruzioni, quindi tra {} ——-
//'n' è il numero di dischi, 'da' è il piolo da cui parto, 'a' è il piolo di arrivo, mentre 'aus' è il piolo di appoggio per poter arrivare da ‘a' ——-
——-
——-
——-
——-