Language:EN
Rating : ⭐⭐⭐⭐⭐
Price: $10.99
Page 1 Preview
vostro nomev javax class dialogviewer static void

Vostro nomev javax class dialogviewer static void main args

28 Capitolo I

U n algoritm o che risolve un problem a è una sequenza di passi non am bigua, eseguibile e che term ina in un tem p o finito.

Lo p seu d o co d ice è una d escrizion e in form ale di una sequ en za di passi ch e risolvon o un problem a.

R I . 2 . Q uali parti di un com puter p osson o contenere il cod ice di un programma? E quali i dati da elaborare o elaborati?

R I . 3 . Q uali parti di un com puter hanno il com p ito di fornire inform azioni all’utente? E quali acquisiscono dati forniti dall’utente?

del file di esem pio HelloPrinter. java che avete scritto con !’editor;

dell’esecutore di program m i Java, java.exe oppure sem plicem ente java;

Introduzione 29

R I . 8. Cosa visualizza questo programma? Fate attenzione alle spaziature.

} }

R I . 10. Scrivete tre versioni del programma HelloPrinter. java,con errori di sintassi diversi. Scrivetene una versione con un errore logico.

^ Rl.ll. In che m o d o si scoprono gli errori di sintassi? E gli errori logici?

* * R I . 13. Scrivete un algoritm o per rispondere a questa dom anda: un con to bancario con tien e
* * R I . 16. N el problem a descritto nei C on sigli pratici 1.1, per confrontare autom obili candidate

all’acquisto si son o fatte ipotesi sul prezzo del carburante e suH’utilizzo annuale deH’autom obile. In linea teorica, sarebbe m eglio sapere quale vettura sia la m igliore senza dover fare tali ipotesi.

Perché un program ma eseguito al calcolatore non è in grado di risolvere tale problema?

** R I . 17. Im m aginate di voler affidare al vostro fratello m inore il com p ito di effettuare la copia

dom enicale a casa vostra.

R I . 19. G li antichi B abilonesi con oscevan o un algoritm o per calcolare la radice quadrata del

E l . l . Scrivete un program ma che visualizzi un m essaggio di saluto a vostra scelta, magari in una

lingua diversa dall’inglese.

E 1 .4 . Scrivete un program m a che calcoli e visualizzi il saldo di un con to bancario dop o il prim o,

secon d o e terzo anno. Il con to ha un saldo iniziale di $ 1000 e vi ven gon o accreditati annualm ente

I Dave I

★★★ E 1 .6 . Scrivete un programma che scriva il vostro nom e con lettere m olto grandi, com e nell’esem pio

* * :«c

in
H
*

E 1 .7 . Scrivete un program m a che visualizzi il vostro n om e usando l’alfabeto M orse, com e

I " I

I I

conoscete l’artista, fate una ricerca in Internet). Per rappresentare aree di colori diversi usate sequenze

di caratteri diversi, co m e @ @ @ oppure : : :, usando i caratteri - e | per com porre, rispettivam ente,

+-+-+-+

E 1 .1 1 . Scrivete un program ma che visualizzi un anim ale m entre pronuncia un saluto, sim ile a

I I I \ Coder!/

(_ l_ ) .......

E 1 .1 4 . Scrivete un program m a che visualizzi la bandiera degli Stati U n iti d ’A m erica usando

soltanto i caratteri * e =.

{

public static void main(String[] args)

E 1 .1 6 . C opiate ed eseguite il program ma seguente, poi m odificatelo in m od o che visualizzi il

m essaggio “ H ello, nomeV\essendo nomeciò che vien e scritto dall’utente nella finestra di dialogo

public static void main(String[] args)

{

} }
32
★★★

El. 17. M odificate il program ma dell’esercizio precedente in m od o che il dialogo con l’utente

prosegua con il m essaggio “M y nam e is H aliW hat w ou ld you like m e to do?” D o p o d ich é ignorate quanto scritto dall’utente e visualizzate in ogni caso il m essaggio seguente (sostituendo Dave con il n om e fornito inizialm ente dall’utente):

* }

}

lOptionPane.PLAINMESSAGE, new Imagelcon(imageLocation));

Alaska: 0%
Hawaii: 4 %

E 1.21 (economia). C onoscere più di una lingua è u n ’abilità m olto im portante nell’attuale m ercato del lavoro e una delle attività più elem entari consiste nel porgere un saluto. Scrivete un program ma che visualizzi una tabella con due colon n e, riportando frasi di saluto: nella prim a colonna la frase in inglese e nella seconda la stessa frase in u n ’altra lingua, a vostra scelta. Se non parlate altre lingue oltre all’inglese, usate un traduttore in Internet o chied ete a un am ico.

Sul sito web dedicato al libro si trova una raccolta di progetti di programmazione più complessi.

• Per visualizzare qualcosa in un fraine, occorre dichiarare una classe ch e estenda la classe

DComponent.

U tilizzo deH'API di Java per disegnare semplici figure

EllipseZD.Double e LineZD.Double son o classi che descrivono form e grafiche.

j ava.awt.Component getHeight

getHeight getWidth

setTitle java.lang.String

java.awt. geom.EllipseZD.Double length

java.awt.GraphicsZD paintComponent

draw javax.swing.D Frame

R 2 .2 . Fornite tre esem pi di oggetti che appartengono alla classe String. Fornite un esem p io di

oggetto che appartiene alla classe PrintStream. Fornite il n om e di due m etod i che appartengono alla

posto in vendita.

R 2 .5 . C h e valore ha mystery d op o questa sequenza di enunciati?

mystery = mystery + l;

R 2 .6 . C h e errore c ’è in questa sequenza di enunciati?

R 2 .8 . Fornite un esem pio di m etod o che riceve un argom en to di tipo int. Fornite un esem pio

di m etod o che restituisce un valore di tipo int. Fate le stesse c o se con il tipo String.

R 2 .1 1. Scrivete enunciati Java che inizializzino la variabile stringa message con un m essaggio com e

"Hello, World", elim inandovi poi i segni di punteggiatura m ed ian te ripetute invocazioni del m etod o

R 2 .1 4 . Scrivete enunciati Java per costruire gli oggetti così descritti:

a.
b.

con gli oggetti appena costruiti.

R 2 .1 6 . Scrivete un enunciato Java che inizializzi una variabile square con un rettangolo il cui vertice

ciano riferim ento al m edesim o quadrato, i cui lati abbiano tutti lunghezza 40 e il cui centro sia

posizionato nel punto di coordinate (20, 20).

r.translate(l5, 25);

d. r = new Rectangle();

R 2 .2 0 . C onsultate la d ocu m entazione API per scoprire m etodi per
concatenare due stringhe, cio è costruire una stringa costituita dalla prim a stringa, seguita dalla seconda;
elim inare da una stringa gli eventuali spazi iniziali e finali;
• convertire un rettangolo in una stringa;
individuare il più p iccolo rettangolo che con tien e due rettangoli dati;
restituire un num ero casuale in virgola m obile.

Per la soluzione di ciascun problem a, citate il n om e del m etod o identificato e la classe in cui èdefinito, il suo valore restituito e i tipi dei suoi parametri.

★★ R 2 .2 5 (g r a fic a ). A cosa serve un contesto grafico?

★★ R 2 .2 6 (g r a fic a ). Perché nei program m i grafici usiam o classi separate per i com p on en ti e per la loro visualizzazione?

per poi sostituirvi E2.3. Scrivete un program ma che inizializzi una stringa al valore "Mississippi",
tutte le lettere "i" con "ii", visualizzando infine la lunghezza della stringa ottenuta. In tale stringa, poi, si sostituiscono tutte le stringhe "ss" con "s", visualizzando di nuovo la lunghezza della stringa così ottenuta.

E 2 .4 . Scrivete un program ma che costruisca un rettangolo avente area 42 e un rettangolo avente perim etro 42, visualizzando larghezza e altezza di entram bi.

E2.6 (collaudo). Scrivete il program m a ReplaceTester che codifichi una stringa sostituendo, m ediante il m eto d o replace, tutte le lettere "i" con "!" e tutte le lettere "s" con Fate vedere che riuscite a codificare correttam ente la stringa "Mississippi", visualizzando il risultato prodotto e quello previsto.

E2.7. Scrivete il program ma HollePrinter che scam bi tra loro le lettere "e" e "o" in una stringa, usando ripetutam ente il m etod o replace. Fate vedere che la stringa "Hello, World!" si trasforma in "Holle, Werldi" .

public class BrighterDemo
{
public static void main(String[] args)
{
!Frame frame = new DFrame();
frame.setSize(200, 200);
Color myColor = ... ;
frame.getContentPane().setBackground(myColor);
frame.setDefaultCloseOperation(D Frame.EXIT_0N_CL0SE);

} }

frame.setVisible(true);

Utilizzareoggetti 83

E2.17. U sando la classe Picture vista nella sezion e Esem pi com pleti 2.2, scrivete il program ma DoubleSizePicture che carichi una figura e la visualizzi con una dim ension e pari al dop pio di quella originale, centrata all’interno della finestra.

E2.18 (grafica). Scrivete un program m a grafico che disegni due quadrati aventi il m edesim o centro. Progettate la classe TwoSquareViewer e la classe TwoSquareComponent.

Sul sito Web dedicato al libro si trova una raccolta di progetti di programmazione più complessi.

132 Capitolo 3

• I costruttori im postano i valori iniziali per i dati degli oggetti.

• Il n om e di un costruttore è sem pre uguale al n om e della classe.

Implementazione di una classe

L’im p lem en tazion e privata di una classe com pren de le variabili di esem plare e il corp o di

• Per collaudare una classe si usa un am biente interattivo oppure si scrive una classe di test che

esegua istruzioni di collaudo.

Le variabili locali son o dichiarate nel corp o di un m etod o.

Q uan do un m etod o term ina la propria esecu zione, le sue variabili locali scom paiono.

di esem plare del parametro im plicito.

• Il riferim ento th is rappresenta il parametro im plicito.

Realizzazione di classi che disegnano forme complesse

Creare una classe per ogni porzion e di figura che possa essere utilizzata più volte è u n ’ottim a

stessa?

R 3 .4 . C onsiderate una classe Grade che rappresenti un voto, in lettere, com e A + o B, secon d o le consu etu dini anglosassoni. D elineate due diverse scelte per le variabili di esem plare da usare per realizzarla.

R 3 .5 . C onsiderate una classe Time che rappresenti un istante di tem po, com e le 9 del m attino (9 a.m ., nel m on d o anglosassone) o le 3 .3 0 del p om eriggio (3.30 p.m .). D elin eate due diversi insiem i di variabili di esem plare che si potrebbero usare per realizzarla.

C o n se g u e n te m e n te , se lo to g lia m o d all’in terfaccia p u b b lica, c o m e si p u ò o tten er e un o g g e tto di tip o BankAeeount co n il saldo iniziale voluto?

b. A l co n tra rio , p o tr e m m o to g liere il co stru tto re BankAccount() e m ettere a d isp o siz io n e soltan to BankAeeount(double initialBalanee)?

R 3 .1 3 . C osa fa il m etod o seguente? Fornite un esem p io di com e si potrebbe invocare il m etod o.

public class BankAccount
{
public void mystery(BankAccount that, double amount)
{
this.balance = this.balance - amount;

} }

134 Capitolo 3

esiste un altro m etod o che fornisce il valore del saldo. In un con to di questo tipo non è possibile versare ulteriori fondi d op o l’apertura. Infine, occorre progettare un m etod o withdraw che preleva l’intero am m ontare del saldo: non son o consentiti prelievi parziali.

} }

return area;

Perché non è una buona idea usare una variabile di esem plare per m em orizzare l’area del quadrato? M odificate la classe in m o d o che area sia una variabile locale.

}

public int getAreaO { return area; }

}

public void grow() { sideLength = 2 * sideLength; }

R 3 .2 0 . U sando la tecnica di analisi descritta nel Paragrafo 3.5, studiate il program m a presentato nella sezion e C onsigli pratici 3.1.

R3.24 (grafica). Spiegate per quale motivo nella classe CarComponent le invocazioni dei metodi getWidth e getHeight non hanno parametri espliciti.

R3.25 (grafica). Come modifichereste la classe Car per poter visualizzare automobili di dimensioni diverse?

^
^

E3.2. Dovete simulare !’utilizzo di un conta-persone in uno scenario in cui il numero di persone che possono entrare in un luogo è limitato. Per prima cosa si imposta il limite massimo di persone, invocando il metodo

public void setLimit(int maximum)

** E3.3. Simulate un circuito elettrico che controlla la lampada di un corridoio, con interruttori alle due estremità del corridoio stesso. Ciascun interruttore può trovarsi in una di due posizioni (su o giù, Up O down) e la lampada può essere accesa o spenta {on o ojj). lì cambiamento di stato di uno qualsiasi dei due interruttori provoca il cambiamento di stato della lampada. Progettate i metodi:

public void toggleSecondSwitchO // cambia lo stato del secondo interruttore

public int get LampStateO

public void toggleSwitch(int switch) // cambia lo stato di un interruttore

che aggiunga al saldo del conto gli interessi, calcolati con il tasso fornito come parametro. Ad esempio, dopo l’esecuzione di questi enunciati

BankAccount momsSavings = new BankAccount(IOOO);

String.valueOf(prezzo).

E3.10. Dopo la chiusura, il gestore di un negozio vorrebbe conoscere il volume totale di vendite effettuate nella giornata: modificate la classe CashRegister in modo che sia in grado di farlo, dotandola dei metodi aggiuntivi getSalesTotal e getSalesCount,che restituiscono, rispettivamente, l’incasso totale e il numero totale di scontrini emessi, oltre al metodo reset che azzera tutti i contatori utilizzati, in modo che le operazioni funzionino correttamente il giorno successivo.

e i metodi:

public String getName()
public double getSalaryO
public void raiseSalary(double byPercent)

Ecco un esempio di utilizzo:

Car myHybrid = new Car(SO); // 50 miglia per gallone
myHybrid.addCas(20); // aggiungi 20 galloni di carburante
myHybrid.drive(lOO); // viaggia per 100 miglia
double gasLeft = myHybrid.getCasInTank()); // carburante rimasto
Potete ipotizzare che il metodo drive non venga mai invocato per una distanza maggiore di quella percorribile con il carburante disponibile. Progettate anche la classe CarTester che collaudi tutti i metodi.

public void addLine(String line)

Progettate un altro metodo che restituisca l’intero testo della lettera:

138 Capitolo 3

ultima riga del contenuto della lettera

Progettate anche il program ma di collaudo LetterPrinter che visualizzi questa lettera:

Dear Dohn :

In esso, costruite un esemplare della classe Letter e invocate due volte il m etodo addLine.

Suggerimenti:(1) U sate il m etod o concat per costruire una stringa più lunga a partire da due stringhe

E 3 .1 5 . R ealizzate la classe Bug che rappresenti un insetto che si sposta lun go una linea orizzontale,

verso sinistra o verso destra. Inizialm ente si sposta verso destra, ma pu ò cam biare direzione; ogni

public void turn() // cambia direzione

public void move() // si sposta di un'unità nella direzione attuale

bugsy.turn(); // cambia direzione

bugsy.moveO; // ora si trova nella posizione 10

sorgente lum inosa, la sua nuova posizion e vien e a trovarsi a m età strada tra quella precedente e la

posizione della sorgente lum inosa. D otate la classe di un costruttore:

Realizzareclassi 139

E 3 .2 0 (g r a fic a ). M igliorate l’esercizio precedente dotando la classe House di un costruttore che consenta di specificare posizione e dim ensione della casa da visualizzare, quindi popolate lo scherm o con un p o ’ di case di varie dim ensioni.

E 3 .2 1 (g r a fic a ). M odificate il program m a che disegna autom obili visto nel Paragrafo 3.8 in m od o che le autom obili vengano visualizzate in colori diversi. O gn i oggetto di tipo Car deve m em orizzare il proprio colore. Scrivete le classi Car e CarComponent m odificate.

140 Capitolo 3

E 3 .2 5 (g r a fic a ). C ostruite un grafico a barre per rappresentare i dati seguenti:

Delaware M em orial 2150

M ackinac 3800

T ipididatifondamentali 185

pow
round
sin
sqrt
tan
toDegrees
toRadians
java.lang.String
charAt
length
substring
java.lang.System
in
java.math.BigDecimal

eventualm ente dichiarando costanti quando tale scelta sia ritenuta adeguata.

a. Il num ero di giorni in una settimana

int mystery = 1;

mystery = 1 - 2 * mystery;

int mystery = 1 - 2 * mystery;

R 4 .4 . Scrivete in notazione m atem atica le seguenti espressioni Java.

★★ a.
b.
c.
d.

R 4 .5 . Scrivete in Java le seguenti espressioni m atem atiche.

5 = 5q+V^)t+-gt ^

\

INT
1 + ------

100.

You are viewing 1/3rd of the document.Purchase the document to get full access instantly

Immediately available after payment
Both online and downloadable
No strings attached
How It Works
Login account
Login Your Account
Place in cart
Add to Cart
send in the money
Make payment
Document download
Download File
img

Uploaded by : Matemanziaria

PageId: DOC21DD78E