Fondamenti di
programmazione in Java
Lezione III
Laboratorio di Informatica Generale
Scopo della lezione
• Descrivere gli strumenti che utilizzeremo
nel resto del corso per sviluppare
programmi in java
– UltraEdit
– Java SDK
• Imparare a scrivere un programma, a
compilarlo e ad eseguirlo
1.2
Laboratorio di Informatica Generale
Editor
• Un editor è un’applicazione che fornisce
strumenti per redigere, modificare e
stampare dei testi
• Alcuni editor hanno funzionalità avanzate,
legate a specifici tipi di documenti da
produrre
• Sono esempi di editor Blocco note e
Word
1.3
Laboratorio di Informatica Generale
UltraEdit
• UltraEdit è l’editor che noi utilizzeremo
per scrivere i sorgenti dei programmi che
studieremo nel corso
• Si può scaricare dal sito
http://www.ultraedit.com
• E’ un programma shareware: è possibile
utilizzarlo per un periodo limitato di tempo
1.4
Laboratorio di Informatica Generale
UltraEdit
1.5
Laboratorio di Informatica Generale
UltraEdit
Barra dei menù
Barra delle icone
Tab dei file aperti
Vista ad albero
Area di lavoro
1.6
Laboratorio di Informatica Generale
UltraEdit
• E’ comodo per un programmatore perché
– Permette di lavorare con più file
contemporaneamente, passando da uno
all’altro agendo semplicemente sul tab dei
file aperti
– Riconosce la sintassi di un sorgente scritto in
Java e ne colora il testo corrispondente in
modo specifico
• Sono funzionalità implementate da molti
editor
1.7
Laboratorio di Informatica Generale
Java
• 1991-1994 Sun lancia il progetto Stealth
(poi rinominato Oak e poi ancora Java)
• 1995 Sun presenta ufficialmente Java e
HotJava; Netscape acquisisce la licenza
di Java per il suo browser; Sun e
Netscape annunciano Javascript;
Microsoft annuncia di voler incorporare
Java nel suo browser
1.8
Laboratorio di Informatica Generale
Versioni di Java
• Java 2 Standard Edition (J2SE)
• Java 2 Micro Edition (J2ME)
• Java 2 Enterprise Edition (J2EE)
1.9
Laboratorio di Informatica Generale
Interpreti
inizio
editor
sorgente
debug
interprete
errori?
no
fine
si
1.10
Laboratorio di Informatica Generale
Interpreti
Class HelloWorld {
public static void main {
System.out.println(“Hello”);
}
}
esegui
istruzione
sorgente
altre
istruzioni?
codifica
istruzione
no
fine
no
si
si
prossima
istruzione
si
controllo
sintattico
interprete
errori?
no
errori?
controllo
semantico
1.11
Laboratorio di Informatica Generale
Compilatori
inizio
editor
1
sorgente
oggetto
2
4
3
eseguibile
debug
linker
compilatore
errori?
no
1
si
errori?
no
2
3
loader
si
4
errori?
no
si
fine
1.12
Laboratorio di Informatica Generale
Compilatori
Class HelloWorld {
public static void main {
System.out.println(“Hello”);
}
}
sorgente
controllo
sintattico
no
errori?
si
controllo
semantico
compilatore
no
errori?
si
fine
011001010110101001
101010110010101101
010100101010110101
010101011001010110
eseguibile
1.13
Laboratorio di Informatica Generale
Virtual machine
inizio
editor
1
sorgente
bytecode
compilatore
VM
errori?
no
1
si
errori?
no
2
debug
si
2
fine
1.14
Laboratorio di Informatica Generale
Virtual machine
controllo
sintattico
compilatore
sorgente
Class HelloWorld {
public static void main {
System.out.println(“Hello”);
}
}
no
errori?
controllo
semantico
si
errori?
si
fine
011001010110101001
101010110010101101
010100101010110101
010101011001010110
bytecode
altre
istruzioni?
esegui
istruzione
no
si
prossima
istruzione
codifica
istruzione
Java VM
1.15
Laboratorio di Informatica Generale
Java SDK
• Il Java Software Development Kit si può
scaricare dal sito ufficiale della Sun
http://java.sun.com, seguendo il
link J2SE 1.4 SDK nell’area Top
Downloads
– selezionando la voce Download in
corrispondenza del nostro sistema operativo
(riga) e della colonna SDK
1.16
Laboratorio di Informatica Generale
SDK?
• SDK è una sigla che significa Software
Development Kit
• Indica un insieme di strumenti che
permettono di scrivere, compilare ed
eseguire un programma in Java
• Chiunque vuole poter programmare in
Java deve installare questi strumenti (o
altri analoghi)
1.17
Laboratorio di Informatica Generale
JRE?
• JRE è una sigla che significa Java
Runtime Environment
• Indica un insieme di strumenti che
permettono di eseguire un programma
scritto in Java
• Chiunque vuole poter eseguire un
programma scritto in Java deve installare
questi strumenti (o altri analoghi)
1.18
Laboratorio di Informatica Generale
Istruzioni per il download
• Dopo aver selezionato il link
corrispondente al Java SDK del nostro
sistema operativo è necessario
– (leggere ed) accettare la licenza
– scaricare sull’elaboratore un file piuttosto
grosso (37Mb circa per Windows)
– eseguirlo e seguire le istruzioni
1.19
Laboratorio di Informatica Generale
Prima di cominciare…
• Nello scrivere i nostri programmi ci
atterremo alle seguenti regole
– Tutti i file relativi a un programma
risiederanno in una directory con lo stesso
nome di quest’ultimo (all’interno della
directory c:\java)
– Il nome di un programma sarà scritto in
caratteri minuscoli, a eccezione delle iniziali
delle parole
1.20
Laboratorio di Informatica Generale
HelloWorld.java
/* Questo è il nostro primo programma
scritto in java */
class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”);
}
}
// Analizziamolo!
1.21
Laboratorio di Informatica Generale
Compiliamolo!
C:\java>cd HelloWorld
C:\java\HelloWorld>dir
Volume in drive C is Server
Volume Serial Number is E0E9-242C
Directory of C:\java\HelloWorld
14/10/2002
14/10/2002
14/10/2002
23.59
<DIR>
23.59
<DIR>
22.23
112
1 File(s)
112
2 Dir(s) 10.619.133.952
.
..
HelloWorld.java
bytes
bytes free
C:\java\HelloWorld>javac HelloWorld.java
1.22
Laboratorio di Informatica Generale
Cosa è successo?
C:\java\HelloWorld>dir
Volume in drive C is Server
Volume Serial Number is E0E9-242C
Directory of C:\java\HelloWorld
14/10/2002
14/10/2002
14/10/2002
14/10/2002
23.59
<DIR>
23.59
<DIR>
23.59
427
22.23
112
2 File(s)
539
2 Dir(s) 10.619.133.952
.
..
HelloWorld.class
HelloWorld.java
bytes
bytes free
C:\java\HelloWorld>
1.23
Laboratorio di Informatica Generale
Eseguiamolo!
C:\java\HelloWorld>java HelloWorld
Hello, world!
C:\java\HelloWorld >
• L’unica (apparente) azione eseguita dal
programma è quella di stampare il
messaggio “Hello, world!” a video,
andando a capo
1.24
Laboratorio di Informatica Generale
Analizziamo il programma
/* Questo è il nostro primo programma
scritto in java */
class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”);
}
}
// Analizziamolo!
• Il testo racchiuso tra /* e */ rappresenta
un commento e viene ignorato
1.25
Laboratorio di Informatica Generale
Analizziamo il programma
/* Questo è il nostro primo programma
scritto in java */
class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”);
}
}
// Analizziamolo!
• Ciò che segue // rappresenta un
commento e viene ignorato (fino al
termine della riga)
1.26
Laboratorio di Informatica Generale
Commenti
• La presenza di commenti nel codice non
ne modifica il comportamento …
• … ma ne aumenta notevolmente la
leggibilità
• E’ quindi utile inserire commenti per
chiarire i punti fondamentali di un
programma
1.27
Laboratorio di Informatica Generale
Commenti
• Potremmo modificare il programma in
/* Questo è il nostro primo programma
scritto in java */
class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”); // Output del programma
}
}
// Analizziamolo!
• e l’esecuzione non varierebbe
1.28
Laboratorio di Informatica Generale
Analizziamo il programma
• Commenti a parte, il programma è
delimitato dalla parola chiave class
seguita dal nome del programma e da
una coppia di parentesi graffe
class HelloWorld {
public static void main(String args[]) {
System.out.println(“Hello, world!”);
}
}
1.29
Laboratorio di Informatica Generale
Analizziamo il programma
• In generale le parentesi graffe delimitano
blocchi di codice
• Diversi blocchi di codice seguono una
diversa indentazione
class HelloWorld
{
public static void main(String args[])
{
System.out.println(“Hello, world!”);
}
}
1.30
Laboratorio di Informatica Generale
Il blocco main()
public static void
main(String args[]) {
System.out.println(“Hello, world!”);
}
• Rappresenta il blocco di istruzioni che
viene eseguito quando si lancia il
programma
• Per ora non ci interesseremo delle parole
chiave che precedono e seguono main
1.31
Laboratorio di Informatica Generale
Output
System.out.println(“Hello, world!”);
• Quando viene eseguita l’istruzione
System.out.println, il messaggio
specificato entro i doppi apici viene
stampato sullo schermo, seguito da un
carattere di “a capo”
• Il comando System.out.print ha lo
stesso comportamento, ma non va a
capo
1.32
Laboratorio di Informatica Generale
Librerie
• Java mette a disposizione una serie di
insiemi di comandi e di oggetti deputati a
risolvere particolari compiti
• Oggetti con funzionalità simili o collegate
sono raggruppati in un insieme che viene
chiamato libreria
• Alcune librerie possono far parte di altre
librerie
1.33
Laboratorio di Informatica Generale
Librerie
• Per poter utilizzare una libreria è
generalmente necessario includerla nel
programma
– import java.util.* include nel
programma tutti i comandi della libreria
– import java.util.Date include nel
programma solamente l’oggetto Date
• Alcune librerie, come java.lang, non
necessitano di essere incluse
1.34
Laboratorio di Informatica Generale
HelloDate.java
/* HelloDate stampa la data corrente */
import java.util.*;
public class HelloDate {
public static void main(String args[]) {
System.out.print("Sono le ");
System.out.println(new Date());
}
}
1.35
Laboratorio di Informatica Generale
Eseguiamolo!
C:\java\HelloDate>javac HelloDate.java
C:\java\HelloDate>java HelloDate
Sono le Wed Oct 16 14:47:11 CEST 2002
C:\java\HelloDate>
1.36
Laboratorio di Informatica Generale
AreaRettangolo.java
/* AreaRettangolo calcola l’area di
un rettangolo */
public class AreaRettangolo {
public static void main(String args[]) {
int base=3;
int altezza=4;
System.out.print(“L’area è “);
System.out.println(base*altezza);
}
}
1.37
Laboratorio di Informatica Generale
Dati e variabili
• In questo caso il programma deve fare
riferimento a dei dati numerici che deve
pertanto memorizzare
• Per potersi riferire a questi dati il
programma alloca due aree di memoria a
cui assegna nomi univoci (base,
altezza)
• Chiamiamo tale aree variabili, e
chiamiamo dati i valori in esso contenuti
1.38
Laboratorio di Informatica Generale
Interattività
• Un programma come AreaRettangolo
sarebbe più utile se, invece di assegnare
valori fissati a base e altezza,
permettesse all’utente di specificarli a
ogni esecuzione
• Per fare questo è necessario introdurre
dei comandi che permettano di ricevere
l’input dalla tastiera
1.39
Laboratorio di Informatica Generale
AreaRettangoloInterattivo.java
/* AreaRettangoloInterattivo calcola l’area di
un rettangolo */
public class AreaRettangoloInterattivo {
public static void main(String args[]) {
int base=new
SavitchIn().readLineInt();
int altezza=new SavitchIn().readLineInt();
System.out.print("L’area è ");
System.out.println(base*altezza);
}
}
1.40
Laboratorio di Informatica Generale
SavitchIn.readLineInt()?
• Possiamo pensare a
SavitchIn.readLineInt() come a
un comando che
– attende che l’utente immetta un valore
numerico
– fornisce al programma tale valore
• E’ la controparte di
System.out.println()
1.41
Laboratorio di Informatica Generale
SavitchIn.readLineInt()
• Il comando readLineInt() fa parte
dell’oggetto SavitchIn, che non è un
oggetto distribuito con Java
• Per poterlo eseguire all’interno dei nostri
programmi dobbiamo inserire il file
SavitchIn.class nella stessa
directory dove risiedono i nostri sorgenti
• Scaricate SavitchIn.class dal sito
della didattica webcentrica
1.42
Laboratorio di Informatica Generale
Eseguiamolo
C:\java\AreaRettangoloInterattivo>javac
AreaRettangoloInterattivo.java
C:\java\AreaRettangoloInterattivo>java
AreaRettangoloInterattivo
3
7
L’area è 21
1.43
Laboratorio di Informatica Generale
Abbellimenti
• In questo caso l’esecuzione del
programma parte senza dare alcuna
indicazione del fatto che il codice attende
un’azione dell’utente (l’immissione di
base e altezza)
• E’ opportuno segnalare questo fatto
all’utente tramite degli output opportuni
1.44
Laboratorio di Informatica Generale
AreaRettangoloInterattivo.java
public class AreaRettangoloInterattivo {
public static void main(String args[]) {
System.out.print("Inserisci la base ");
int base=new SavitchIn().readLineInt();
System.out.println();
System.out.print("Inserisci l'altezza ");
int altezza=new SavitchIn().readLineInt();
System.out.println();
System.out.print("L’area è ");
System.out.println(base*altezza);
}
}
1.45
Laboratorio di Informatica Generale
Esercizi
• Implementate HelloWorld
• Riscrivete HelloWorld modificando
– il messaggio che viene stampato
– aggiungendo altri messaggi
– sostituendo println con print e vedendo
come viene modificata l’esecuzione del
programma (attenti agli spazi!)
• Implementate HelloDate
• Implementate AreaRettangolo
1.46
Laboratorio di Informatica Generale
Esercizi
• Implementate le due versioni di
AreaRettangoloInterattivo
• Cosa succede se durante l’esecuzione di
AreaRettangoloInterattivo l’utente
immette dei valori che non sono numerici?
E se immette dei valori non interi?
• Scrivete un programma che accetta in
input l’area e la base di un rettangolo e
ne calcola l’altezza
1.47
Laboratorio di Informatica Generale
Esercizi
• Che succede se nel programma
precedente immettiamo 0 come valore
per la base?
• Provate a inserire deliberatamente degli
errori in alcuni dei programmi che
abbiamo scritto, e verificate come cambia
il comportamento del compilatore
1.48