Sei sulla pagina 1di 4

Esercitazione Lezione 1

18 marzo 2021

1 Istruzioni di consegna
ˆ Salvare ogni esercizio in un le di testo .java (1 per esercizio!) che abbia
il nome indicato nell'esercizio. Si noti che "public class" avrà come nome
lo stesso nome del le, tranne il .java. ES: Ricerca.java avrà public class
Ricerca.
ˆ Allo scadere del tempo, archiviare tutti i le .java in un archivio (se-
lezionate tutti i le, tasto destro, Aggiungi ad un archivio) chiamato
"nomeCognome" con i vostri nomi e cognomi. ES: andreaBozzi
ˆ Inviare l'archivio a me per posta o su discord non oltre le 17.30: ciò che
arriva dopo non sarà valutato.
ˆ Il Problema va risolto a casa nell'arco della prossima settimana. Le rispo-
ste vanno inviate per mail chiudendo in un archivio "nomeCognomePro-
blema" con i vostri nomi e cognomi. ES: andreaBozziProblema.
ˆ Il Problema va consegnato entro le 23.59 del 25 Marzo 2021.

2 Esercizi
2.1 I cicli For

Scrivere una classe Ricerca.java che inizializzi un array di dimensione chiesta


all'utente tramite standard input (Scanner) con valori a loro volta richiesti in
input all'utente. Eettuare una "ricerca lineare" su di esso chiedendo il valore
all'utente. (La ricerca lineare scorre l'array e confronta il valore chiesto all'utente
con quello presente nell'array, interrompendo la ricerca se lo trova e segnando
in una variabile booleana true). Stampare in output "Trovato" e "Non trovato"
a seconda dell'esito.

2.2 Foreach

Scrivere una classe RicercaEach.java che faccia quanto fatto nell'esercizio pre-
cedente ma utilizzando il costrutto for-each.

1
2.3 Matrici, che amore!

Scrivere una classe MatriceNM che modichi il codice sottostante in modo tale
che l'utente possa decidere quali valori inserire in ogni cella (non si deve più
inizializzare a 1). Aggiungere istruzioni che permettano di stampare i valori
nella matrice, formattandoli in modo che la rappresentino in modo adeguato
come in esempio.

Figura 1: Codice di partenza per esercizio 1.3

Figura 2: Esempio di esecuzione per una matrice 2x3 per esercizio 1.3

2.4 Area del Cerchio

Scrivere una classe AreaCerchio.java che calcoli l'area di un cerchio chiedendo


all'utente il raggio.

2
2.5 Moltiplica il random!

Scrivere una classe MoltiplicaRandom.java che generi un numero random tra 0


e 1 e che prenda un numero da standard input. Eettuare la moltiplicazione tra
il numero letto e quello casuale assicurandosi che il risultato sia sempre positivo
(l'utente può inserire valori negativi).

2.6 Angoli di un triangolo

Scrivere una classe AngoloTriangolo.java che, date in input le ampiezze di due


angoli di un triangolo come oat, determini l'ampiezza del terzo angolo. Si noti
che la somma degli angoli in un triangolo è sempre 180. Si usi una costante per
indicare questo valore.

2.7 Teorema di Pitagora

Scrivere una classe Pitagora che, letti due valori numerici rappresentanti i catati,
calcoli il valore dell'ipotenusa.

2.8 La stringa palindroma

Scrivere una classe Palindroma.java che prende in input una stringa e che stam-
pa a schermo se essa sia palindroma o meno. Possibile usare il owchart della
lezione 0 per trarre uno spunto. Si noti che una stringa è palindroma se può
essere letta in entrambe le direzioni, as esempio "osso" o "aia".

2.9 Disegna!

Scrivere una classe Disegna.java che chiede all'utente di selezionare un'opzione


tra 3 tramite l'immissione da tastiera di un valore tra 3 disponibili. Se il valore
inserito non è legittimo, stamparlo a schermo e terminare l'esecuzione. La scelta
del valore determina la modalità d'uso:
1. Viene stampato un quadrato nxn di righe alternate tra "+" e "/".
2. Viene stampato un quadrato nxn di simboli alternati tra "+" e "/".
3. Viene stampato un quadrato nxn dove la diagonale è composta da "|", ciò
che vi sta sopra da "+" e ciò che vi sta sotto da "/".

2.10 Il numero casuale

Scrivere una classe Indovina.java che permette di giocare ad un semplice gioco:


viene generato un numero casuale intero tra 0 e 100 (attenzione alla gestione
di rand!) e viene chiesto al giocatore di provare ad indovinare il numero. Se lo
indovina, il programma termina e stampa "Hai vinto!". Se non lo indovina, viene
stampato a schermo se il numero è maggiore o minore del numero proposto. Il
giocatore ha massimo 7 tentativi per indovinare il numero: se non riesce entro
tale ammontare, il programma termina stampando a schermo "Hai perso!".

3
(a) Modalità 1 (b) Modalità 2 (c) Modalità 3

3 Problema
Creare una variante del gioco "Battaglia Navale". Il gioco è per un singolo
giocatore che gioca contro il computer. All'avvio del gioco vengono generate due
griglie 10x10 che vengono riempite casualmente con 0 o 1. 0 indica casella vuota
mentre 1 indica la presenza di una nave. Un giocatore non può avere più di 20
navi! (Può però averne meno). Il giocatore viene informato sul numero di navi
sue e avversarie. A turno giocatore e computer sparano un colpo scegliendo due
coordinate. Se scelgono una casella con un 1, la trasformano in uno 0, altrimenti
non accade nulla. Il computer sceglie due valori casualmente. Il giocatore viene
sempre informato su dove ha sparato e se ha colpito, così come viene informato
dove il computer ha sparato e se ha colpito e viene informato anche sul numero
di navi sue e del computer rimanenti all'inizio di ogni turno. Se il giocatore non
ha navi (la sua griglia contiene solo 0) all'inizio del proprio turno, il programma
termina e viene stampato "Hai perso". Se invece a non avere più navi all'inzio
del turno del giocatore è il computer, il gioco termina e viene stampato "Hai
vinto."
ˆ Creare un diagramma di usso che rappresenti l'esecuzione (potete essere
anche informali, anche se la formalità è ben gradita).
ˆ Scrivere una descrizione a parole su come si pensa di implementare il
programma.
ˆ Provare a scrivere il programma.

Potrebbero piacerti anche