Scrivi il programma FarfallinatoreInterattivo
che chiede all’utente di inserire una frase e poi la codifica in alfabeto farfallino (se non conosci l’alfabeto farfallino vedi wikipedia).
Esempio:
Inserire una frase: Il mattino ha l'oro in bocca
Ifil mafattifinofo hafa l'oforofo ifin bofoccafa
Oppure:
Inserire una frase: ciao come va
cifiafaofo cofomefe vafa
Scrivi il programma Saluto
che chiede all’utente di inserire il proprio nome e in seguito stampa a terminale: Buongiorno <nome>, benvenuto!
.
Inserisci il tuo nome per continuare: Luca
Buongiorno Luca, benvenuto!
Scrivi il programma SimpleInterest
utile per calcolare l’interesse semplice di un prestito. Il programma deve funzionare nel modo seguente:
Se il valore inserito non è un numero valido stampa il messaggio:
Valore C non valido "<valore>" e ricomincia dal punto 1.
Se il valore inserito è inferiore o uguale 0 stampa:
C deve essere maggiore di 0 e ricomincia dal punto 1.
Se il valore inserito non è un numero stampa:
Valore i non valido "<valore>" e ricomincia dal punto 4.
Se il valore inserito non è un numero intero stampa:
Valore n non valido "<valore>" e ricomincia dal punto 6.
Se il valore inserito è inferiore a 0 stampa:
Il periodo deve deve essere positivo e ricomincia dal punto 6.
Esempio 1:
Inserire il capitale iniziale (C): 1000
Inserire il tasso di interesse (i): 5
Inserire il periodo (n): 2
M2 = 1100.0
Esempio 2:
Inserire il capitale iniziale (C): -1
Il capitale deve essere maggiore di 0
Inserire il capitale iniziale (C): bau
Valore C non valido "bau"
Inserire il capitale iniziale (C): 1000
Inserire il tasso di interesse (i): miao
Valore i non valido "miao"
Inserire il tasso di interesse (i): 7
Inserire il periodo (n): -1
Il periodo deve essere positivo
Inserire il periodo (n): cucu
Valore n non valido "cucu"
Inserire il periodo (n): 5
M5 = 1350.0
Scrivi il programma ArithmeticProgression
utile per calcolare i termini di una progressione aritmetica. Il programma deve funzionare nel modo seguente:
Se il valore inserito non è un numero intero stampa il messaggio:
Valore a1 non valido "<valore>" e ricomincia dal punto 1.
Se il valore inserito non è un numero intero stampa:
Valore r non valido "<valore>" e ricomincia dal punto 3.
N
)Se il valore inserito non è un numero intero stampa:
Valore N non valido "<valore>" e ricomincia dal punto 5.
Se il valore inserito è inferiore a 1 stampa:
Il numero di termini deve essere maggiore di 0 e ricomincia dal punto 5.
N
termini della progressione aritmeticaEsempio 1:
Inserire primo termine (a1): 1
Inserire ragione (r): 2
Inserire numero di termini (N): 10
1, 3, 5, 7, 9, 11, 13, 15, 17, 19.
Esempio 2:
Inserire primo termine (a1): bau
Valore a1 non valido "bau"
Inserire primo termine (a1): 1
Inserire ragione (r): miao
Valore r non valido "miao"
Inserire ragione (r): 2
Inserire numero di termini (N): muhh
Valore N non valido "muhh"
Inserire numero di termini (N): 0
Il numero di termini deve essere maggiore di 0
Inserire numero di termini (N): 5
1, 3, 5, 7, 9.
Scrivi il programma ScegliNumero
che chiede all’utente di inserire un numero. Se il valore immesso è compreso tra i due interi passati come argomenti da linea di comando, il programma stampa Bravo!
e termina. Altrimenti ripete la richiesta.
Ad esempio:
$ java ScegliNumero 5 1
Inserisci un numero: 15
Numero non valido, riprova!
Inserisci un numero: 6
Numero non valido, riprova!
Inserisci un numero: 3
Bravo!
Scrivi la classe ImcCalculator
che calcola l’indice di massa corporea (IMC) dell’utente. L’IMC si calcola secondo la formula seguente:
Il programma deve richiedere interattivamente all’utente i dati necessari per effettuare il calcolo; prima viene richiesto il peso espresso in kg e poi l’altezza espressa in cm.
Nota bene: La formula funziona solo per un peso compreso tra 40.0 e 130.0 kg e un’altezza compresa tra 140.0 e 200.0 cm; se vengono introdotti valori al di fuori di questi intervalli o valori di tipo non appropriato, il sistema chiede nuovamente il dato, fino a quando il valore è accettabile.
Alla fine il programma stampa a terminale il IMC calcolato come nell’esempio seguente:
Questo programma calcola il tuo indice di massa corporea (IMC).
PREMI ENTER PER CONTINUARE...
Inserisci il tuo peso in kg (min: 40.0kg - max: 130.0kg): 20
Il peso deve essere compreso tra 40.0 e 130.0 kg, riprova.
Inserisci il tuo peso in kg (min: 40.0kg - max: 130.0kg): 78
Inserisci la tua altezza in cm (min: 140.0cm - max: 200.0cm): 350
l'altezza deve essere compresa tra 140.0 e 200.0 cm, riprova.
Inserisci la tua altezza in cm (min: 140.0cm - max: 200.0cm): 180
Il tuo peso: 78.0 kg
La tua altezza: 180.0 cm
Il tuo IMC: 24.074076
Scrivi il programma BinSum
che chiede all’utente di inserire due valori interi espressi in notazione esadecimale e poi ne stampa la somma in base 2. I valori binari devono essere stampati a 32 bit.
Esempio:
>java BinSum
Inserire primo addendo (in esadecimale): AA
Inserire secondo addendo (in esadecimale): 5
00000000000000000000000010101010
00000000000000000000000000000101 +
--------------------------------
00000000000000000000000010101111
Oppure:
>java BinSum
Inserire primo addendo (in esadecimale): 1
Inserire secondo addendo (in esadecimale): -1
00000000000000000000000000000001
11111111111111111111111111111111 +
--------------------------------
00000000000000000000000000000000
Scrivi il programma HexSum
che chiede all’utente di inserire due valori interi espressi in notazione esadecimale e poi ne stampa (sempre in base 16) il risultato della somma.
Qualche esempio:
>java HexSum
Inserire primo addendo (in esadecimale): 9
Inserire secondo addendo (in esadecimale): 1
9
1 +
--------
A
>java HexSum
Inserire primo addendo (in esadecimale): AA55
Inserire secondo addendo (in esadecimale): 55AA
AA55
55AA +
--------
FFFF
Scrivere la classe Asciigator
che chiede all’utente di digitare un stringa di testo e poi stampa ogni carattere contenuto nella stringa introdotta e il relativo codice Unicode (in decimale e in esadecimale).
Ad esempio per ABCDEF1234567890
il programma produce l’output seguente:
Introdurre un testo:
ABCDEF1234567890
char: 'A' 'B' 'C' 'D' 'E' 'F' '1' '2' '3' '4' '5' '6' '7' '8' '9' '0'
dec: 65 66 67 68 69 70 49 50 51 52 53 54 55 56 57 48
hex: 41 42 43 44 45 46 31 32 33 34 35 36 37 38 39 30
Mentre per Hello world!
:
Introdurre un testo:
Hello world!
char: 'H' 'e' 'l' 'l' 'o' ' ' 'w' 'o' 'r' 'l' 'd' '!'
dec: 72 101 108 108 111 32 119 111 114 108 100 33
hex: 48 65 6c 6c 6f 20 77 6f 72 6c 64 21
Scrivi il programma Hex2Float
che chiede all’utente di introdurre un valore esadecimale e lo converte in un numero a virgola mobile a precisione singola (float
).
Il programma stampa i 32 bit del valore inserito e il corrispondente valore secondo il formato IEEE754. Qualche esempio:
>java Hex2Float
Introdurre un valore esadecimale (32bit): 3fc00000
00111111110000000000000000000000 -> 1,50000
>java Hex2Float
Introdurre un valore esadecimale (32bit): -7F000001
10000000111111111111111111111111 -> -2,35099e-38
>java Hex2Float
Introdurre un valore esadecimale (32bit): bf800000
10111111100000000000000000000000 -> -1,00000
>java Hex2Float
Introdurre un valore esadecimale (32bit): FFFFFFFF
11111111111111111111111111111111 -> NaN
Puoi verificare la bontà dei risultati ottenuti confrontandoli con quelli prodotti da un convertitore IEEE754.
Scrivi il programma Scacchiera
che:
1
e 0
altrenati come su una scacchiera.Esempio, per una matrice 5 x 5:
Inserire numero di righe: 5
Inserire numero di colonne: 5
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
Il programma deve funzionare correttamente anche per matrici rettangolari. Esempio:
Inserire numero di righe: 6
Inserire numero di colonne: 8
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1
1 0 1 0 1 0 1 0
MenuCreator
Devi realizzare un’applicazione utile per redigere il menu di un ristorante. Un menu è costituito dall’elenco delle pietanze servite. Per ogni pietanza viene indicato il nome e il prezzo.
Per realizzare l’applicazione devi procedere in 2 fasi.
Food
Creare la classe Food
, che rappresenta il modello di pietanza. La classe Food
deve possedere due attributi privati utili per la memorizzazione del nome e del prezzo della pietanza (e i relativi metodi getter e setter). Il nome è costituito da una stringa (valore di default "NO NAME"
), mentre il prezzo è un numero reale a precisione doppia (valore di default 5.0
). Inoltre la classe deve esportare il costruttore vuoto e un costruttore personalizzato che permetta di inizializzare entrambi gli attributi della pietanza.
MenuCreator
Realizzare l’applicazione MenuCreator
. È una semplice applicazione che serve a generare il menu (la carta delle pietanze) di un ristorante. Quando viene eseguita, propone all’utente 2 possibilità: Aggiungi pietanza
e Esci
.
Scegliendo Aggiungi pietanza
, l’utente può aggiungere una pietanza fornendone il nome ed il prezzo. Il nome della pietanza non può essere vuoto o nullo e deve avere una lunghezza massima di 50 caratteri. Il prezzo fornito deve essere un numero positivo.
[1 Aggiungi pietanza | 2 Esci] Scelta: 1
Aggiungi pietanza
-----------------
Nome pietanza: Insalata verde
Prezzo pietanza: 6.50
Aggiunto Insalata verde, CHF 6.50
---------------------------~~ MENU ~~---------------------------
| Insalata verde CHF 6.50 |
----------------------------------------------------------------
[1 Aggiungi pietanza | 2 Esci] Scelta:
Se un valore fornito dall’utente non è accettabile, il programma stampa un messaggio e ripropone la richiesta come mostrato nell’esempio seguente:
[1 Aggiungi pietanza | 2 Esci] Scelta: 1
Aggiungi pietanza
-----------------
Nome pietanza: Specialità della casa con il nome trooooppo lunghissimo
Nome non valido Specialità della casa con il nome trooooppo lunghissimo
Nome pietanza: Sorbetto
Prezzo pietanza: -12
Prezzo non valido -12.0
Prezzo pietanza: 6
Aggiunto Sorbetto, CHF 6.00
---------------------------~~ MENU ~~---------------------------
| Insalata verde CHF 5.50 |
| Insalata mista CHF 6.50 |
| Spaghetti aglio olio e peperoncino CHF 9.00 |
| Spaghetti alla carbonara CHF 12.50 |
| Lasagne fatte in casa CHF 14.00 |
| Bistecca di manzo con contorno CHF 23.25 |
| Polenta e brasato CHF 22.00 |
| Torta della nonna CHF 6.40 |
| Gelato CHF 2.40 |
| Sorbetto CHF 6.00 |
----------------------------------------------------------------
[1 Aggiungi pietanza | 2 Esci] Scelta:
Dopo aver aggiunto una pietanza all’elenco il programma stampa un messaggio di conferma (es. Aggiunto Sorbetto, CHF 9.00
) e il menu formattato correttamente. Poi propone nuovamente la possibilità di aggiungere una pietanza o di terminare il programma.
Scrivi il programma Rotator
che chiede all’utente di disegnare una figura bidimensionale e poi la stampa ruotandola (applica un rotazione di 90° in senso orario e una simmetria speculare verticale) come mostrato negli esempi seguenti.
La figura introdotta può avere una dimensione massima di 10 x 10 (10 righe e 10 colonne).
L’introduzione della figura termina con successo quando l’utente introduce una riga vuota e preme enter oppure quando la dimensione verticale della figura raggiunge le 10 righe.
Se durante l’introduzione l’utente introduce una riga più lunga di 10 caratteri il programma stampa il messaggio Linea troppo lunga, riprova:
e l’introduzione ricomincia da capo.
Qualche esempio:
Inserire un disegno (enter per terminare):
abcd
efgh
Rotazione:
ae
bf
cg
dh
Oppure:
Inserire un disegno (enter per terminare):
*
***
*********
***
*
Rotazione:
*
*
*
*
*
*****
***
***
*
Oppure per un riga troppo lunga:
Inserire un disegno (enter per terminare):
abcdefghjkklm
Linea troppo lunga, riprova:
12345
6 7
89ABC
Rotazione:
168
2 9
3 A
4 B
57C
Scrivi la classe Patternizer
che chiede all’utente di inserire un pattern che servirà da modello per disegnare una figura bidimensionale. L’utente introduce la sequenza di caratteri da stampare su di una sola riga utilizzando il carattere 'g'
per indicare i punti in cui andare a capo.
Ad esempio la sequenza " /\g/ \g|__|"
produce il disegno seguente:
/\
/ \
|__|
Il programma stampa il disegno in uno spazio cartesiano in cui devono comparire le coordinate orizzontali e verticali come mostrato negli esempi seguenti:
Inserire pattern (g per new line):
****g* *g* *g****
0123
0****
1* *
2* *
3****
Oppure:
Inserire pattern (g per new line):
*********g.*.....*.g..*...*..g...*.*...g....*....
012345678
0*********
1.*.....*.
2..*...*..
3...*.*...
4....*....
La figura contenuta nel pattern deve avere una larghezza massima di 10 caratteri. Se il pattern fornito non rispetta questa regola, il programma stampa il messaggio Riga <riga> troppo lunga (max 10 char)
, indicando il numero della riga non valida e poi ripete la richiesta iniziale. Esempio:
Inserire pattern (g per new line):
*.*.*.*.*.*g***g---*g
Riga 0 troppo lunga (max 10 char)
Inserire pattern (g per new line):
/\/\/\g\/\/\/
012345
0/\/\/\
1\/\/\/
Scrivi il programma Filler
che chiede all’utente di disegnare una figura bidimensionale chiusa composta di asterischi ('*'
). L’introduzione della figura termina quando l’utente introduce una riga vuota e preme enter. Il programma stampa poi la figura riempiendone le cavità orizzontali, come mostrato negli esempi seguenti. Qualche esempio:
Disegnare figura chiusa (enter per terminare):
********
* *
* *
********
Figura piena:
********
********
********
********
Oppure:
Disegnare figura chiusa (enter per terminare):
*
* *
* *
* *
*
Figura piena:
*
*********
*************
*********
*
Se viene immessa una riga non vuota che non contiene nemmeno un asterisco, viene stampato il messaggio Linea non valida!
e poi ripete la richiesta iniziale. Esempio:
Disegnare figura chiusa (enter per terminare):
kasdjfnkasfd
Linea non valida! Disegnare figura chiusa (enter per terminare):
*
* *
*****
*
Figura piena:
*
***
*****
*
Scrivi la class Coordinator
che:
Chiede all’utente di inserire la coordinata di riga (intero, valore minimo 0
, valore massimo 4
).
Se il valore non è valido stampa un messaggio di errore e ricomincia dal punto 1.
Chiede di inserire la coordinata di colonna (intero, valore minimo 0
, valore massimo 4
).
Se il valore non è valido stampa un messaggio di errore e ricomincia dal punto 3.
Stampa a terminale un piano cartesiano (dimensione 5 x 5) con una X
alla coordinata immessa (vedi esempi).
I messaggi di errore da stampare (ai punti 2. e 4.) sono i seguenti:
"Valore troppo piccolo <valore>"
"Valore troppo grande <valore>"
"Inserire solo numeri interi"
Esempio di output:
Inserire coordinata riga [0;4]: 2
Inserire coordinata colonna [0;4]: 2
01234
0
1
2 X
3
4
Oppure:
Inserire coordinata riga [0;4]: -1
Valore troppo piccolo -1
Inserire coordinata riga [0;4]: 0
Inserire coordinata colonna [0;4]: 100
Valore troppo grande 100
Inserire coordinata colonna [0;4]: zero
Inserire solo numeri interi
Inserire coordinata colonna [0;4]: 0
01234
0X
1
2
3
4
Un costruttore di automobili desidera un applicativo utile per gestire la configurazione dei veicoli che produce.
Car
Devi innanzitutto creare una classe rappresenti un modello astratto di un automobile e tutti i suoi optional.
Le caratteristiche di un’auto sono le seguenti:
Devi quindi creare la classe Car
con gli attributi privati descritti in seguito e i relativi metodi getter e setter:
type
: intero che definisce il tipo di carrozzeria (1: CABRIO
, 2: PICKUP
)wheelsSize
: intero che definisce la dimensione delle ruote (1: SMALL_WHEELS
, 2: BIG_WHEELS
)hook
: booleano che definisce la presenza del gancio opzionale (true
: con gancio, false
: senza gancio)La classe deve esportare due costruttori:
public Car()
: instanzia una macchina con i valori di default (decappottabile, ruote piccole e senza gancio)public Car(int type, int wheelsSize, boolean hook)
: istanzia una macchina personalizzataInoltre deve esportare il metodo public void draw()
che stampa la rappresentazione grafica della macchina nei modo seguenti:
ruote ruote ruote ruote
piccole grandi piccole grandi
+ traino + traino
__ __ __ __
___|_\__ ___|_\__ ___|_\__ ___|_\__
Pickup -o----o- -O----O- J-o----o- J-O----O-
____\___ ____\___ ____\___ ____\___
Cabrio -o----o- -O----O- J-o----o- J-O----O-
CarConfigurator
Ora scrivi il programma interattivo CarConfigurator
che permette all’utente di configurare un autoveicolo da acquistare.
Il programma funziona nel modo seguente:
1
: Pickup, 2
: Cabriolet). Se l’utente introduce un valore non appropriato, stampa il messaggio "Scelta non valida <valore>"
e ricomincia dal punto 1.1
: piccole, 2
: grandi). Se l’utente introduce un valore non appropriato, stampa il messaggio "Scelta non valida <valore>"
e ricomincia dal punto 2.1
: si, 2
: no). Se l’utente introduce un valore non appropriato, stampa il messaggio "Scelta non valida <valore>"
e ricomincia dal punto 3.Esempio:
$ java CarConfigurator
Car configurator
Carrozzeria (1.Pickup, 2.Cabrio): moto
Scelta non valida moto
Carrozzeria (1.Pickup, 2.Cabrio): 2
Ruote (1.Piccole, 2.Grandi): rotonde
Scelta non valida rotonde
Ruote (1.Piccole, 2.Grandi): 3
Scelta non valida 3
Ruote (1.Piccole, 2.Grandi): 2
Gancio di traino (1.Si, 2.No): 1
____\___
J-O----O-
$
Scrivi il gioco interattivo MorraCinese
. Il programma chiede di inserire il punteggio massimo, poi il gioco comincia. Vince chi raggiunge prima il punteggio massimo.
1
per carta, 2
per sasso, 3
per forbice).1
per carta, 2
per sasso, 3
per forbice).0
per continuare, 1
per terminare).0
il programma ricomincia dal punto 1.1
il programma termina.Esempio:
Oppure, se la vostra console supporta Unicode:
Scrivi il programma interattivo Butterflyzer
che permetta di codificare e decodificare messaggi in alfabeto farfallino.
'c'
per codificare, 'd'
per decodificare, 'q'
per terminare),'q'
il programma termina.'c'
, chiede all’utente di digitare una stringa di testo da codificare e poi stampa il messaggio codificato.'d'
, chiede all’utente di digitare il messagio da decodificare e poi stampa il testo decodificato.Esempio:
$ java Butterflyzer
Codificatore/decodificatore alfabeto Farfallino
Premi 'c' per codificare un messaggio
Premi 'd' per decodificare un messaggio
Premi 'q' per uscire
Scelta: x
Scelta non valida 'x'
Codificatore/decodificatore alfabeto Farfallino
Premi 'c' per codificare un messaggio
Premi 'd' per decodificare un messaggio
Premi 'q' per uscire
Scelta: c
Inserire testo da codificare: Tanto va la gatta al lardo
Messaggio codificato: Tafantofo vafa lafa gafattafa afal lafardofo
Codificatore/decodificatore alfabeto Farfallino
Premi 'c' per codificare un messaggio
Premi 'd' per decodificare un messaggio
Premi 'q' per uscire
Scelta: d
Messaggio da decodificare: Lefe frafagofolefe sofonofo mafatufurefe
Testo decodificato: Le fragole sono mature
Codificatore/decodificatore alfabeto Farfallino
Premi 'c' per codificare un messaggio
Premi 'd' per decodificare un messaggio
Premi 'q' per uscire
Scelta: q
$