Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione alla programmazione con JavaScript: Esercizi sui cicli e le stringhe, Esercizi di Programmazione Java

Esercizi su programmazione base in JavaScript

Tipologia: Esercizi

2020/2021

Caricato il 02/06/2021

Giuliasacco00
Giuliasacco00 🇮🇹

4.4

(26)

15 documenti

1 / 14

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Appunti:
Lezione 7
1) controllare se sono tutti pari, ma se è presente almeno uno dispari
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
——-
2) non controllare se sono tutti pari, ma se è presente almeno uno dispari (lui usa questo!)
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
*/
——-
3) esecizi con ciclo do e while
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à
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe

Anteprima parziale del testo

Scarica Introduzione alla programmazione con JavaScript: Esercizi sui cicli e le stringhe e più Esercizi in PDF di Programmazione Java solo su Docsity!

Appunti:

Lezione 7

1) controllare se sono tutti pari, ma se è presente almeno uno dispari

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

2) non controllare se sono tutti pari, ma se è presente almeno uno dispari (lui usa questo!)

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 */

3) esecizi con ciclo do e while

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à

scrivere un programma che legge una sequenza di stringhe da stdin, terminata da stringa "." e determina qual è

la massima lunghezza delle stringhe lette.

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

//se volessi attaccare insieme tutte le stringhe lette (concatenare stringhe)

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

5.3) Scrivere un programma che genera un triangolo di lato 10 che consiste interamente di caratteri " o “,

sottosopra

var r = 1 ; var c; while(r <= 10){ c = r; while(c <= 10){ document.write(" o "); c++; } document.write(""); r++; }

6) Esercizio per casa sui menù

scrivere un programma che permette all'utente di scegliere ripetutamente da un menu della forma:

  1. come ti chiami?
  2. fine e nel caso della scelta 1 saluta, altrimenti termina congedandosi definitivamente.

//se non si specifica, prompt legge i numeir come stringhe!! Lezione 8

1) esercizi con ciclo for

//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 */

//Scrivere un ciclo for che genera i numeri pari compresi tra 0 e 100, scrivendoli su output uno per riga

for(var n = 0; n <= 100; n++){ // i +=2, notazione per incrementare di 2 if((n % 2) == 0 ) document.write(n + ""); }

//scrivere un ciclo for che determina se il carattere “a” compare almeno una volta in una stringa letta da input

(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);

//scrivere un ciclo for che determina se il carattere “a” compare almeno una volta in una stringa letta da input

(Fatto con flag, e mi fermo appena trovo una a)

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

1) esercizi con ciclo for e array

//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”

//aggiunere elementi in coda

var cars = ["Volvo", "Fiat", "Bmw"]; cars[1] = "Bugatti"; cars.push("Ferrari") document.write (cars);

//non un nuovo ciclo for, perchè è inutile, la x smette di incrementare quando le possibilità di scelta saranno finite

e quindi sarà concluso il ciclo for

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

1) Primo approccio alle funzioni + esercizi con for e while (come scambiarli)

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? ——-

NB!! Si valuta sempre da SINISTRA VERSO DESTRA (ricordateloo)

//introduzione alle funzioni: creazione di tavola pitagorica 10×10 in 3 versioni differenti

PRIMA VERSIONE, modo più difficile e complicato, tramite innesto di due while uno dentro l'altro. Esercizio simile a

quello usato per creare un quadrato e poi un triangolo rispettivamente di lato e ipotenusa 10

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 ——-

//SECONDA VERSIONE, vengono usati i cicli for in modo che vengano sostituiti i while

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 ——-

//TERZA VERSIONE, si usano le funzioni e possiamo creare la tabellina di n, dove n è un valore che scegliamo noi

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 ——-

//ALTRE PROVE, si usano le funzioni e possiamo creare la tabellina di n, dove n è un valore che scegliamo noi ma

da STDIN (input standard)

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

1) Struttura ricorsiva di un problema + compito per casa di lezione 9

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' ——-

2) Esercizi in classe

——-

——-

——-

——-