Fondamenti di Informatica T-1...ESERCIZIO 3(1) Si vuole realizzare un programma che, inseriti i voti...
Transcript of Fondamenti di Informatica T-1...ESERCIZIO 3(1) Si vuole realizzare un programma che, inseriti i voti...
Fondamenti di Informatica T-1Iterazione
Tutor:Angelo Feraudo
a.a. 2018/2019
Fondamenti di Informatica T-1 Angelo Feraudo 1 / 22
ITERAZIONE
• Iterazione: Strumento che consente la ripetizione di unadeterminata sequenza di azioni fino a quando una condizionerisulta essere falsa.
In Java abbiamo:
I ciclo FOR
I ciclo WHILE
I ciclo DO..WHILE
Fondamenti di Informatica T-1 Angelo Feraudo 2 / 22
Cicli WHILE e DO..WHILE
Fondamenti di Informatica T-1 Angelo Feraudo 3 / 22
Differenze WHILE e DO..WHILE
• Il ciclo do..while e simile al ciclo while con la differenza che,nel do..while, il corpo del ciclo viene eseguito almeno unavolta
• In altre parole, se la condizione e inizialmente falsa, ilcorpo di un ciclo while non viene mai eseguito, mentre quellodel ciclo do..while viene comunque eseguito una prima volta
Fondamenti di Informatica T-1 Angelo Feraudo 4 / 22
WHILE e DO..WHILE (Esempio pratico) (1)
Fondamenti di Informatica T-1 Angelo Feraudo 5 / 22
WHILE e DO..WHILE (Esempio pratico) (2)
Scrivere un programma che chieda all’utente di scegliereun’operazione e inserire i due operandi.Una volta acquisiti questi dati, il programma deve calcolare emostrare a video il risultato.Le operazioni possibili sono addizione, sottrazione, moltiplicazionee divisione.
• Attenzione al maiuscolo!
• Attenzione al divisore (!=0)
• Gli operandi devono essere numeri reali
N.B.Se l’utente inserisce un’operazione errata, il programma dovrachiedere nuovamente di inserire l’operazione. Questo dovraessere ripetuto finche l’operazione inserita non e valida.
Fondamenti di Informatica T-1 Angelo Feraudo 6 / 22
WHILE e DO..WHILE (Esempio pratico) (3)
Fondamenti di Informatica T-1 Angelo Feraudo 7 / 22
WHILE e DO..WHILE (Esempio pratico) (4)
Fondamenti di Informatica T-1 Angelo Feraudo 8 / 22
Ciclo FOR(1)
Cicli controllati da un contatore:for(int i = 0; i < n; i ++)
Equivale aint i = 0;
while(i < n) {...
i ++;
}N.B. E possibile definire l’indice direttamente dentro il for
Fondamenti di Informatica T-1 Angelo Feraudo 9 / 22
Ciclo FOR(2)
Fondamenti di Informatica T-1 Angelo Feraudo 10 / 22
FOR (Esempio pratico)
Fondamenti di Informatica T-1 Angelo Feraudo 11 / 22
ESERCIZIO 1(1)
Scrivere un programma TuttiPositiviPari che chieda all’utente diinserire una sequenza di interi (chiedendo prima quanti numerivoglia inserire) e poi, al termine dell’inserimento dell’interasequenza, stampi ”Tutti positivi e pari” se i numeri inseriti sonotutti positivi e pari, altrimenti stampi ”NO”.
• usare una variabile booleana per la verificare cosa stamparein output
• usare prima il ciclo WHILE e dopo il ciclo FOR
Fondamenti di Informatica T-1 Angelo Feraudo 12 / 22
ESERCIZIO 1(1)
Scrivere un programma TuttiPositiviPari che chieda all’utente diinserire una sequenza di interi (chiedendo prima quanti numerivoglia inserire) e poi, al termine dell’inserimento dell’interasequenza, stampi ”Tutti positivi e pari” se i numeri inseriti sonotutti positivi e pari, altrimenti stampi ”NO”.
• usare una variabile booleana per la verificare cosa stamparein output
• usare prima il ciclo WHILE e dopo il ciclo FOR
Fondamenti di Informatica T-1 Angelo Feraudo 13 / 22
ESERCIZIO 1(2)
Esempio di output
Fondamenti di Informatica T-1 Angelo Feraudo 14 / 22
ESERCIZIO 2(1)
• Scrivere un programma Ripetizioni che chieda all’utente diinserire una sequenza di caratteri (chiedendo prima quanticaratteri vuole inserire) e li ristampi man mano che vengonoinseriti.
• L’intero procedimento (chiedere quanti caratteri vuole inserire,leggere i caratteri e man mano stamparli) dovra essereripetuto per un totale di 3 volte.
• Alla fine delle 3 ripetizioni dell’intero procedimento stamparea video ”Fine”.
• Suggerimento: usare cicli for innestati.
Fondamenti di Informatica T-1 Angelo Feraudo 15 / 22
ESERCIZIO 2(2)
Esempio di output
Fondamenti di Informatica T-1 Angelo Feraudo 16 / 22
ESERCIZIO 3(1)
• Si vuole realizzare un programma che, inseriti i voti degliesami (in un numero non noto a priori) ed il numero di crediticorrispondenti, stampi a video la media ponderata
Media ponderata =∑
voto∗numeroCrediti∑numeroCrediti
• L’inserimento deve terminare se viene mandato in input ilvalore ”-1”
• Terminato questo processo, bisogna chiedere all’utente sevuole sapere o meno il possibile voto di partenza di laurea
• In caso di risposta affermativa all’utente viene chiesto ilnumero di anni fuori corso
Fondamenti di Informatica T-1 Angelo Feraudo 17 / 22
ESERCIZIO 3 (2)
• Il voto di partenza e calcolato con la formula:
mediaPonderata∗11030 ∗ α
• Il fattore moltiplicativo α e definito come segue:I In corso : 1.0325I Un anno fuori corso : 1.015I Due o piu anni fuori corso : 1
• Si ricorda di apportare tutti gli opportuni controlli suiparametri in ingresso. In particolare, ricordarsi che il voto diun esame deve essere compreso fra 18 e 30, mentre il numerodi crediti fra 3 e 8
• Si utilizzi il DO..WHILE
Fondamenti di Informatica T-1 Angelo Feraudo 18 / 22
ESERCIZIO 3 (3)
Esempio di output
Fondamenti di Informatica T-1 Angelo Feraudo 19 / 22
ESERCIZIO 4(1)
Scrivere il seguente programma:
• Simulare un gioco in cui il computer scelga casualmente duenumeri da 1 a 11 (Math) e li sommi.
• Il giocatore poi puo decidere (per un massimo di 7 volte) seestrarre un nuovo numero o fermarsi a quel risultato (sommadei numeri estratti fino a quel momento).
• Ovviamente al giocatore non saranno mai mostrati i numeriestratti. Dovra affidarsi alla sorte.
• Sara necessario chiedere in ogni momento all’utente se vuolefermarsi o proseguire.
• Se alla fine la somma dei numeri usciti e compresa tra 18 e22, il giocatore avra vinto.
• Se il numero e < di 18 o > di 22, il giocatore avra perso.
• Stampare a video il risultato ottenuto dal giocatore.
Fondamenti di Informatica T-1 Angelo Feraudo 20 / 22
ESERCIZIO 4 (2)
Esempio di output
Fondamenti di Informatica T-1 Angelo Feraudo 21 / 22
ESERCIZIO 4: Cos’e la classe Math
Brevemente: La classe Math contiene metodi utili per effettuareoperazioni numeriche basilari (radice quadrata, potenze ecc)
Nel nostro caso, per generare il numero casuale occorre usare ilmetodo random() della classe Math
int r1 = (int) (Math.random()*11)+1
Attenzione: il metodo random() ritorna un valore di tipo doublee quindi necessario fare un cast
Fondamenti di Informatica T-1 Angelo Feraudo 22 / 22