Disegni a terminale

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.

ZigZag draw loop Livello 8

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…

FrameName loop draw Livello 12

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.

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…

Tridente draw loop Livello 12

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…

Merlo draw loop Livello 12

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…

Ics draw loop Livello 12

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

Ecorc draw loop Livello 12

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

Croce draw loop Livello 12

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…

Cerchio draw loop math Livello 13

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