il linguaggio java - Istituto di Calcolo e Reti ad Alte Rrestazioni

Fondamenti di Informatica
10110
10110
01100
Fondamenti di Informatica - Programma
01100
01011
01011
Un programma è una formulazione testuale di un
algoritmo
in
un
particolare
linguaggio
di
programmazione.
„
INTRODUZIONE ALLA
PROGRAMMAZIONE AD ALTO LIVELLO
PROGRAMMA = DATI + CONTROLLO
Il “potere espressivo” di un linguaggio è caratterizzato da:
„
IL LINGUAGGIO JAVA
„
„
quali tipi di dati consente di rappresentare direttamente o tramite
definizione dell’utente (numeri, caratteri, valori logici, stringhe,
strutture, ecc.);
quali istruzioni di controllo mette a disposizione (quali
operazioni e in quale ordine di esecuzione).
1
10110
Il linguaggio di programmazione
Java
01100
01011
2
Introduzione alla
programmazione in Java
10110
01100
01011
Java è un linguaggio di programmazione
orientato agli oggetti
„
„
„
sviluppato dalla Sun Microsystems, e rilasciato nel 1995
indipendente dalla piattaforma
Java è un linguaggio di programmazione
orientato agli oggetti
„ Programmi Java
„
„
„
„
„
„
API di Java
„
Programmazione in Java
„
„
„
3
10110
Perché JAVA
„
librarie di oggetti e classi predefinite, organizzata in package
sintassi e semantica
uso di oggetti e classi predefiniti – i package
definizione di nuove classi
4
Oggetti software
10110
01100
01011
applicazioni, applet e servlet
macchina virtuale Java (JVM)
classi applicazioni e il metodo main
una o più classi
01100
01011
Caratteristiche principali di Java
„
Java è un linguaggio object oriented basato su: classi, oggetti,
metodi.
„Un oggetto software è una entità software
dotata di comportamento e stato
„
•
Un linguaggio orientato agli oggetti: i dati sono
rappresentati come oggetti e le operazioni come metodi che
operano su essi.
„
riferimento
comportamento
„
„
„
•
Pensato per lo sviluppo di applicazioni in rete.
Š
Š
Š
Š
„
Semplice
Robusto
Architecture neutral (Indipendente dalla piattaforma)
Sicuro.
stato
„
5
operazioni
messaggi
interfaccia di un oggetto
proprietà
6
1
Classi
10110
10110
01100
01011
Concetto di Classe in Java
01100
01011
Una classe è il progetto di un oggetto
software
„
„
„
per progetto si intende una descrizione dettagliata,
comprensibile da chi dovrà costruire gli oggetti
l’implementazione di un oggetto software consiste nella
definizione di una classe
„
„
Una classe in Java definisce un insieme di oggetti
con le stesse caratteristiche.
Ad esempio:
„
Classe
„
„
„Le classi per gli oggetti software sono scritte
dai programmatori in un linguaggio di
programmazione orientato agli oggetti
„
la classe libro : insieme degli oggetti libro.
la classe matrice: l’insieme degli oggetti matrice.
la classe moneta : l’insieme degli oggetti moneta.
Il concetto di classe è una estensione del concetto di
tipo dei linguaggi imperativi.
7
Oggetti Java
10110
8
10110
01100
Struttura di un programma Java
01100
01011
„
01011
Esempio: oggetto SEMAFORO
Funzioni (Metodi)
- Accendi
- Spegni
- Diventa rosso
-…
„
Dati:
- Colori
- Peso
- Tecnologia
- ...
„
„
„
Un programma Java consiste in un insieme di definizioni di
classi.
In genere ogni classe è definita in un file separato (compilabile
separatamente dagli altri file). Tuttavia tutto il programma può
risiedere in un unico file.
Almeno una delle classi che appartengono all’applicazione deve
esportare un metodo main.
Il programma viene eseguito chiamando l’interprete/compilatore
con un parametro che specifica la classe che contiene il metodo
main.
9
10110
Primo esempio di programma Java
10
10110
01100
Primo esempio di programma Java
01100
01011
01011
„ Semplicissimo programma che stampa la stringa
Ciao.
„
PrimoProgramma
public class PrimoProgramma
public class PrimoProgramma
{
public static void main(String args[])
{
System.out.println("Ciao");
}
}
„
Il primo rigo del programma definisce una classe di nome
„
„
„
La parola chiave public indica che la classe può essere
utilizzata dalle altre classi.
La parola chiave class indica la definizione del nome
(PrimoProgramma) e del contenuto della classe.
Il nome della classe deve corrispondere al nome del file che la
contiene. In questo caso: PrimoProgramma.java
PrimoProgramma è il nome della classe (attenti alle
maiuscole; Java e’ case-sensitive!)
11
12
2
10110
Il metodo main
10110
01100
Il metodo main
01100
01011
„
La semplice classe PrimoProgramma definisce un
metodo essenziale per poter eseguire il programma : il
metodo main.
01011
„
„
„
„
„
Un metodo definisce le operazioni da eseguire come una
sequenza di istruzioni che eseguono uno specifico compito
o calcolano un particolare risultato.
„
Senza metodi non avremmo operazioni !
„
Il metodo main deve essere utilizzabile da tutti e quindi
deve essere dichiarato public.
La parola chiave static indica che il metodo non
accede e non modifica i metodi della classe.
Le parole chiave void e args[] le analizzeremo più
avanti.
Le parentesi {} indicano l’inizio e la fine di una classe, di
un metodo o di un blocco di operazioni.
Le operazioni terminano con il ;
13
10110
Operazioni e invocazione di un metodo
14
10110
01100
Invocazione di un metodo
01100
01011
„
01011
Il metodo main contiene una singola operazione
„
System.out.println("Ciao");
oggetto.metodo(parametri);
per visualizzare sullo schermo la parola Ciao.
„
„
System indica una classe predefinita per operare sulle
risorse del sistema che contiene oggetti e metodi.
„
„
„
L’esecuzione di un metodo si richiede nel modo seguente:
out è un oggetto che indica lo standard output (lo
schermo).
println è un metodo della classe System per scrivere
sullo standard output e andare a capo (print non va a
capo).
„
che significa esegui le operazioni definite dal metodo
sull’oggetto usando i parametri indicati.
I parametri possono essere assenti, ma le parentesi vanno
inserite comunque. Se ci sono più parametri si separano
con una virgola.
Nel programma si vuole stampare una stringa e quindi la
si indica tra apici: “Ciao”, per differenziarla da un
identificatore o una parola chiave.
15
10110
Compilazione ed esecuzione
16
10110
01100
Dati e variabili
01100
01011
„
Per eseguire questo programma che sta nel file
PrimoProgramma.java usando il compilatore JDK:
„
„
COMPILAZIONE:
„
01011
Nel programma che abbiamo discusso non sono state
usate locazioni di memoria per conservare dei dati.
Quando questo è necessario occorre definire delle
variabili.
C:> javac PrimoProgramma.java
ESECUZIONE:
„
„
C:> java PrimoProgramma
„
Attenti agli errori di sintassi e di semantica !!
17
„
Una variabile è un’astrazione della cella di
memoria.
Formalmente, una variabile è un simbolo associato a un
indirizzo fisico che denota un valore.
18
3
10110
Dati e variabili
10110
01100
Dichiarazione di una variabile
01100
01011
„
„
Una variabile è un contenitore che può conservare
un valore. Essa viene realizzata tramite una o più celle di
memoria (variabile semplice o strutturata).
Ad esempio nel caso:
x Æ
„
4.
01011
„
1328
„
La dichiarazione di una variabile introduce una nuova variabile,
identificata da un simbolo (nome), e da un tipo che definisce
le caratteristiche e le operazioni che si possono effettuare sulla
variabile.
ESEMPI
„
l’indirizzo di x è 1328 e il suo valore è attualmente 4.
„
„
Attenzione:
„
„
„
„
il valore può cambiare nel corso dell’esecuzione,
l’indirizzo è fissato (e non cambia durante l’esecuzione).
Il programmatore non ha bisogno di conoscere dove la
variabile sia memorizzata (il suo indirizzo).
„
int a, b, sum;
double num, cifra;
char ch;
ATTENZIONE: definendo la variabile, si dichiara il suo tipo e
contemporaneamente si alloca il relativo spazio in memoria.
19
10110
Inizializzazione di una variabile
20
10110
01100
Operazione di assegnamento (=)
01100
01011
„
„
Opzionalmente, nella dichiarazione è possibile
specificare un valore iniziale per una nuova
variabile :
01011
„
L’assegnamento è una istruzione che calcola il
valore di una espressione e memorizza il
valore (lo assegna) in una variabile
variabile = espressione
ESEMPIO
„
„
int a, b = 8, sum = 0;
float pi = 3.14;
„
ESEMPI:
„
„
„
La variabile verrà creata con il suo valore
iniziale (che ovviamente potrà variare).
„
„
i
i
x
z
=
=
=
=
1;
j + 1 ;
x - y ;
(2*x)-5;
21
10110
Operazione di assegnamento (=)
22
10110
01100
Costanti
01100
01011
„
„
Il nuovo valore della variabile è quello
denotato dall’espressione posta a destra
dell’assegnamento.
„
„
Quindi, se ad esempio il valore di k era 2:
„
„
„
01011
k = 10;
j = k + 1;
cambia in 10 il valore di k
„
cambia in 11 il valore di j
Questo nuovo valore può essere usato in altre
espressioni.
„
Una costante rappresenta un dato che non può cambiare di
valore nel corso dell’esecuzione di un programma.
La dichiarazione di una costante associa ad un identificatore
(nome) un valore noto a priori.
In Java le costanti i dichiarano con la parola chiave final
„ final double pi = 3.14159;
„ final int massimo = 10000;
Il valore della costante non potrà più essere modificato nel
programma, ma verrà utilizzato nelle espressioni. Ad esempio se
j è una variabile intera:
j = massimo - 1;
23
24
4
Uso di variabili - Area di un Rettangolo
10110
Scrittore sullo schermo
10110
01100
01100
01011
„
Programma Java che calcola l’area di un rettangolo.
01011
public class AreaRettangolo
{
public static void main(String args[])
{
int base, altezza, area;
base = 8;
altezza = 5;
area = base * altezza;
System.out.println("Area = " + area);
}
}
„Si vuole scrivere una applicazione Java che
visualizza sullo schermo le seguenti frasi
ciao a tutti
questo testo introduce
i fondamenti dell'informatica
„
„
„
25
System.out
10110
L’applicazione ScrittoreSulloSchermo
10110
01100
01011
26
01100
L’applicazione ha bisogno di visualizzare delle
frasi sullo schermo
01011
„
System.out
println(String frase)
„
/* Applicazione che visualizza una frase sullo schermo. */
class ScrittoreSulloSchermo {
public static void main(String[] args) {
System.out.println("ciao a tutti");
System.out.println("questo testo introduce");
System.out.println("i fondamenti dell'informatica");
}
}
System.out è un oggetto definito dalle API di Java che
modella lo schermo del calcolatore
27
Esercizio
10110
Calcolo di una radice quadrata
10110
01100
01100
01011
„
28
01011
Commentare la definizione della seguente classe
/* Applicazione che visualizza sullo schermo
la poesia Mattino di Giuseppe Ungaretti. */
class Mattino {
public static void main(String[] args) {
System.out.println("M'illumino");
System.out.println("d'immenso");
}
}
„Si vuole scrivere una applicazione Java che
calcola e visualizza la radice quadrata di 144
„
l’esecuzione di questo programma dovrà visualizzare sullo
schermo
Math
double sqrt(double n)
System.out
println(double x)
„Math, come System.out, è un oggetto delle
API di Java
29
30
5
10110
L’applicazione RadiceQuadrata
01100
01011
/* Applicazione che calcola e visualizza sullo schermo
la radice quadrata di 144. */
class RadiceQuadrata {
public static void main(String[] args) {
double radice;
radice = Math.sqrt(144);
System.out.println(radice);
}
}
31
6