Corso di Informatica
(Programmazione)
Lezione 7 (5 novembre 2008)
Programmazione in Java:
lessico, variabili, tipi primitivi,
assegnamento a variabile
e output a video
1
Il lessico di Java
Gli elementi lessicali sono le più piccole
unità che compongono la grammatica di Java
(e di un linguaggio in generale). Essi sono:
 parole chiave riservate al linguaggio (ad esempio 
public, class, static, etc.)
 caratteri speciali (ad esempio  {, }, =, +, etc.)
 identificatori
 stringhe (sequenze di caratteri)
 numeri senza segno
2
Il lessico di Java
Le parole chiave sono parole riservate al
linguaggio che non possono essere usate per
gli identificatori:
short
byte
int
char
long
float
double
boolean
this
super
interface
extends
if
else
while
do
for
switch
case
break
finally
continue
label
transient
void
return
synchronized
class
new
static
abstract
final
native
private
protected
public
package
volatile
default
implements
import
instanceof
(goto)
(const)
try
catch
throw
3
throws
Il lessico di Java
I separatori sono caratteri speciali che
permettono di raggruppare o separare parti
di codice:
 Parentesi graffe { }  separano blocchi di codice
 Parentesi tonde ( )  specificano i parametri
delle funzioni (o metodi)
 Parentesi quadre [ ]  identificano gli elementi
di un array (o vettore)
Un’istruzione è la descrizione di una certa operazione
Un blocco di codice è la sequenza di una o più istruzioni
4
Il lessico di Java
…
 Punto e virgola ;  separa le istruzioni (tutte le
istruzioni devono terminare con ;)
 Virgola ,  separa i valori (parametri) quando si
richiamano le funzioni (o metodi)
 Punto .  usato per richiamare i metodi di una
classe
Un’istruzione è la descrizione di una certa operazione
Un blocco di codice è la sequenza di una o più istruzioni
5
Il lessico di Java
Un identificatore è un nome che il
programmatore associa univocamente a:
 una classe
 una variabile
 un metodo
 un oggetto
6
Il lessico di Java
Un identificatore è una sequenza di
caratteri alfanumerici che deve soddisfare
le regole seguenti:
 non deve iniziare con una cifra numerica
 non deve contenere spazi
 deve contenere solo lettere (maiuscole e
minuscole), cifre numeriche (da 0 a 9), il carattere
di underscore (_) e il carattere $
 non sono quindi ammessi caratteri speciali quali |, &,
*, etc.
7
Il lessico di Java
…
 non deve essere una parola chiave del linguaggio
ATTENZIONE!
gli identificatori sono case sensitive (ad esempio
l’identificatore MioProgramma è diverso da
mioProgramma)
8
Identificatore di classe
public class MioProgramma {
public static void main(String arg[]) {
System.out.println(“Hello world!”);
}
}
La convenzione per attribuire ad una classe un
identificatore è la seguente:
 deve rappresentare bene ciò che la classe descrive
(ciò che il programma compie)
 deve iniziare con una lettera maiuscola
 se l’identificatore è composto da più parole, ogni
parola deve iniziare con la lettera maiuscola
9
I commenti
I commenti sono annotazioni del
programmatore che il compilatore ignora e
che quindi non traduce:
 commento delimitato da /* e */  il testo
compreso tra /* e */ viene ignorato dal compilatore
 commento a fine riga iniziato dalla coppia // 
tutto il testo dopo // e che termina a fine riga,
viene ignorato dal compilatore
10
I commenti
Esempio di commenti
public class MioProgramma {
public static void main(String arg[]) {
/*Questo programma stampa a video
la scritta Hello world! Questo è
un commento su più righe*/
//Questo è un commento su una riga
System.out.println(“Hello world!”);
}
}
11
Le variabili
In generale una variabile è un simbolo che
può assumere un valore appartenente a un
dato insieme di definizione.
Ad esempio se l’insieme di definizione è
l’insieme degli interi positivi I+ e x è una
variabile definita su I+, allora x può
assumere solo i valori che vanno da 1 a .
12
Le variabili
In Java una variabile è una precisa locazione di
memoria sul calcolatore:
 che possiede un identificatore
 in cui viene memorizzato un valore di un certo tipo
Prima di poter usare una variabile occorre
effettuarne la dichiarazione:
 assegnandole un identificatore (nome) attraverso
cui accedere al suo contenuto
 specificandone il tipo di valore che dovrà contenere
13
Dichiarazione di variabili
La dichiarazione di una variabile ha la
seguente forma:
<tipo> <identificatore>;
Esempio di dichiarazione di una variabile
intera:
Identificatore (nome) della
int isVariable;
variabile
Parola chiave che identifica i
numeri interi con segno
14
Dichiarazione di variabili
La dichiarazione di una variabile può
comprendere anche l’inizializzazione del suo
contenuto:
<tipo> <identificatore>=<valore>;
Esempio di dichiarazione di una variabile
intera con inizializzazione:
int isVariable=100;
15
Dichiarazione di variabili
Più variabili dello stesso tipo possono fare
parte di una dichiarazione multipla :
<tipo> <id1>, <id2>, …, <idn>;
Esempio di dichiarazione di tre variabili
intere senza e con inizializzazione:
int isVar1, isVar2, isVar3;
int isVar1=2, isVar2=10, isVar3=100;
16
Identificatore di variabile
La convenzione per attribuire ad una variabile
un identificatore è la seguente:
 deve rappresentare bene ciò che la variabile
rappresenta
 deve iniziare con una lettera minuscola
 se l’identificatore è composto da più parole,
ogni parola (eccetto la prima) deve iniziare con
la lettera maiuscola
 non deve contenere il carattere $
17
I tipi di dati
Un tipo di dati determina:
 il valore che una variabile (di un determinato tipo)
può contenere
 le operazioni che possono essere effettuate su una
variabile (di un determinato tipo)
In Java esistono due categorie di tipi di dati:
 tipi primitivi  i più semplici e non ulteriormente
scomponibili
 tipi non primitivi  complessi e composti da altri
tipi di dati (a loro volta primitivi e non). Ad esempio:
classi, interfacce, array
18
I tipi di primitivi interi
Memoria
usata
Range di valori
byte
8 bit (1 byte)
-128, +127
short
16 bit (2 byte)
-32768, +32767
32 bit (4 byte)
-2.147.483.648,
+2.147.483.647
64 bit (8 byte)
-9.223.372.036.854.775.808,
+9.223.374.036.854.775.808
Nome
int
long
Tipo di
valore
intero
19
Gli altri tipi di primitivi
Nome
float
double
Tipo di
valore
Memoria
usata
Range di valori
floating point
(virgola
mobile)
32 bit (4 byte)
+/- 3,4028… x 10+38,
+/- 1,4023… x 0-45
64 bit (8 byte)
+/- 1,767… x 10+308,
+/- 4,940… x 0-324
char
singolo
carattere
16 bit (2 byte)
tutti i caratteri Unicode
boolean
true o false
1 bit
true, false
20
I tipi primitivi (un esempio)
public class EsempioDichiarazione {
public static void main(String arg[]) {
byte isByte;
short isShort;
int isInt;
long isLong;
float isFloat;
double isDouble;
char isChar;
boolean isBoolean;
}
}
21
Letterali stringa e carattere
Letterale stringa  sequenza di caratteri
racchiusa tra doppi apici “”
esempio: “Hello world!” è un letterale stringa
composto da 12 caratteri
Letterale carattere  carattere
appartenente al codice Unicode racchiuso tra
singoli apici  ‘’
esempio: ‘a’ è un letterale carattere
Attenzione! La scrittura ‘a’ denota un singolo carattere, mentre
la scrittura “a” denota una stringa composta di un singolo carattere
22
Operatore di assegnamento ‘=‘
L’operatore di assegnamento ‘=‘ permette
di assegnare un valore ad una variabile dopo
la sua dichiarazione. L’istruzione di
assegnamento ha la seguente forma:
<identificatore>=<valore>;
Il valore assegnato ad una variabile deve
essere dello stesso tipo della variabile
23
Operatore di assegnamento ‘=‘ (un esempio)
public class EsempioAssegnamento {
public static void main(String arg[]) {
byte isByte;
short isShort;
int isInt;
long isLong;
float isFloat;
double isDouble;
char isChar;
boolean isBoolean;
isByte=98;
isShort=20000;
isInt=1000000000;
isLong=1000000000000;
isFloat=2.567;
isDouble=0.0000001;
isChar=‘a’;
isBoolean=true;
}
}
24
Operatore di assegnamento ‘=‘
Come si è già visto, il valore può essere
anche assegnato alla variabile nell’ambito
della sua dichiarazione per inizializzarne il
contenuto:
<tipo> <identificatore>=<valore>;
Attenzione! E’ una buona abitudine assegnare il
valore ad una variabile o quando la si dichiara
(inizializzazione in fase di dichiarazione) o comunque
prima di usarla. Il Contenuto di una variabile solo
dichiarata è INDEFINITO
25
Operatore di assegnamento ‘=‘ (un esempio)
public class EsempioInizializzazione {
public static void main(String arg[]) {
byte isByte=98;
short isShort=20000;
int isInt=1000000000;
long isLong=1000000000000;
float isFloat=2.567;
double isDouble=0.0000001;
char isChar=‘a’;
boolean isBoolean=true;
}
}
26
Output a video
Le due istruzioni di output a video sono:
System.out.print(<print_str>);
che stampa a video ciò che è specificato da
<print_str> e
System.out.println(<print_str>);
che stampa a video ciò che è specificato da
<print_str> e va a capo
27
Output a video (un esempio)
Il seguente codice:
int x;
x=3;
System.out.println(“x vale “+x);
stampa a video la stringa:
x vale 3
e va a capo. Il contenuto di x (l’intero 3) viene
convertito nella stringa “3” e poi concatenato a
“x vale “ per ottenere la stringa “x vale 3” da
stampare a video
28
Output a video (un esempio)
Il seguente codice:
int x;
x=3;
int y=4;
System.out.println(“x vale “+x+” e y vale “+y);
stampa a video la stringa:
x vale 3 e y vale 4
e va a capo. I contenuti di x e y (interi 3 e 4)
vengono trasformati rispettivamente nelle
stringhe “3” e “4” prima di effettuare la
concatenazione di “x vale “, di “3”, di “ e y vale “ e
29
di “4”
Output a video (un esempio)
Il seguente codice:
int x=3;
int y=4;
System.out.println(x+y);
stampa a video la stringa:
7
e va a capo. In questo caso viene effettua prima
la somma dei contenuti di x e y (3+4=7) e poi il
risultato intero viene convertito nella stringa “7”
da stampare a video
30
Output a video (un esempio)
Il seguente codice:
int x=3;
int y=4;
System.out.println(“Valori “+x+y);
stampa a video la stringa:
Valori 34
e va a capo. I contenuti di x e y (interi 3 e 4)
vengono convertiti nelle stringhe “3” e “4” e poi
concatenati alla stringa “Valori “ per ottenere la
stampa di “Valori 34”
31
Output a video
Riassumendo, l’operatore + usato
nell’argomento delle funzioni di output a
video, tenta prima di convertire tutti gli
operandi in un unico tipo e successivamente
esegue una somma, se gli operandi convertiti
sono tutti numeri, o una concatenazione, se
gli operandi convertiti sono tutti stringhe. Se
anche solo uno degli operandi iniziali è una
stringa, allora gli operandi convertiti saranno
tutti stringhe.
32
Scarica

ProgrammazioneLEZ7