appunti java
pag.15
4. Un ambiente di sviluppo per Java
Esistono in commercio molti ambienti di sviluppo utilizzati dai programmatori
Java, in particolare si tratta di editor complessi che mettono a disposizione tools
grafici che consentono un'elevata produttività, che si realizza attraverso interfacce
per il disegno di componenti e di finestre grafiche.
Tali strumenti come ad esempio Jbuilder della Borland® o Microsoft® Visual J++,
prendono il nome di RAD “Rapid Application Development“ o VDE “Visual
Development Environment”. In questi ambienti quasi tutto il lavoro avviene
senza dover scrivere codice esplicito ma operando con strumenti di disegno che
generano “automaticamente” il codice Java corrispondente.
Questi sistemi sono utili per sviluppare velocemente e a basso costo i programmi,
ma presuppongono la perfetta conoscenza della logica e dei meccanismi del
linguaggio. Non sono adatti per apprendere le basi della programmazione ad
oggetti in Java perché ne presuppongono la conoscenza.
Nel seguito di questi appunti si farà uso di un editor grafico semplice, e poco
costoso per svelare pienamente gli aspetti logici del linguaggio. L'editor dei
programmi Java si chiama RealJava® e si può reperire gratuitamente su Internet
al sito www.realj.com. Per programmare deve essere già installato anche il jdk
(Java Development Kit) che contiene il compilatore Java e la sua documentazione.
Il compilatore denominato sinteticamente jdk.1.2 è disponibile gratuitamente al
sito www.sun.com della SunMicrosystem® che è la produttrice di java.
Nel seguito del capitolo, invece di descrivere le opzioni e la struttura di RealJava,
si mostreranno alcuni esempi risolti, passo dopo passo, per permettere di
acquisire confidenza con l'ambiente di sviluppo.
appunti java
pag.16
4.1 Esempi risolti
esempio 1 : Si codifichi il seguente problema semplice “costruire un
programma che generi un array di N=10 interi e assegni ad ogni
componente i valori da 1..10 e lo stampi”. Richieste: realizzare un unico
main program;
Codifica
Apro l’editor e scelgo <Project: New Project..> e Empty Project:
Compare la seguente finestra, si tratta ora di scegliere <File: New> e dalla
finestra che compare si seleziona <Java Source File>:
appunti java
finalmente si ottiene la finestra vuota per editare il file Java.
pag.17
Si edita il seguente programma:
Al termine lo si salva col nome prova_01.java, quindi si entra in
<Project:AddJavaSouceFile> e si clicca selezionando il file appena salvato
prova_01.java:
appunti java
pag.18
E’ necessario informare il compilatore che il file prova_01.java è il file che
contiene il main program. Col tasto destro del mouse si clicca sull’icona
prova_01.java e si sceglie <SetAsMain>. Sull’icona precedentemente bianca
compare una M rossa come nelle figure seguenti:
Compilazione
Dal menù <Build: Scelgo Compile> e ottengo
appunti java
Esecuzione con Run Application
Dal menù <Build:> Scelgo <Run Application> e ottengo
pag.19
appunti java
pag.20
esempio 2 : Si codifichi il seguente problema semplice “costruire un programma
che generi random un array di N=5 interi e assegni ad ogni componente i valori
0<=V[i]<=100 e lo stampi”. Richieste: realizzare un unico main program.
Codifica ed esecuzione:
Nota: per la prima volta compare l’operazione di trasformazione forzata di tipo
(cast di tipo – type cast) nell’istruzione
V[j] = (int) Math.round(100*Math.random() );
In dettaglio questa istruzione è una istruzione complessa, nel senso che esegue in
un’unica riga diverse azioni che a partire da quella più interna sono:
- Math.random( ) genera un numero casuale x di tipo double, tale che
0.000…<= x < 0.999...
- 100* trasforma x in X, ancora di tipo double, tale che
0.000…<= X < 99.99...
- Math.round( …) esegue l’arrotondamento di X, double, in un numero intero Y
di tipo long
0<= Y <= 100
- (int) è l’operazione di type cast che forza la trasformazione di Y, long, in un
tipo int da assegnare a V[j] che è un array di int.
4.2 Casting di tipi di dati
In java come in Pascal le trasformazioni da un tipo di dato (insieme dei suoi
valori) ad un altro (sottinsieme), devono essere indicate esplicitamente con
l’operazione di cast oppure usando una funzione del linguaggio. Ad esempio
Math.round(), trasforma un double in un long. In altri casi tale trasformazione
appunti java
pag.21
può essere eseguita ad opera dall’utente attraverso una trasformazione forzata
con l’uso di un “type cast”. Tali trasformazioni esplicite non sempre restituiscono
un dato coerente, infatti se il numero iniziale non appartiene al sottinsieme di
arrivo si commetterà un errore “grossolano”.
La trasformazione di un dato appartenente ad un tipo origine a uno appartenente
ad un insieme più ampio non necessita di alcuna trasformazione in quanto
questa avviene automaticamente senza errori. Non ci sono problemi se, ad
esempio, si assegna un dato int ad un long o ad un double.
La tabella seguente mostra alcune operazioni di type cast possibili:
Trasformazione con eventuale perdita di Trasformazioni
automatiche
senza
informazione (type cast obbligatorio)
perdita di informazione (type cast non
necessario)
Da double
A float
Da float
A double
A long
Da long
A int
Da int
A byte
Da byte
Da float
A long
A int
Da long
Da int
A float
Da long
A int
A byte
Da int
Da byte
A long
Da int
A char
A byte
Da byte
Da char
A int
Da byte
Da char
A char
A byte
appunti java
pag.22
4.E – Esercizi
di uso dell’editor per la codifica in java
4.1 Codificare ed eseguire la soluzione java dell’esercizio 3.1.
4.2 Codificare ed eseguire la soluzione java dell’esercizio 3.2.
4.3 Codificare ed eseguire la soluzione java dell’esercizio 3.3.
4.4 Codificare ed eseguire la soluzione java dell’esercizio 3.4 realizzando anche il
main program che invoca la funzione potenza.
4.5 Codificare ed eseguire la soluzione java dell’esercizio 3.5 realizzando anche il
main program che invoca la funzione.
4.6 Codificare ed eseguire la soluzione java dell’esercizio 3.6 realizzando sia il
main program che la funzione.
4.7 Codificare ed eseguire la soluzione java dell’esercizio 3.7 realizzando anche il
main program che invoca il metodo realizzato.
4.8 Codificare ed eseguire la soluzione java dell’esercizio 3.8 realizzando anche il
main program che invoca il metodo realizzato.
4.9 Si desidera realizzare un programma Java costituito dal main() che invoca tre
metodi statici genera(), ordina(), stampa(), come dalla seguente scomposizione
gerarchica:
genera()
main()
ordina()
stampa()
- genera() deve costruire, con la funzione random(), le componenti di un vettore di
dimensione massima dim=25 interi che assumano valori compresi tra –500 e 500;
- ordina() ordina, con un metodo noto (es. bolla), il vettore e lo restituisce
ordinato;
- stampa() riceve un vettore (ordinato o disordinato) e lo stampa sul video.
Richieste:
a) realizzare il main() che invochi nell’ordine, genera(), stampa(), ordina(),
stampa() per mostrare a video il funzionamento del programma;
b) realizzare i tre metodi indicati inserendo gli opportuni parametri che lo
rendano indipendente dalle variabili del main().