Professional Documents
Culture Documents
Preview
Preview
PRO.TECH
Informatica per Istituti Tecnici Tecnologici
B
Linguaggio Java Programmazione ad oggetti
Web e applicazioni Android
Ulteriori Contenuti digitali integrativi sono disponibili sul sito della Casa Editrice
www.edatlas.it
Agostino LORENZI Andrea RIZZI
PRO.TECH
Informatica per Istituti Tecnici Tecnologici
ATTIVA IL TUO
1 Vai sul sito www.scuolabook.it
e ACCEDI con e-mail e password
(o iscriviti se è la prima volta
che usi la piattaforma). TITOLO
DEL LIBRO
2
kmti02vibtderpdz
B
Linguaggio Java Programmazione ad oggetti
Web e applicazioni Android
© Istituto Italiano Edizioni Atlas
Coordinamento redazionale: Bianca Rossi
Redattore responsabile: Marta Bianchetti
Redazione ed editing: Claudia Dalle Mura
Coordinamento grafico: Massimiliano Micheletti
Progetto grafico: Massimiliano Micheletti
Copertina: Appears s.r.l.
Videoimpaginazione: IN PAGINA sas, Arezzo
Coordinamento iconografico: Marco Cattaneo
Ricerca iconografica: Claudia Dalle Mura
Coordinamento digitale: Silvia Gadda
Disegni: Vavassori & Vavassori
Il marchio Libro in Chiaro mette in evidenza le qualità del libro di testo e con la Carta d’Identità – in modo semplice, immediato e trasparente – indica gli elementi
di cui è composto, descrivendone gli aspetti qualitativi e quantitativi, la validazione del processo produttivo, le modalità di rapporto con l’utente e l’osservanza delle
norme di legge etico-comportamentali. Scopri, con la Carta d’Identità, la storia di ogni libro visitando il sito della Casa Editrice.
L’accesso a tutti i contenuti digitali è riservato all’utente registrato, che ha accettato le relative condizioni generali di licenza d’uso riportate sul sito della Casa Editrice.
Tale licenza non è trasferibile a terzi.
Il presente volume è conforme alle Linee Guida e alle disposizioni ministeriali in merito alle caratteristiche tecniche e tecnologiche dei libri di testo.
Per fini esclusivamente didattici, nei volumi a stampa e relativi supporti vengono indicati link a siti internet di terze parti.
I diritti di traduzione, di memorizzazione elettronica, di riproduzione e di adattamento totale o parziale, con qualsiasi mezzo (compreso i microfilm e le copie fotostati-
che) sono riservati per tutti i Paesi.
Informazioni per studenti non vedenti, ipovedenti, disabili motori o con disturbi specifici dell’apprendimento sul sito www.edatlas.it/it/supporto/domande-frequenti
Le fotocopie per uso personale del lettore possono essere effettuate nei limiti del 15% di ciascun volume/fascicolo di periodico dietro pagamento alla SIAE del com-
penso previsto dall’art. 68, commi 4 e 5 della legge 22 aprile 1941, n. 633.
Le riproduzioni diverse da quelle sopra indicate (per uso non personale - cioè, a titolo esemplificativo, commerciale, economico o professionale - e/o oltre il limite del
15%) potranno avvenire solo a seguito di specifica autorizzazione rilasciata da EDISER Srl, società di servizi dell’Associazione Italiana Editori, attraverso il marchio
CLEARedi Centro Licenze e Autorizzazioni Riproduzioni Editoriali. Informazioni: www.clearedi.org
Proprietà letteraria riservata.
1
n le qu ali vie ne
le modalità co
però aggiungere even aperte
ti: da attività di flipped classroom
Il concetto di classe mmazi
one guidata dagli
che, usa la progra
Il linguaggio di
acc e gra fi ere ge stit
ATTIVITÀ 1
hia-
o ric(classe capovolta), per attivare la didattica
e le int erf che de ve ess a oggetti e
ociato un evento
Obiettivo: comprendere il concetto
di programmazione
e smuovere l’interesse.
programmazione
int era zio ne de
a ogni A CASA
appropriata.
ca
della classe Cerchio e sulla codifi
Guarda il video tutoriale sulla creazione
i senza risp
Svolgi la creazione della classe e
il calcolo proposto nel video, scrivendo
è può manifestars
zione con il tuo computer personale.
codifica nel linguaggio di programma
ne ral e un ev en OLO
In ge Chiarisci i tuoi dubbi
MPIO
Le classiESE 2
tutti gli aspetti che non ti sono chiari;
e gli oggetti
– fai domande all’insegnante su
e prova a rispondere.
tempi prefissati.
– ascolta le domande dei tuoi compagni
Metti in pratica
del lavoro svolto a casa, create e
ntr e no n po ssia-
– a gruppi di tre, seguendo la traccia
definendo gli attributi e i metodi
per il
, me
fero sono eventi
codificate le classi Cilindro e Cubo, e
CLASSE CAPOVOLTA
Scrivete poi il programma per il calcolo
verifica a una
con tutta la classe le soluzioni trovate.
L’accensione de perso
mpleanno di una
COMPETE NZE Per iniziare
come evento il co
mo considerare
1 • Conoscere i concetti di base e Considera un tablet come oggetto
la metodologia della programma reale. Completa lo schema inserendo
zione ad
a della document azione con javadoc oggetti descrivono l’oggetto e le azioni
che possono essere fatte su di
le proprietà che
La generazione automatic esso.
a.
ATTIVITÀ 2 • Definire le classi con attributi e met
dell’utente:
Proprietà
ione del software • Applicare i principi della programma
o all’interazione
pagine in formato HTML per la documentaz zione ad oggetti utilizzando il
1 Il linguaggio Java
linguaggio Java nome prodotto
mp ute
A CASA
Un evento, riferito
INSERTO A
CONOSCE
o l’apertura o
( Parte1\Attività2).
Guarda il video tutoriale su javadoc • Concetti di base della programma
ti
2 Le classi e glii ogget possibili eventi son
zione ad oggetti .....................................................
• Classi e oggetti
ci. Qu est .
IN CLASSE
ll’utente.nti
aspetti
lo schermo; pre
tutti gli
– fai domande all’insegnante su
Quest
accendere
a da un gli eleame o un
spegnere
gire co n ess Oc ge ne raz ion e di n pu ò ess ere ua rda nti qu est a azi ua lizz
ABILITÀ
ate sul lo ti.
scrivete il codice di un programma
Java per calcolare la media delle
stature
ene qusol
commento. Generate poi la documentaz
ratseo con
soluzioni trovate.
sen tan o o fi sua ge stio ne tas tie ra pe r int Confrontate con tutta la classe le • Disegnare i diagrammi di classe
6 L’accesso ai databa
JDBC
rappre deve provvedere ò usare il mouse o alla la facIOcia.
• Creare e utilizzare gli oggetti
mazione guidata
da le modalità con le
2. Programma che traduce il codice
mendo c. Libreria sorgente in codice bytecode
o all’azionegu
ne di un programma Java
eventi:
d. Compilatore
stito richia-
4. Insieme di classi e metodi per
tel evi sor e vie ne generatla pro gra azida onl eteleviida sor e, ch e si attiva -
sione del , usanto viene gestit a richia
L’evento accrenge erf acc
int osta a questo e gra fi che eve ess ere ge stit o
Ogni capitolo La OOP, pe sireapre
tasto.con
stire le La rispl’esplicitazione asstel o un
iatsiv
ocevi evento che deve
un particola era zio ne de ll’u ten tetovie
na
neale
can o.
ven to pre ssi one
za rispettdi arecompetenze, a ogni int are un determi atae. abilità ed
conoscenze razione dell’e
uò manifestarsi sen per visualizz’az appro pri use causa la gene zioni assocrisp iate a
maute ndonte uncheion pre
e me un tasto del mo iem e di op era ettare
esercizi
Un che saggiano i prerequisiti.
ne gestitoto eseguendoo,un ins
ò manifestarsi sen
za
ESEMPIO del tasto deun l mouse: essèoun vie
avv en im en asincron cioè pu
evento tente
ge nerale ll’interazione dell’u
e no n po ssi a- Inqu ell’evento. ti. GU I gli eve nti po ssono nascere da ch ius a, rid
MPIO
ESEott a
ono eventi, me ntr pi pre fissamma che usa una viene
57
aL’a
ico
ca non può essere
Un’interfaccia grafi
rappresentano solo
figure, linee colorat
eve nto il mp
e, scritte che vengon
co
o la tastiera per lea
interagire con esse.
Occorre
come
e l’interfaccia.
mo considerare
e può usare il mouse zione tra l’utente
scadenza precisa.
che, usa la progra
seguito all’intera
ce grafi essere gestito richia-
le interfac che deve
La OOP, per gestire associato un evento
re la tente:
a ogni interazione
r, si verifica in seg
ento asincro no, cioè può manife
la
pulsante oppure
è un avvenim
In generale un evento
I sul compute poter utilizzare quanto viene in pratica quanto studiato, intitolate
ESEMPIO
tempi prefissati.
a fine
non
sono eventi, mentre
la chiusura di un
ra del frigorifero ca a una
televisore o l’apertu a, perché si verifi
sono l’apertura o
L’accensione del anno di una person
to del mouse.generazione
ca in seguito all’interazione dell’ute
ter, si verifi te oppure la
-
pressione di un tas
?
o un te. L’evento gene
a una GUI sul compu il clic su un pulsan
lta generato un
ata dall’utente. L’event
ti.
gestore di even
ne effettu
da un’azio generato un
La ge ne raz ion
rato contiene quindi
dere alla sua gestion
e, che viene deman
sii rig
offre nel colonnino
ua rda nti qu est lateralere di ev en ti.
azion
evento si deve provve ESEMPIO
gestione
determ inato dell’eve
iuta premendo
per visualizzare un causa la generazione te a
gestore laboratorio.
un tasto del mouse e di operazioni associa
Un utente che preme
e co mp eseguendo un insiem
evitam
tellici soren e, ch
te dichiarata.
L’evento accev enen sioneti viene gestita daesp
vento pressione Il gestore di quest eve
ostio ntodegli eventi viene
un evento PROVIAMO INSIEME
La generazione di
a a alla
azione
iem ne
nome, password e indirizzo
are de
evento
visua sa
email)
pe r un ne raz cau a
e,
lat o la ge to re dedi mo
l eventi. use zioni ass oc iat e Il modulo è formato da
Se da tassto
quattro caselle di testo
a del tas to de l mo
Il gestore di eventi alla gestione degli
eventi viene esplicit
nte, dall’altro la
preoc cu pa di da
ne chiusa, ridott software che si terazione dell’uten
licazione destinata erazione dell’ute Inoltre sono presenti due
La parte di un’app è causata dall’int pulsanti di comando Invia
quell’
gestore è la pa I gli eventi posso a
loro gestione è affi
essi. ne chiusa, ridott
una risposta
si fa clic su di
di dare Pagina Web (Richiesta
un prograomm
la
di evento ricevu
Un gestor e è
handler
a può generare
evento ricevuto.
su di essi.
<html>
inInbase al tipme
in base al tipo di
fi ne str fa clic
<head>
ze i pulsanti ge
</head>
cenltre
MAZIONE
dita;sino
• IL LINGUAGGIO DI PROGRAM <body> chiamata alla pagina
210 PARTE PRIMA invio di 4 parametri JSP con
ifica le tu
iJSP/Iscrizione.jsp"
method="post">
Ver
<table border="0"
cellpadding="5">
etenze
<tr>
• IL LINGUAGGIO DI PRO
SE È VE <td><input type="t
ext" name="cognome"
INDICA
210
ZIONI, </tr> size="50"></td>
PARTE PRIMA FERMA
un evento
NTI AF etti <td><b>Nome</b></td>
LLE SEG
UE to agli ogg
La generazione di azione
DE orienta tabili
CIA SCUNA ling uaggio lica zioni por ux A JAVA
<td><input type="t
ext" name="nome"
PER Java è un app Lin ne)
lizzare orma llocazio DI UN PROGRAMM </tr> size="50"></td>
Il ling uaggio me tte di rea o per la piattaf zio ne e dea E LA STRUT TURA GENERALE uare la versio-
1 V
F
Java per i sol (all oca PROGETTAR .html per individ <tr> il tipo password per la
uaggio gramm memoria hnetwork/java/index ard Edition), fai il download testo della password casella di
2 V
F Il ling
Java gen
era pro
omaticam
ente la
mento al sito http://
www.oracle.com/tec
STUDIo DI CASI REA
sezione Java SE
(Stand <td><b>Password</b></ visualizzare i carattericonsente di non
utente
inseriti
uaggio tisce aut Kit). Accedi alla
td>
3 V
4 V
F Il ling
F Il ling
uaggio
Java ges
non è un cod
ice portab
ile
pila zione di
un progra
mma Jav
a 1 Effettua un collega
ne più recente del
l’instal
Java Development
JDK (Java
lazione sul computer. 1 Dati il numer i e salvalo
LI
con il nome </tr>
<td><input type="p
assword" name="password
" size="50"></td>
com del JDK ed esegui prezzodi duedi un prodotto e
ecode o della e mma che calcola
la somma <tr>
utente
F Il byt il risultat ttament la percentuale di
5 V
ecode è guito dire ere ese
guito , il seguente progra sconto, calcola e
visualizza il prezzo <td><b>Email</b></td>
F Il byt essere ese per ess 2 Scrivi,
a usando Blocco Note, 2 Avend scontato.
6 V può eta to da Jav o la lunghe
generazione
de interpr .cla ss ent e zza di un’auto espres <td><in put type="text" name="e
F Il byt
eco
e essere ensione omaticam appropriato. il valore nel format sa con un valore mail" size="50"></td
7 V
ecode dev con est guita aut rmazione o metri, centimetri in millimetri, costrui </tr>
nei file viene ese sci un programma
>
8 V
F Il byt contenuto dita di info tralasciando gli eventu
per convertire <tr>
ecode è float al
tipo int ta una per class Somma ali millimetri residui
.
evento
9 V
F Il byt dal tipo compor mozione args[]) 3 Dato
come input il tempo <td><input type="s
versione al tipo int {
ata pro float void main(String in ore, minuti e ubmit" value="Invia">
F La con tipo float è chiam ero di tipo public static Per esempio 5 ore,
9 minuti, 24 second secondi, converti in secondi. <td><input type="r </td>
10 V
con ver sione dal al tipo int ott ien e un num i = 18564
eset" value="Annulla
F La dal tipo
fl oat si cas ting { secondi. </tr> "></td>
11 V
versione int per
un int ta con il int a = 3;
F La con di tipo ne esegui 4 Nella
trasmissione di dati
</table>
12 V
ndo un
numero float vie ente int b = 8; tramite reti di calcola
F Divide int al tipo omaticam ere il cas
ting + b; numero indicante tori, l’unità di misura
</form>
13 V dal tipo guito aut a richied int somma = a i bit
Per esempio 84.054 trasmessi, calcola a quanti byte, utilizzata è il bit.
versione
</body>
(somma);
F La con pre ese mmatore un altro System.out.println KB, MB, GB corrisp Ricevuto in input
La rubrica “Verifica
a è sem .321 bit = 10.506 un</html>
14 V il progra dato in .790 byte = 10.260 onde.
ting in Jav e essere tipo di ,5 KB = 10,02 MB
gestore
V F Il cas ni cas i dev ver tire un }
5 Suppo = 0,0098 GB.
a in alcu per con
15 nendo che una rete
F In Jav casting
strumento errori di
} televisiva abbia
16 V gramma per conver La pagina Web viene salvata
ting è uno eventuali trasmesso 5.876
gestione
omatico tire il valore nel minuti di docum nella sottodirectory:
F Il cas individua int è aut ente. formato giorni, vieneore, minuti. entari in un anno,
dichiarata.
7 Scrivi
20 V iterazio ne un programma che La pagina viene poi aperta
presenta
licitamentenumerosi
{… } ra di azio consenta di inserire nel
F for (…
) struttu di iter browser scrivendo nella
21 V } è una struttura ne mente deve restitu 5 nomi di città con casella dell’indirizzo:
dichiarata.
il mes- iJSP/Richiesta.html
ll’altro la
è una stru UnaIVA venga visualizzato
F switch la che può i una costante intera
8PERC_
da ne esplicitamente
(…) {…} scuola è compo il progra stamma,
te,
23 V
ne anoma mma che dichiar compilando
ten
} catch da N classi. Per
ll’u
ca che,Calcola
esercizi
de suddivisi per
a 5 Scrivi un progra il valore 21. Verifi ogni classe, viene
e
situazio
ti
F try {… zione gramm quanti studenti freque
ll’altro la
si verifica sa la ter cannott assign a ti. PARTE SECONDA • IL WEB E L’INFORMATICA MOBILE
stio
25 V “canno
stinata alla
L’ec
ge
cezione ges tita, cau
cazione de
… variabile loss
ditastier
errorea “possib
de
F non le
a dall’interazione
26 V cco try un elenco di libri
ione, se con il blo A mma che dichiari una il 4%gio
il messag
totale formato da autore
La parte di un’appli
F L’eccez
zato
trollata unETT
progra mma, venga visualiz in più per le spese
tipologia.
CORR
6 Scrivi , titolo e prezzo
27 V
ione è con inilèprogra di spedizione.
sat
POSTAVerifica che, compiloando . Calcola il totale
F L’eccez
nerazione degli
28 V
NI, SEL hiarazion (Str ing argbyte occupano le
MAZIO retta dic 7 dCalcola in quanti azioni
sono le prove sufficie sulle verifiche che uno studen
Se da un lato la ge
AFFER 3 La cor voi ma
UENTI lic static in (Str args[])
li di tipo nti. te ha fatto durant
di eventi.
LLE SEG è float;
una risposta
DE ili, cio a. pub • 5ing
variabi arg s[]) e l’anno scolastico
SCUNA o portab void ma e conta quante
data a un gestore
e, (String li di tipo short;
dare“Sviluppa
PER CIA Java son forme divers b. public • 7invariabi
le
d ma
di In
voi ;
e che si preoccupa
in sta tic () tipo 11 I dati
di un’indagine di mercat
i scritti su piatta d •ma4invariabili di
double
risposta
senza mo d. public
i attraverso un questio
lor
aè composto da A
eseguibili la modalità ope di Jav
tue competenze”
a. interpr . 4 L’esten output a video: e date e calcolando a i dati evidenziando
isca il seguente
la struttu ra dati più adatta la percentuale per ogni do-
ne sof
b. editing zione. a. .class mma che restitu del problema è l’array delle risposte sul totale. Sugge
per la soluzione
Un gestore è la
ing. .cp p TITOLO : endo il risultat o a corrisp (matrice), dove l’indice
d. deb ugg Iè c. ri ne restitu onde
AUTORE: D. Alighie esegua la divisio
al numero di rispost
imo AP
r La rubrica “Studio di casi
d. .java di tipo double ed
si esercitano handlele
dell’acron
a.
due valori
tastiera Prob
evento ricevuto.
nificato mma che legga da
lemi matematici
2 Il cor
retto sig sing Interface. 9 Scrivi un progra com-
in base al tipo di
sul video il nome
Proces Institute. sullo schermo.
12 Stabilis
ci se due una persona e stampi
a. Active Programming te. nome e il cognom e dirette
da tastiera il
Ins titu a x+b y+c =0 e a x+b y+c
b. Active cessing rface. mma che legga JAVA 35
=0 sono perpen
competenze enunciate
1
ation Pro 10 Scrivi un progra
1
ing Inte o è pari o dispa- dicolari.
2 2 2
c. Applic gramm 1 • IL LING
UAGGIO 13 Scrivi
un programma un messaggio se il numer
ation Pro
d. Applic pleto. CAPITOLO o e comunichi conche produc a a video la tavola
tastiera un numer isce 0. pitagorica.
11 Scrivi un progra
mma che legga da divisione per 2 restitu
il resto della to.
numero è pari se
14 Dopo
aver ottenuto da tro di un quadra
ri. Ricorda che un e ilaperime
realtà.
a 20. Crea un progra
capitolo. DI PROGRAMMAZI
eri come vittoria mma che simuli
l’estrazione di un
IL LINGUAGGIO
un’estrazione casuale
0 PARTE PRIMA •
numero pari.
21
16 Data
la velocità espres
sa in km/h, calcola
la conversione in
m/s.
QUIZ INTERATTIVI
+ MULTIMEDIALE 1 La tecnologia JDBC
di archivi integrati che possono
costituire una base di lavoro
comune
relazionale
Il database è un insieme costruiti secondo il modello
ioni diverse. I database
Un libro di testo digitale per utenti diversi con applicaz riga corrisponde
nelle quali a ciascuna
organizzano i dati in tabelle,
(database relazionali) della tabella.
campi che sono le colonne dei database.
Richiami sui databas
e un record formato da che consentono la gestione
e il linguaggio SQL ment System)) sono software
I DBMS (DataBase Manage
approfondimenti, gallerie
La classe dichiarata in questo modo
Query Language),), con l’obiettiv per contiene il solo metodo main. Questo
fornend o la base le dichiarazioni di variabili e le istruzioni metodo raggruppa
SQL direttamente,
e richiamare comandi che compongono l’applicazione
Java.
Attraverso JDBC è possibil e.
Esso viene dichiarato usando le
parole chiave public, static e void
ioni per l’accesso ai databas una API (Applica
( tion
proprietà che specificano alcune
di immagini e link.
costruire applicaz è classificato come del metodo:
di Java il software JDBC offerta dall’API
Secondo la terminologia faccia analoga a quella • public indica che il metodo è pubblico ed è visibile;
), perché fornisce un’inter
e), • static indica che il metodo è associato
Programming Interfac alla classe e non può essere richiamato
moderni.
A che cosa serve per i sistemi operativi oggetti della classe (vedi pag. 79); dai singoli
nel JDK di Oracle. Come si dichiara
il software JDBC? L’API JDBC è contenuta • void indica che non ci sono valori
di ritorno. il metodo main?
e a una pe- il nome
I driver per database , un programma che consent Dopo del metodo, tra parentesi, sono indicati
tica il termine driver indica, in generale er: il program ma driver parametro
come i parametri. Il metodo main possiede
In informa di un comput un array di stringhe (indicato con
are con l’unità centrale args[]) che corrisponde ai parametri
riferica hardware di comunic ma richiedente.
passati dalla riga di comando quando
viene eseguita l’applicazione.
li trasferisce al program
ritrova i dati richiesti e
e i datiLe parentesi graffe {…} sono usate per
pre-
che consente di trasferir individuare un blocco, che può essere
è un programma standard metodo
con oppure un insieme di istruzioni. una classe, un
Il driver per database ma vuole acceder e a un database creato All’interno di un blocco possono
essere presenti
un program altri blocchi in modo annidato. Per
senti in un database: quando database. poter meglio distinguere questi blocchi
utilizzare il driver per quel e usare una tecnica di indentazion conviene seguire
+ INTERATTIVO
un altro applicativo, deve e: anche se un programma Java potrebbe
essere scritto
prodotti DBMS usando (Oracle,una sola riga, è utile disporre
driver per i databas e creati con i più diffusi per migliorare
ordinatamente le varie istruzioni e
gli elementi sintattici Come si distingue
JDBC interagisce con i la leggibilità del codice.
un blocco?
ecc.).
MySQL, PostgreSQL, SQLite, Le righe che iniziano con // indicano
frasi di commento.
JDBC In Java ogni istruzione deve terminare
ESEMPIO
Driver Basandosi su questa struttura è possibile
interattivi direttamente
scrivere un semplice programma
sul video un messaggio. che stampa
il metodo main è formato
classe Domanda da un’unica istruzione
DATABASE class Domanda
un’immediata verifica.
e. System.out.println("Quanti
che si connettono ai databas dalle aziende che produ-
anni hai?");
semplice le applicazioni utilizzare i driver forniti
} il metodo println scrive
JDK 8 si devono }
A partire dalla versione sullo standard output i suoi
da terze parti. argomenti e torna a capo
cono i DBMS oppure
di Access usaredell’esecuzione di questo
Il risultato
I driver per i database con Microsoft Access
si può programma è la visualizzazione della
e a un database creato e indirizzoanni
Web:hai?”; poi il programma termina. scritta “Quanti
In particolare per acceder per JDBC scaricabile dal seguent
open-so urce Compilazione
UCanAccess, un driver rojects/ucanaccess/ esecuzione
https://sourceforge.net/p nell’ap-
necessa rie per utilizzare il driver
Java è un linguaggio case-sensit NOTA BENE
e i file .jar con le librerie ive. Questo significa che vi è differenza
Il file zip fornito contien unasoftware
lettera maiuscola o minuscola. Per nello scrivere
plicazione Java. essere aggiunte al progetto esempio l’identificatore System
è diverso da
NetBeans le librerie possono system. Un errore nella digitazione
comporta la segnalazione di un errore
Nell’ambiente di sviluppo di compilazione.
+ COINVOLGENTE
in questo modo: a sinistra (Projects);
del progetto nel riquadro
• tasto destro sul nome Le fasi di realizzazione di un program
• scelta Properties; ma
selezionare Libraries; Per realizzare un programma e renderlo
• nella finestra che si apre, 1. editare il codice sorgente;
eseguibile si devono compiere i seguenti
passi:
Aiuta a comprendere
2. compilare il codice sorgente; Quali sono i passi
per realizzare un
IO DI PROGRAMMAZIONE 3. eseguire il codice compilato.
• IL LINGUAGG
282 PARTE PRIMA programma?
Per editare il codice Java è possibile
14/01/19 14:55 usare il programma Blocco note di
Windows o qualsiasi
e approfondire il testo,
altro editor di testi.
Il codice sorgente deve essere salvato
2188_PRO.TECH_B_280
_303_cap6.indd 282 in un file con estensione .java. Il nome
corrisponde al nome della classe, da dare al file
cioè al nome inserito
dopo la parola chiave class. ESEMPIO
rendendo l’apprendimento
Se il programma è composto da Il programma dell’esempio precedente
più classi, conviene me- deve essere
morizzare ogni classe in un file diverso. salvato in un file chiamato Domanda.ja
va.
2188_PRO.TECH_B_002_045_cap1.i
ndd 9
14/01/19 14:54
edatlas.it
Agostino LORENZI
PRO.TECH
è un corso per la Scuola Secondaria di Secondo Grado che guida
lo studente verso l’acquisizione di un profilo professionale che
gli consenta, in contesti applicativi, di utilizzare con sicurezza
singola opera.
e competenza le procedure e le tecniche informatiche e di
contribuire in modo attivo all’innovazione e all’adeguamento
tecnologico dei processi produttivi.
PER LO STUDENTE
Informatica per Istituti Tecnici Tecnologici
A STAMPA IN DIGITALE
PRO.TECH A PRO.TECH B PRO.TECH C
PRO.TECH Informatica per Istituti Tecnici Tecnologici
Lin az ca 68-2
gra e ap 88
O.T gio e ad An 7
ISBN 978-88-268-2188-7
mm pli -2
EC Ja og dro
H va ge id
9 788826 821887
tti
18/12/18 08:20
PRO.TECH
è un corso per la Scuola Secondaria di Secondo Grado che guida
PER LO STUDENTE
Informatica per Istituti Tecnici Tecnologici
A STAMPA IN DIGITALE
PRO.TECH A PRO.TECH B PRO.TECH C
PRO.TECH Informatica per Istituti Tecnici Tecnologici
978-88-268-2187-0
978-88-268-2188-7
978-88-268-2189-4
PRO.TECH B
Linguaggio Java
Programmazione ad oggetti
Web e applicazioni Android
con DVD
€ 24,00 Prezzo al pubblico
Lingu azioncazio68-2
ammappli
ISBN 978-88-268-2188-7
TECH ad Andr 7
e 88-2
B
Java ogge oid
e ni
188-
9 788826 821887
tti
18/12/18 08:20
10 La gestione dell’input/output 18
2 Gli oggetti e le classi 59
PARTE SECONDA
IL WEB
E L’INFORMATICA MOBILE
PRO.TEC
Guida di Adobe Reader Agostino LO
RENZI
Andrea RIZ
Editor XML
H
ZI
NetBeans Informati
ca per Isti
UCanAccess tuti Tecnici
Tecnologic
Il
Tomcat i
DVD
è
Installazione
un s
uppor
Opzioni di configurazione
to f un z i o nal e e in te g r a ti v o d
Lingu
Programm aggio Java
RO
a
Web e app zione ad oggetti
CH
licazioni A
Entità Carattere ndroid
Acronimi
DVD info
Scuola-Lavoro rmatica.
indd 2
edatlas.it
Sul sito di Atlas si trovano gran parte degli approfondimenti presenti anche nel DVD.
1 Il linguaggio Java
INSERTO A Gli ambienti di sviluppo in Java
A CASA
Guarda il video tutoriale sulla creazione della classe Cerchio e sulla codifi ca
in Java ( Parte1\Attività1).
Svolgi la creazione della classe e il calcolo proposto nel video, scrivendo la
codifi ca nel linguaggio di programmazione con il tuo computer personale.
IN CLASSE
codifi cate le classi Cilindro e Cubo, defi nendo gli attributi e i metodi per il
calcolo del volume dei due solidi. Scrivete poi il programma per il calcolo e
validate l’esecuzione. Confrontate con tutta la classe le soluzioni trovate.
A CASA
IN CLASSE
CONOSCENZE
ABILITÀ
1 Quali delle seguenti affermazioni riferite alla struttura iterativa sono vere (V) e quali false (F)?
a. V F È un elenco di istruzioni che deve essere ripetuto un certo numero di volte
b. V F È un elenco di istruzioni che deve essere ripetuto fino a che non si verifica una fissata
condizione
c. V F È una serie di percorsi alternativi tra cui scegliere
d. V F È un elenco di istruzioni da eseguire una dopo l’altra
Java è nato all’interno di un progetto di ricerca molto ampio che aveva lo scopo di creare
software avanzato per vari sistemi. Inoltre è stato pensato in riferimento all’importanza che
hanno assunto le reti di computer negli ultimi anni e ha avuto una forte integrazione con
Internet, in particolare con la possibilità di scrivere piccole applicazioni per la rete (applet),
eseguibili all’interno delle pagine Web visibili in Internet. Il primo programma consistente,
scritto usando Java, è stato un browser Web.
Java è stato creato dalla Sun Microsystem che ne ha rilasciato la prima versione nel 1995.
Successivamente, nel 2010, la Sun è stata acquistata da Oracle.
compilazione interpretazione
codice compilato
codice sorgente codice di esecuzione
eseguibile da
virtual machine
La JVM è il modulo di Java che crea l’ambiente di runtime per l’esecuzione del codice
compilato e traduce ogni istruzione del bytecode nella corrispettiva istruzione della
macchina reale su cui si sta eseguendo l’applicazione in quel momento.
Ogni piattaforma ha una sua JVM che interpreta il codice compilato e lo esegue sulla specifica
macchina reale. Per questi motivi si può dire che Java è un linguaggio interpretato, anche
se la produzione del bytecode è effettuata con un’operazione di compilazione.
Il bytecode e le JVM
Bytecode
2 L’ambiente di programmazione
Per poter programmare in Java è necessario predisporre un ambiente di sviluppo. Gli stru- Quali sono gli
strumenti per la
menti fondamentali sono:
programmazione
• un editor di testi (per esempio Blocco note di Windows);
Java?
• un compilatore e un interprete Java.
Esistono numerosi strumenti e ambienti di sviluppo per il linguaggio Java. Il più famoso è
il JDK (Java Development Kit), distribuito gratuitamente da Oracle, con il quale si possono
scrivere e compilare le applicazioni Java.
JDK è un ambiente senza interfacce grafiche, nel senso che il compilatore e l’interprete sono
eseguiti da riga di comando. Nel caso di un sistema Windows ciò significa che per compilare
ed eseguire un’applicazione Java si deve aprire il Prompt dei comandi con il programma cmd
oppure con la PowerShell di Windows.
class NomeClasse
{
Struttura programma public static void main(String args[])
{
// dichiarazioni di variabili
. . .
// istruzioni
. . .
}
}
Le parentesi graffe {…} sono usate per individuare un blocco, che può essere una classe, un
metodo oppure un insieme di istruzioni. All’interno di un blocco possono essere presenti
altri blocchi in modo annidato. Per poter meglio distinguere questi blocchi conviene seguire
e usare una tecnica di indentazione: anche se un programma Java potrebbe essere scritto
Come si distingue
usando una sola riga, è utile disporre ordinatamente le varie istruzioni e gli elementi sintattici
un blocco?
per migliorare la leggibilità del codice.
class Domanda
{ l’oggetto System.out indica
public static void main(String args[]) lo standard output (video)
{
System.out.println("Quanti anni hai?");
} il metodo println scrive
sullo standard output i suoi
} argomenti e torna a capo
javac nomefile
C:\sorgenti>javac Domanda.java
Per eseguire il programma bisogna attivare l’interprete Java. L’interprete prende il codice
compilato (bytecode), lo traduce in codice macchina e lo esegue. L’interprete Java viene
richiamato usando il comando:
java nomefile
Il nome del file passato all’interprete deve essere indicato senza estensione e corrisponde
alla classe che contiene il metodo main.
ESEMPIO
Eseguendo il programma:
C:\sorgenti>java Domanda
Gli identificatori sono i nomi che il programmatore assegna alle specifiche componenti
del suo programma, per identificare le variabili, i metodi e le classi.
Che cosa sono
Un identificatore è composto da una sequenza di lettere e di numeri. Il primo carattere deve
gli identificatori?
essere una lettera. È anche possibile usare il carattere di sottolineatura _.
NOTA BENE
Bisogna fare molta attenzione alla scrittura degli identificatori perché Java distingue le
lettere maiuscole e minuscole.
Per esempio, i seguenti identificatori:
Nome
NOME
Le parole chiave sono un insieme di parole riservate di Java che non possono essere
usate come identificatori.
I programmi Java devono essere scritti seguendo le regole dalla sintassi del linguaggio
che specifica come combinare tra loro le parole chiave e gli identificatori in modo corretto.
5 Le variabili e le costanti
Le variabili sono i contenitori con i quali è possibile memorizzare i dati.
Le variabili possono cambiare valore durante l’esecuzione del programma. Gli elementi
che caratterizzano una variabile sono il tipo, il nome e la sua visibilità.
int prezzo;
Una costante, a differenza delle variabili, può assumere un solo valore durante tutta
l’esecuzione del programma.
Come si dichiara Per dichiarare una costante, bisogna far precedere alla dichiarazione la parola chiave final.
una costante? ESEMPIO
Il valore di conversione tra la yard (0.914 metri) e il metro può essere espresso con la
costante:
{
int a;
. . .
{
int a;
Qual è il campo }
di visibilità di una . . .
variabile? }
primitivi riferimento
I tipi numerici
I tipi numerici sono usati per dichiarare le variabili che possono contenere numeri.
Quanti generi di tipi
Questi tipi si possono distinguere a loro volta in tipi interi e tipi non interi in virgola mobile
numerici esistono?
(o numeri in notazione esponenziale).
I tipi interi, a seconda della loro occupazione di memoria (dimensione), identificano l’inter-
vallo di valori interi che una variabile può assumere.
ESEMPIO
byte numeroLotto;
I valori che può assumere la variabile numeroLotto sono compresi nell’intervallo -128..127.
Questo perché il tipo byte, come è indicato nella tabella, richiede un’occupazione di
memoria di 8 bit. Con 8 bit è possibile identificare 256 numeri differenti (28 = 256).
In generale l’intervallo di valori ammissibile per un tipo intero varia da -2n-1 a 2n-1-1, avendo
indicato con n il numero di bit occupati dal tipo.
In Java non esistono i tipi unsigned, cioè tipi che contengono solo valori positivi.
Esistono due tipi numerici a virgola mobile: usando float si definiscono numeri a singola
precisione (con 7 cifre decimali), usando double i numeri sono a doppia precisione (con 16
cifre decimali).
ESEMPIO
Si noti che il numero è stato scritto usando anche il valore dei decimali. Indicare un numero
in questo modo fa capire al compilatore che si tratta di un numero a doppia precisione.
Per indicare un numero a singola precisione si deve aggiungere, dopo il numero, la lettera f
(per esempio: 8.573f).
ESEMPIO
Le stringhe sono un tipo di dato che raggruppa un insieme di caratteri. Le stringhe non sono
un tipo predefinito, ma sono definite da una apposita classe (String, vedi Capitolo 2 pag. 109).
Le sequenze di escape possono essere usate all’interno di una stringa per stampare dei
caratteri speciali.
ESEMPIO
I tipi booleani
Il tipo di dato booleano è indicato con la parola chiave boolean. Le variabili dichiarate in
questo modo possono assumere due soli valori: true o false.
ESEMPIO
Questo tipo di dato non può essere convertito in un tipo di dato numerico.
int intNum;
float floatNum;
intNum = 32;
floatNum = intNum;
La variabile floatNum può ricevere un valore int che viene automaticamente convertito in float.
La conversione da float a intero, invece, non viene eseguita automaticamente.
Quando invece si tenta di effettuare assegnamenti tra variabili ed espressioni con tipi che
sono in conflitto, viene generato un errore.
ESEMPIO
Usando in un programma le variabili precedenti:
floatNum = 13.278f;
intNum = floatNum;
floatNum = 13.278f;
intNum = (int) floatNum;
In questo caso la conversione produce le perdita di tutte le cifre decimali. Nella variabile
intNum resta memorizzato solo il valore intero 13.
Il casting esplicito è previsto per evitare la perdita di dati nella conversione tra tipi.
Java non consente la conversione automatica tra tipi che comportano una perdita di dati,
ma lascia la possibilità di effettuare la conversione se viene esplicitamente richiesta.
Il casting è uno strumento utile anche quando all’interno di un’espressione si usano tipi di
dato diversi.
ESEMPIO
Se si dividono due numeri interi, il risultato della divisione è un numero intero. Quindi
eseguendo 20/6 il risultato è 3, che è un risultato non corretto.
Con questa modifica, alla variabile risultato viene assegnato il valore 3.3333333333333335.
8 Gli operatori
Gli operatori sono i caratteri speciali che identificano particolari operazioni sui dati. Per
esempio si possono usare gli operatori matematici per le operazioni tra i numeri oppure
l’operatore di concatenazione tra le stringhe.
Le operazioni aritmetiche di base possono essere eseguite con i quattro operatori fonda-
mentali: +, -, *, /.
L’operatore % è usato per calcolare il resto della divisione tra due numeri.
ESEMPIO
i++;
corrisponde all’istruzione:
i = i + 1;
totale *= 10;
PER APPROFONDIRE
LA NOTAZIONE PREFISSATA E POSTFISSATA
Gli operatori di incremento e di decremento possono essere posizionati dopo il nome della variabile (postfissi)
oppure prima del nome della variabile (prefissi).
La diversa posizione modifica il comportamento dell’operatore: specifica se l’incremento o decremento di una
variabile deve essere fatto prima o dopo il suo impiego nell’espressione di calcolo.
ESEMPIO
Nel caso seguente l’operatore è postfisso:
num = 10;
risultato = (num++) - 3;
risultato = num - 3;
num = num + 1;
num = num + 1;
risultato = num - 3;
• La seconda forma di commento è /* … */. Tutto il testo compreso tra i caratteri di inizio
/* e quelli di termine */ viene considerato un commento. Questa forma consente di
dividere il commento su più righe.
ESEMPIO
• La terza forma è /** … */, dove al posto dei puntini va inserito un commento.
Funziona come il commento su più righe. Rappresenta un commento di documentazione
Quali forme vengono
e può essere usata prima di dichiarare una classe o un metodo. Questa particolare forma
usate per indicare
di commento è importante perché viene riconosciuta dagli strumenti per la generazione
i commenti?
automatica della documentazione dei programmi.
ESEMPIO
L’uso frequente delle frasi di commento deve diventare un’abitudine del programmatore
fin dai primi semplici esercizi: in questo modo possono essere costruiti programmi che si
Operatori logici
per le operazioni autodocumentano e che possono essere compresi e letti facilmente a distanza di tempo,
sui dati bit a bit anche da persone diverse dal programmatore che ha scritto il programma.
10 La gestione dell’input/output
Le operazioni di input e output possono essere eseguite utilizzando un’interfaccia a caratteri.
Le operazioni di output
In alcuni esempi precedenti è già stata presentata la modalità per scrivere sul video con
istruzioni come la seguente:
System.out.println("messaggio da visualizzare");
System.out rappresenta un oggetto associato allo standard output. Esiste anche un oggetto
associato allo standard error, che è System.err. Entrambi fanno riferimento, in assenza di
una diversa specifica (cioè per default), allo schermo.
PROVIAMO INSIEME
1 VARIABILI DI TIPO DIVERSO
Scrivere un programma che consenta di stampare il valore di 3 variabili: un numero intero, un numero
reale e un booleano
Il programma dichiara 3 variabili di tipo diverso, alle quali vengono assegnati 3 valori. L’operazione di stampa
visualizza i valori assegnati.
/** CODIFICA
* Programma per la stampa di tre variabili.
*/
class Stampa
{
public static void main(String args[])
{
// dichiarazione delle variabili
int intero = 5;
float reale = 25.68f;
boolean trovato = false;
// operazioni di stampa
System.out.println("Numero intero = " + intero);
System.out.println("Numero reale = " + reale);
System.out.println("Trovato = " + trovato);
}
}
Nella dichiarazione del numero reale è stata aggiunta la lettera f dopo il numero: infatti il solo numero sareb-
be interpretato come un numero di tipo double, che non può essere assegnato a una variabile di tipo float.
L’aggiunta della lettera f equivale a effettuare un casting. In alternativa si può svolgere la dichiarazione anche
in questo modo:
Numero intero = 5
Numero reale = 25.68
Trovato = false
Le operazioni di input
Per le operazioni di input esiste un oggetto analogo System.in che gestisce il flusso di dati
inseriti da tastiera. L’oggetto System.in, in pratica, viene mascherato con altri oggetti più
potenti che forniscono maggiori funzionalità.
Con queste dichiarazioni viene definito un oggetto tastiera, di classe BufferedReader, usando
l’operatore new che crea un nuovo oggetto (vedi pag. 62).
La classe BufferedReader mette a disposizione il metodo readLine che consente di leggere,
in questo caso da standard input, una riga per volta.
Una linea viene considerata terminata quando viene premuto il tasto di Invio.
Questo metodo restituisce solo stringhe, quindi se si vogliono acquisire valori numerici si
deve effettuare la conversione tra stringhe e numeri.
Per effettuare la lettura di una stringa occorre dichiarare una variabile stringa e poi usare
il metodo readLine con l’oggetto tastiera che è stato definito in precedenza:
String nome;
nome = tastiera.readLine();
L’operazione deve essere completata considerando le eccezioni che possono essere generate
dal metodo readLine. L’eccezione segnala una situazione anomala: quando si verifica un’ec-
cezione, bisogna prevedere un blocco di istruzioni per gestire questa situazione. Il costrutto
try ... catch ... (vedi pag. 32) raggruppa le istruzioni da controllare e dichiara il nome dell’ec-
cezione che si vuole gestire; in particolare la classe Exception indica un’eccezione generica.
Quindi la lettura di una stringa si effettua correttamente nel seguente modo:
String nome;
try
{
Come si esegue nome = tastiera.readLine();
il segmento di codice stabilisce che,
la lettura di una } al verificarsi dell’eccezione, non deve
stringa? catch(Exception e) {} essere effettuata alcuna operazione
String leggiNumero;
int num;
try
{
leggiNumero = tastiera.readLine();
num = Integer.valueOf(leggiNumero).intValue();
}
catch(Exception e)
{
System.out.println("\nNumero non corretto!");
return;
}
L’istruzione aggiuntiva consente di convertire una stringa in un numero intero, attraverso due
metodi della classe Integer: valueOf converte il parametro stringa in un oggetto di classe
Integer, mentre intValue restituisce un valore intero.
In questo caso, l’eccezione che può essere generata si verifica quando i caratteri inseriti non
corrispondono a cifre numeriche.
ESEMPIO
Se si inseriscono i valori 34f5 oppure 45.45, essi non vengono riconosciuti come interi e
quindi provocano un’eccezione che causa la terminazione del programma.
numDouble = Double.valueOf(leggiNumero).doubleValue();
PROVIAMO INSIEME
1 LA MEDIA DELLE ETÀ
Leggere da tastiera l’età di tre persone e calcolare l’età media
Il programma acquisisce da tastiera le età con tre operazioni di input. Viene poi calcolata la media sommando
i 3 numeri e dividendo per 3. Alla fine si visualizza il risultato del calcolo.
Algoritmo in pseudocodifica
inizio
immetti eta1
immetti eta2
immetti eta3
calcola media = (eta1 + eta2 + eta3) /3
scrivi media
fine
Programma Java (Media.java)
System.out.println("Persona 1 ***************");
System.out.print("eta': ");
try
{
String numeroLetto = tastiera.readLine();
eta1 = Integer.valueOf(numeroLetto).intValue();
} quando si verifica
un’eccezione durante la
catch(Exception e) lettura, viene mostrato
{ un messaggio di errore
e l’istruzione return
System.out.println("\nNumero non corretto!"); interrompe l’esecuzione
return; del metodo main,
causando la fine del
} programma
System.out.println("Persona 2 ***************");
System.out.print("eta': ");
try
{
String numeroLetto = tastiera.readLine();
PROVIAMO INSIEME
Algoritmo in pseudocodifica
inizio
immetti orario
calcola ore = orario / 3600
calcola minuti = (orario % 3600) / 60
calcola secondi = orario % 60
scrivi orario H:M:S
fine
// dati di output
int ore, minuti, secondi;
// calcolo sequenziale
ore = orario / 3600; operatore / per la divisione
intera;
minuti = (orario % 3600) / 60; operatore % per il resto
secondi = orario % 60; della divisione
// stampa orario
System.out.println("Orario: " + ore + ":"
+ minuti + ":"
+ secondi);
}
}
if (condizione)
{
// istruzioni eseguite se la condizione è vera
}
else
{ Come si rappresenta
// istruzioni eseguite se la condizione è falsa la struttura di
} selezione?
IL LINGUAGGIO JAVA
ISTRUZIONI dichiarative
tipi di dato
System.out
ingresso operatori
System.in esecutive
uscita aritmetici
System.err
dichiarazioni
di variabili
assegnazione operatore di
conversione dei valori
input output concatenazione
di tipo alle variabili dichiarazioni
di costanti
classe metodi print casting notazione
BufferedReader e printIn prefissata
metodo e postfissata commenti
readLine
operatori di confronto
confronti
e condizioni
operatori booleani
STRUTTURE
DI CONTROLLO
ECCEZIONI STRUTTURE
DI DATI
PEr CIASCUNA DELLE SEGUENTI AFFErMAZIONI, INDICA SE È VErA (V) O FALSA (F)
1 V F Il linguaggio Java è un linguaggio orientato agli oggetti
2 V F Il linguaggio Java permette di realizzare applicazioni portabili
3 V F Il linguaggio Java genera programmi solo per la piattaforma Linux
4 V F Il linguaggio Java gestisce automaticamente la memoria (allocazione e deallocazione)
5 V F Il bytecode non è un codice portabile
6 V F Il bytecode è il risultato della compilazione di un programma Java
7 V F Il bytecode può essere eseguito direttamente
8 V F Il bytecode deve essere interpretato per essere eseguito
9 V F Il bytecode è contenuto nei file con estensione .class
10 V F La conversione dal tipo float al tipo int viene eseguita automaticamente da Java
11 V F La conversione dal tipo float al tipo int comporta una perdita di informazione
12 V F La conversione dal tipo float al tipo int è chiamata promozione
13 V F Dividendo un numero di tipo int per un int si ottiene un numero di tipo float
14 V F La conversione dal tipo int al tipo float viene eseguita con il casting
15 V F Il casting in Java è sempre eseguito automaticamente
16 V F In Java in alcuni casi deve essere il programmatore a richiedere il casting
17 V F Il casting è uno strumento per convertire un tipo di dato in un altro
18 V F La compilazione individua eventuali errori di casting
19 V F Il casting dal tipo double al tipo int è automatico
20 V F if (…) {...} else {…} è una struttura di selezione
21 V F for (…) {…} è una struttura di selezione
22 V F while (…) {…} è una struttura di iterazione
23 V F switch (…) {case: …break;} è una struttura di iterazione
24 V F try {…} catch (…) {…} è una struttura di iterazione
25 V F L’eccezione è una situazione anomala che può verificarsi durante l’esecuzione
26 V F L’eccezione si verifica in fase di compilazione
27 V F L’eccezione, se non gestita, causa la terminazione del programma
28 V F L’eccezione è controllata con il blocco try … catch …
6 La forma della dichiarazione di una costante di 9 L’errore contenuto nella dichiarazione di un array:
tipo carattere è int lista[50]; è che
a. final char RISPOSTA_POSITIVA = Y; a. la dichiarazione doveva essere:
b. char final RISPOSTA_POSITIVA = 'Y'; int lista[50] = new int[];
c. final int RISPOSTA_POSITIVA = 'Y'; b. l’array non è stato inizializzato.
d. final char RISPOSTA_POSITIVA = 'Y'; c. non si può indicare la dimensione dell’array nella
dichiarazione.
7 Non fanno parte dei tipi di dato primitivi i tipi di d. non si può dichiarare un array di tipo int.
dato
a. numerici. 10 La dichiarazione corretta per assegnare all’ultimo
b. carattere. elemento di una matrice 4x4 il valore 99 è
c. array. a. matrice[matrice.length] = 99;
d. booleani. b. matrice[0][0] = 99;
c. matrice[3][3] = 99;
d. matrice[4][4] = 99;
2 Indica se i nomi seguenti sono identificatori validi in Java (S) oppure no (N).
a. eta media …
b. 1peso …
c. COLORE_SFONDO …
d. Velocita-max …
e. NumeroAbbonati …
f. auto1 …
4 Supponendo che la variabile a di tipo intero assuma ogni volta il valore iniziale 5, indica quale valore assume
alla fine di ogni gruppo di istruzioni.
a. a += 4; b. b = a * 2; c. b = 18 % a;
b = a – 8; a -= b; a *= 2;
a = 10 / a; a = 3; a = a + b;
……………… ……………… ………………
6 Indica come vengono tradotti in Java gli operatori logici AND, Or e NOT.
AND
OR
NOT
7 Supponendo che la variabile x di tipo intero assuma ogni volta il valore iniziale 3, indica quale valore assume
alla fine dei seguenti frammenti di codice.
a. b. c.
if (x > 3) if (x == 3) if (x >= 3)
{ { {
x *= 2; x = 5; x++;
} } if (x > 4)
else if (x <= 5) {
{ { x = 10;
x += 2; x -= 2; }
} } }
8 Indica quale valore assume la variabile y alla fine del segmento di programma.
int y=0;
int a=2;
while (a <= 1024)
{
y++;
a *= 2;
}
............................................................................
9 Indica quale valore assume la variabile y alla fine del segmento di programma.
int y=1;
boolean fine;
do
{
y++;
fine = (y > 10);
}
while (!fine);
............................................................................
y=30;
for (int i=0; i <= y; i=i+2)
{
y -= 5;
}
............................................................................
class Somma
{
public static void main(String args[])
{
int a = 3;
int b = 8;
int somma = a + b;
System.out.println(somma);
}
}
5 Scrivi un programma che dichiari una costante intera PERC_IVA il cui valore è 22. Successivamente modifica il
valore di PERC_IVA assegnando il valore 21. Verifica che, compilando il programma, venga visualizzato il mes-
saggio di errore “cannot assign a value to final variable PERC_IVA”.
6 Scrivi un programma che dichiari una variabile di nome lunghezza e di tipo byte. Assegna alla variabile il valore 140.
Verifica che, compilando il programma, venga visualizzato il messaggio di errore “possible loss of precision”.
7 Calcola quanti byte occupano le seguenti variabili:
• 5 variabili di tipo float;
• 7 variabili di tipo short;
• 4 variabili di tipo double;
• 4 variabili di tipo long;
• 10 variabili di tipo int;
• 10 variabili di tipo char.
8 Scrivi un programma che restituisca il seguente output a video:
TITOLO: “La divina commedia”
AUTORE: D. Alighieri
9 Scrivi un programma che legga da tastiera due valori di tipo double ed esegua la divisione restituendo il risultato
sullo schermo.
10 Scrivi un programma che legga da tastiera il nome e il cognome di una persona e stampi sul video il nome com-
pleto.
11 Scrivi un programma che legga da tastiera un numero e comunichi con un messaggio se il numero è pari o dispa-
ri. Ricorda che un numero è pari se il resto della divisione per 2 restituisce 0.
12 Scrivi un programma che legga da tastiera la misura del lato e calcoli l’area e il perimetro di un quadrato.
13 Dati due numeri interi compresi tra 0 e 49, generati casualmente, visualizza il numero più grande.
14 Genera cinque numeri casuali, reali e compresi tra 0 e 1 e calcolane la media.
15 Scrivi un programma che, ricevendo da linea di comando la base e l’altezza di un rettangolo, restituisca il valore
dell’area.
16 Avendo la variabile intera h e usando gli operatori, scrivi le condizioni booleane che siano vere quando:
• h si trova nell’intervallo [2, 7] oppure [-4, 3];
• h è uguale a 0 oppure è maggiore di 100;
• h non è negativo oppure è diverso da 100.
17 Un anno è bisestile se è divisibile per 4 e non è divisibile per 100. Sono però bisestili anche gli anni divisibili per
400. Scrivi un programma che, inserendo un anno da tastiera, risponda se è un anno bisestile o no.
18 Scrivi un programma che stampi i primi 100 numeri pari usando la struttura di ripetizione while.
19 Scrivi un programma che stampi i primi 100 numeri pari usando la struttura di ripetizione do while.
20 Scrivi un programma che stampi i primi 100 numeri pari usando la struttura di ripetizione for.
21 Scrivi un programma che continui a richiedere numeri finché viene inserito il valore zero. Alla fine indica quanti
sono stati i numeri positivi e i numeri negativi inseriti.
22 Riscrivi la seguente struttura while usando la struttura iterativa for.
int c;
c = 8;
while (c > 0)
{
c -= 2;
}
int i;
for (i=1; i <=10; i = i - 1)
{
System.out.println(i);
}
int i = 5;
while (i < 300)
{
if (i < 100)
{
i++;
break;
}
i--;
continue;
}
scrivi due frammenti di codice per calcolare il totale di ogni riga e il totale di ogni colonna della matrice.
28 Scrivi un programma per definire un array di 5 numeri e per valorizzarli con 5 numeri casuali tra 1 e 90. Visualizza
successivamente i numeri scelti.
28 Dopo aver acquisito da tastiera un array di 10 numeri a singola precisione, somma le sue componenti e visualizza
il risultato.
30 Dopo aver acquisito da tastiera due matrici 2x2 di numeri interi, calcola la somma delle due matrici sommando
le singole componenti.
31 Definisci un array di dimensione 10 e successivamente prova ad accedere all’elemento di posizione 20 gestendo
l’eccezione che viene generata.
32 Dopo aver caricato in memoria un array di numeri interi con 10 componenti, calcola il prodotto delle componen-
ti.
33 Dopo aver caricato in memoria un array di numeri interi con 10 componenti, conta le componenti che hanno
valore superiore a 18.
34 Dopo aver caricato in memoria un array di numeri interi con 10 componenti, raddoppia il valore delle prime 5
componenti.
35 Esegui una ricerca in un array: dopo aver generato un array di 30 numeri casuali tra 0 e 99, determina se è pre-
sente il numero 50.
2 Avendo la lunghezza di un’auto espressa con un valore in millimetri, costruisci un programma per convertire
il valore nel formato metri, centimetri tralasciando gli eventuali millimetri residui.
4 Nella trasmissione di dati tramite reti di calcolatori, l’unità di misura utilizzata è il bit. Ricevuto in input un
numero indicante i bit trasmessi, calcola a quanti byte, KB, MB, GB corrisponde.
Per esempio 84.054.321 bit = 10.506.790 byte = 10.260,5 KB = 10,02 MB = 0,0098 GB.
5 Supponendo che una rete televisiva abbia trasmesso 5.876 minuti di documentari in un anno, scrivi un pro-
gramma per convertire il valore nel formato giorni, ore, minuti.
7 Scrivi un programma che consenta di inserire 5 nomi di città con il rispettivo numero di abitanti. Successiva-
mente deve restituire il nome della città maggiormente popolata.
8 Una scuola è composta da N classi. Per ogni classe, viene inserito da tastiera il numero di studenti.
Calcola quanti studenti frequentano la scuola e in media quanti studenti ci sono per classe.
9 Si introduce da tastiera un elenco di libri formato da autore, titolo e prezzo. Calcola il totale e applica sul
totale il 4% in più per le spese di spedizione.
Esamina
10 le informazioni sulle verifiche che uno studente ha fatto durante l’anno scolastico e conta quante
sono le prove sufficienti.
I dati
11 di un’indagine di mercato sono stati raccolti attraverso un questionario di domande a risposta chiusa.
Il questionario era composto da A domande e ciascuna domanda prevedeva al massimo B risposte. I que-
stionari compilati al termine dell’indagine sono stati in totale N. Elabora i dati evidenziando per ogni do-
manda il conteggio delle risposte date e calcolando la percentuale delle risposte sul totale. Suggerimento:
la struttura dati più adatta per la soluzione del problema è l’array a due dimensioni (matrice), dove l’indice
di riga corrisponde al numero di domanda e l’indice di colonna corrisponde al numero di risposta.
Problemi matematici
Stabilisci
12 se due rette a1x+b1y+c1=0 e a2x+b2y+c2=0 sono perpendicolari.
Scrivi
13 un programma che produca a video la tavola pitagorica.
Dopo
14 aver ottenuto da tastiera un numero decimale, calcola la rappresentazione dello stesso numero nel
sistema binario.
Un’urna
15 contiene 20 palline numerate da 1 a 20. Crea un programma che simuli un’estrazione casuale
dall’urna e che consideri come vittoria l’estrazione di un numero pari.
Data
16 la velocità espressa in km/h, calcola la conversione in m/s.
Implementa
17 l’algoritmo di Euclide per il calcolo del massimo comun divisore (MCD): dati due numeri posi-
tivi, si deve calcolare il più grande numero positivo che divide entrambi i numeri.
L’algoritmo procede in questo modo:
immetti a,b
se a<b
allora scambia(a,b)
resto = a % b
mentre resto diverso da 0
a=b
b = resto
resto = a % b
mcd = b
scrivi mcd
Scrivi
18 un programma che calcoli il prodotto tra due matrici A e B di dimensioni rispettivamente 3x2 e 2x3.
GLOSSARY QUIZ
Array 1 Which structure is used to manage an excep-
A collection of data elements, all of the same type, tion?
in which the position of an element is uniquely a. if … else
designated by an integer. b. try … catch
c. while
Casting
d. switch
Explicit conversion from one data type to another.
Comment 2 Which of the following statements is correct
Explanatory text that is ignored by the compiler. In with respect to a while structure?
Java programming language comments are delimited a. The instructions are executed at least once.
using // or /*...*/. b. The instructions are executed at least twice.
c. The instructions may not be executed at all.
Exception
d. It cannot enter in an infinite loop.
An event, generally an error, during the execution of a
program that prevents the program from continuing
3 What is the output of the following instruction?
normally.
Scope System.out.println(args[i]);
Where an identifier can be used.
Try … catch a. All the elements in array args.
A block of statements to be executed when a Java b. The sum of all elements in array args.
exception, or run time error, occurs. c. The dimension of array i.
Variable d. The value of the i-th parameter passed to the
An item of data defined by a name, a type and a scope. program.
1 2 3 4 5
Dichiaro array a una e due dimensioni per organizzare dati dello stesso
tipo.
•
•
•
PER LO STUDENTE
A STAMPA IN DIGITALE
978-88-268-2187-0
978-88-268-2188-7
978-88-268-2189-4
PRO.TECH B
Linguaggio Java
Programmazione ad oggetti
Web e applicazioni Android
con DVD