Scrivere un programma interattivo che chiede all’utente di inserire un numero intero e poi disegna un omino stilizzato di dimensione variabile:
Per dimensione pari a 1
viene stampato un omino con il busto composto da una sola pipe ('|'
):
Insert size: 1
\o/
|
/ \
Se l’utente inserisce 2
:
Insert size: 2
\o/
|
|
/ \
Per 3
:
Insert size: 3
\o/
|
|
|
/ \
Per qualsiasi altro valore intero, il busto sarà composto a 4 segmenti:
Insert size: 100
\o/
|
|
|
|
/ \
Se il valore inserito non è intero, il programma stampa un messaggio di errore e ripete la richiesta:
Insert size: big
Invalid value "big"
Insert size: small
Invalid value "small"
Insert size: ciao miao bau
Invalid value "ciao miao bau"
Insert size: -1
\o/
|
|
|
|
/ \
Scrivere un programma interattivo che chiede all’utente di inserire un numero intero e poi disegna un gruppo di omini stilizzati nella quantità richiesta:
Per dimensione pari a 1
viene stampato un omino:
Insert group size: 1
\o/
|
/ \
Se l’utente inserisce 2
vengono stampati 2 omini:
Insert group size: 2
\o/ \o/
| |
/ \ / \
Per 3
:
Insert group size: 3
\o/ \o/ \o/
| | |
/ \ / \ / \
E via dicendo. Se il valore inserito non è intero, il programma stampa un messaggio di errore e ripete la richiesta:
Insert group size: many
Invalid value "many"
Insert group size: too many
Invalid value "too many"
Insert group size: 10
\o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/ \o/
| | | | | | | | | |
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \
Scrivi il programma HelloPeople
che riceve N
nomi come argomenti da linea di comando e poi stampa altrettanti omini stilizzati. Sotto ogni omino compare il relativo nome.
Ad esempio per "Luigi Michele"
il programma stampa due omini:
\o/ \o/
| |
/ \ / \
Luigi Michele
Invece per "Simone Luigi Pincopallino Michele Joe"
:
\o/ \o/ \o/ \o/ \o/
| | | | |
/ \ / \ / \ / \ / \
Simone Luigi Pincopallino Michele Joe
Se non vengono forniti argomenti, il programma termina senza stampare niente.
Scrivi la classe Java ZigZag
. Tale classe deve utilizzare il carattere ‘/’ (slash) e il carattere ‘' (back-slash) per disegnare un tratteggio verticale infinito. Il disegno deve essere realizzato esattamente come illustrato nell’esempio seguente:
>java ZigZag
\
\
\
\
/
/
/
/
\
\
\
\
/
/
/
/
\
\
\
\
/
/
/
/
...
Scrivi il programma Java TriangoloRettangolo
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale un triangolo rettangolo pieno composto di asterischi (‘*’) con il lato lungo N:
Per N pari a 3 il programma stampa:
*
**
***
Per N pari a 5 il programma stampa:
*
**
***
****
*****
E via dicendo…
Scrivi il programma Java QuadratoPieno
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale un quadrato pieno composto di asterischi (‘*’) con il lato lungo N:
Per N pari a 3 il programma stampa:
***
***
***
Per N pari a 5 il programma stampa:
*****
*****
*****
*****
*****
E via dicendo…
Scrivi la classe FrameName
che chiede all’utente di inserire un testo e po lo stampa incorniciandolo utilizzando i caratteri Unicode della pagina U2500.
Qualche esempio:
Inserire testo: Alb
┌─────┐
│ Alb │
└─────┘
Oppure:
Inserire testo: Andrea
┌────────┐
│ Andrea │
└────────┘
O ancora:
Inserire testo: Tanto va la gatta al lardo...
┌───────────────────────────────┐
│ Tanto va la gatta al lardo... │
└───────────────────────────────┘
Nota: Su alcune shell i caratteri unicode potrebbero essere rappresentati in modo errato.
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 TridenteSpeculare
. Il programma chiede all’utente di introdurre un numero intero positivo (N) e poi disegna a terminale un tridente (riflesso verticalmente) composto di asterischi (‘*’) con l’altezza pari ad N:
Per N pari a 3 il programma stampa:
* *** *** *
** ** ** **
*** * * ***
*** * * ***
** ** ** **
* *** *** *
Per N pari a 4 il programma stampa:
* **** **** *
** *** *** **
*** ** ** ***
**** * * ****
**** * * ****
*** ** ** ***
** *** *** **
* **** **** *
Per 5:
* ***** ***** *
** **** **** **
*** *** *** ***
**** ** ** ****
***** * * *****
***** * * *****
**** ** ** ****
*** *** *** ***
** **** **** **
* ***** ***** *
E via dicendo…
Scrivi il programma Java Tridente
. Il programma chiede all’utente di introdurre un numero intero positivo (N) e poi disegna a terminale un tridente composto di asterischi (‘*’) con l’altezza pari ad N:
Per N pari a 3 il programma stampa:
* *** *** *
** ** ** **
*** * * ***
Per N pari a 4 il programma stampa:
* **** **** *
** *** *** **
*** ** ** ***
**** * * ****
Per 5:
* ***** ***** *
** **** **** **
*** *** *** ***
**** ** ** ****
***** * * *****
E via dicendo…
Scrivi il programma Java Merlo
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale un merlo (elemento tipico dell’architettura militare medievale) composto di asterischi (‘*’) con l’altezza pari ad N.
Il programma accetta esclusivamente valori numerici interi positivi.
Se l’utente fornisce un dato non accettabile (non numerico o negativo) il programma produce il messaggio “inserire solo numeri positivi”.
Per N pari a 3 il programma stampa:
* *
** **
*****
Per N pari a 4 il programma stampa:
* *
** **
*** ***
*******
E via dicendo…
Scrivi la classe Ics
che disegna a terminale una X composta di asterischi. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero (N).
Il programma accetta esclusivamente valori numerici interi positivi dispari.
Se l’utente fornisce un dato non accettabile (non numerico, pari o negativo) il programma produce il messaggio “inserire solo numeri positivi dispari”.
Per N pari a 3 il programma stampa:
* *
*
* *
Per N pari a 5 il programma stampa:
* *
* *
*
* *
* *
E via dicendo..
Scrivi il programma Java Ecorc
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero (N) e poi disegna a terminale una croce in negativo.
Il programma accetta esclusivamente valori numerici interi positivi dispari.
Se l’utente fornisce un dato non accettabile (non numerico, pari o negativo) il programma produce il messaggio “inserire solo numeri positivi dispari”.
Per N pari a 3 il programma stampa:
* *
* *
Per N pari a 5 il programma stampa:
** **
** **
** **
** **
Per N pari a 7 il programma stampa:
*** ***
*** ***
*** ***
*** ***
*** ***
*** ***
E via dicendo..
Scrivi il programma Java Croce
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale una croce composta di asterischi (‘*’). La dimensione della croce è definita dal valore immesso.
Il programma accetta esclusivamente valori numerici interi positivi pari.
Se l’utente fornisce un dato non accettabile (non numerico, dispari o negativo) il programma produce il messaggio “inserire solo numeri positivi pari”.
Per N pari a 4 il programma stampa:
**
****
****
**
Per N pari a 10 il programma stampa:
**
**
**
**
**********
**********
**
**
**
**
E via dicendo…
Scrivi il programma Java TriangoloIsoscele
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo dispari (N) e poi disegna a terminale un triangolo vuoto composto di asterischi (‘*’) avente la base di lunghezza pari ad N.
Il programma accetta esclusivamente valori numerici interi positivi dispari.
Se l’utente fornisce un dato non accettabile (non numerico, pari o negativo) il programma produce il messaggio “inserire solo numeri positivi dispari”.
Per N pari a 3 il programma stampa:
*
***
Per N pari a 5 il programma stampa:
*
* *
*****
E via dicendo…
Scrivi il programma Java TriangoloRettangoloVuoto
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale un triangolo rettangolo vuoto composto di asterischi (‘*’) con il lato lungo N:
Per N pari a 3 il programma stampa:
*
**
***
Per N pari a 5 il programma stampa:
*
**
* *
* *
*****
E via dicendo…
Scrivi il programma Java QuadratoVuoto
. Il programma chiede all’utente di introdurre (come argomento da linea di comando o interattivamente) un numero intero positivo (N) e poi disegna a terminale un quadrato vuoto composto di asterischi (‘*’) con il lato lungo N:
Per N pari a 3 il programma stampa:
***
* *
***
Per N pari a 5 il programma stampa:
*****
* *
* *
* *
*****
E via dicendo…
Scrivi il programma Cerchio
che chiede all’utente di introdurre un numero intero positivo (N) e poi disegna a terminale un cerchio di raggio pari ad N:
Per N pari a 2 il programma stampa:
* * *
* *
* x *
* *
* * *
Per un raggio pari a 3:
* * *
* *
* *
* x *
* *
* *
* * *
Per 7:
* * * * *
* * * *
* *
* *
* *
* *
* *
* x *
* *
* *
* *
* *
* *
* * * *
* * * * *
E via dicendo…
Per compensare la forma rettangolare dei caratteri e conferire maggiore rotondità al cerchio, raddoppiare la larghezza del disegno. Ad esempio per un raggio pari a 3:
Scrivi la classe NameFramer
contenente il metodo:
pubic static String frameName(String name, char c, int width)
che ritorna una stringa contenente la stringa name
incorniciata nel carattere c
utilizzato con uno spessore width
.
Ad esempio frameName("Piero",'*',2)
ritorna la stringa:
*********
*********
**Piero**
*********
*********
mentre frameName("Andrea",'$',1)
ritorna la stringa:
$$$$$$$$
$Andrea$
$$$$$$$$