1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico,...
-
Upload
enrichetta-guidi -
Category
Documents
-
view
216 -
download
0
Transcript of 1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico,...
1
Corso di Informatica
(Programmazione)
Lezione 7 (5 novembre 2008)
Programmazione in Java:lessico, variabili, tipi primitivi,
assegnamento a variabilee output a video
2
Il lessico di JavaGli 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
3
Il lessico di JavaLe parole chiave sono parole riservate al linguaggio che non possono essere usate per gli identificatori:
ifelsewhiledoforswitchcasebreakfinallycontinuelabeltransient
shortbyteintcharlongfloatdoublebooleanthissuperinterfaceextends
voidreturnsynchronizedclassnewstaticabstract finalnativeprivateprotectedpublic
packagevolatiledefaultimplementsimportinstanceof(goto)(const)trycatchthrowthrows
4
Il lessico di JavaI 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
5
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 operazioneUn blocco di codice è la sequenza di una o più istruzioni
6
Il lessico di JavaUn identificatore è un nome che il programmatore associa univocamente a:
una classe
una variabile
un metodo
un oggetto
7
Il lessico di JavaUn 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.
8
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)
9
Identificatore di classepublic 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
10
I commentiI 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
11
I commentiEsempio di commenti
public class MioProgramma {public static void main(String arg[]) {
/*Questo programma stampa a videola scritta Hello world! Questo èun commento su più righe*/
//Questo è un commento su una riga
System.out.println(“Hello world!”);}
}
12
Le variabiliIn 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
13
Le variabiliIn Java una variabile è una precisa locazione di memoria sul calcolatore:
che possiede un identificatore
in cui viene memorizzato un valore di un certo tipoPrima 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
14
Dichiarazione di variabiliLa dichiarazione di una variabile ha la seguente forma:
<tipo> <identificatore>;
Esempio di dichiarazione di una variabile intera:
int isVariable;
Parola chiave che identifica i numeri interi con segno
Identificatore (nome) della variabile
15
Dichiarazione di variabiliLa 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;
16
Dichiarazione di variabiliPiù 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;
17
Identificatore di variabileLa 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 $
18
I tipi di datiUn 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
19
NomeTipo di
valore
Memoria usata
Range di valori
byte
intero
8 bit (1 byte) -128, +127
short 16 bit (2 byte) -32768, +32767
int 32 bit (4 byte)-2.147.483.648, +2.147.483.647
long 64 bit (8 byte)
-9.223.372.036.854.775.808
, +9.223.374.036.854.775.8
08
I tipi di primitivi interi
20
NomeTipo di valore
Memoria usata
Range di valori
float floating point
(virgola mobile)
32 bit (4 byte)+/- 3,4028… x
10+38,+/- 1,4023… x 0-45
double 64 bit (8 byte)+/- 1,767… x
10+308, +/- 4,940… x 0-324
charsingolo
carattere16 bit (2 byte) tutti i caratteri Unicode
boolean true o false 1 bit true, false
Gli altri tipi di primitivi
21
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;
}}
22
Letterali stringa e carattereLetterale 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, mentrela scrittura “a” denota una stringa composta di un singolo carattere
23
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
24
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;
}}
25
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 ilvalore 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
26
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;
}}
27
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
28
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
29
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 di “4”
30
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
31
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”
32
Output a videoRiassumendo, 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.