1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile e output a video
2 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
3 Il lessico di Java Le parole chiave sono parole riservate al linguaggio che non possono essere usate per gli identificatori: if else while do for switch case break finally continue label transient short byte int char long float double boolean this super interface extends void return synchronized class new static abstract final native private protected public package volatile default implements import instanceof (goto) (const) try catch throw throws
4 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) Unistruzione è 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 Unistruzione è la descrizione di una certa operazione Un blocco di codice è la sequenza di una o più istruzioni
6 Il lessico di Java Un identificatore è un nome che il programmatore associa univocamente a: una classe una variabile un metodo un oggetto
7 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.
8 Il lessico di Java … non deve essere una parola chiave del linguaggio ATTENZIONE! gli identificatori sono case sensitive (ad esempio lidentificatore MioProgramma è diverso da mioProgramma )
9 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 lidentificatore è composto da più parole, ogni parola deve iniziare con la lettera maiuscola
10 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
11 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!); }
12 Le variabili In generale una variabile è un simbolo che può assumere un valore appartenente a un dato insieme di definizione. Ad esempio se linsieme di definizione è linsieme 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 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
14 Dichiarazione di variabili La dichiarazione di una variabile ha la seguente forma: ; 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 variabili La dichiarazione di una variabile può comprendere anche linizializzazione del suo contenuto: = ; Esempio di dichiarazione di una variabile intera con inizializzazione: int isVariable=100;
16 Dichiarazione di variabili Più variabili dello stesso tipo possono fare parte di una dichiarazione multipla :,, …, ; 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 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 lidentificatore è composto da più parole, ogni parola (eccetto la prima) deve iniziare con la lettera maiuscola non deve contenere il carattere $
18 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
19 Nome Tipo di valore Memoria usata Range di valori byte intero 8 bit (1 byte)-128, +127 short16 bit (2 byte)-32768, int32 bit (4 byte) , long64 bit (8 byte) , I tipi di primitivi interi
20 Nome Tipo 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 double64 bit (8 byte) +/- 1,767… x , +/- 4,940… x char singolo carattere 16 bit (2 byte)tutti i caratteri Unicode booleantrue o false1 bittrue, 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 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
23 Operatore di assegnamento = Loperatore di assegnamento = permette di assegnare un valore ad una variabile dopo la sua dichiarazione. Listruzione di assegnamento ha la seguente forma: = ; 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= ; isLong= ; isFloat=2.567; isDouble= ; isChar=a; isBoolean=true; }
25 Operatore di assegnamento = Come si è già visto, il valore può essere anche assegnato alla variabile nellambito della sua dichiarazione per inizializzarne il contenuto: = ; 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
26 Operatore di assegnamento = (un esempio) public class EsempioInizializzazione { public static void main(String arg[]) { byte isByte=98; short isShort=20000; int isInt= ; long isLong= ; float isFloat=2.567; double isDouble= ; char isChar=a; boolean isBoolean=true; }
27 Output a video Le due istruzioni di output a video sono: System.out.print( ); che stampa a video ciò che è specificato da e System.out.println( ); che stampa a video ciò che è specificato da 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 (lintero 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 video Riassumendo, loperatore + usato nellargomento 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.