1 / 22

Le basi del linguaggio Java

Le basi del linguaggio Java. Capitolo 6 dicembre 2003. Sintassi e semantica. Un programma è un insieme di frasi in un linguaggio di programmazione quali sono le frasi valide in un linguaggio di programmazione? qual è il significato delle frasi valide?

ciqala
Download Presentation

Le basi del linguaggio Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Le basi del linguaggio Java Capitolo 6 dicembre 2003 Sintassi e semantica

  2. Sintassi e semantica • Un programma è un insieme di frasi in un linguaggio di programmazione • quali sono le frasi valide in un linguaggio di programmazione? • qual è il significato delle frasi valide? • Nello studio dei linguaggi vengono distinte due componenti • sintassi • ben formate • semantica • frasi valide • significato delle frasi valide Sintassi e semantica

  3. Introduzione alla sintassi di Java • La sintassi formalizza le “regole sintattiche” per scrivere frasi ben formate • la definizione di una classe è formata dalla parola class, seguita dal nome della classe e dal corpo della classe • il nome di una classe è un identificatore • un identificatore è una sequenza non vuota di caratteri alfanumerici, iniziante per un carattere alfabetico • il corpo di una classe è formato da un elenco di dichiarazioni della classe, racchiuso tra parentesi graffe { e } • possibili dichiarazioni di una classe sono: la definizione di un metodo, la definizione di un costruttore, la dichiarazione di una variabile • la definizione di un metodo è formata dall’intestazione del metodo seguita dal corpo del metodo • il corpo di un metodo è un blocco • un blocco è una sequenza di istruzioni e dichiarazioni racchiusa tra parentesi graffe { e } Sintassi e semantica

  4. Sintassi e grammatiche • La sintassi di Java è descritta da una grammatica composta da • elementi terminali • class public . , ; { } a b c d ... 0 1 2 ... • elementi non terminali • definizione-classe identificatore corpo-classe definizione-metodo blocco sequenza-istruzioni-blocco istruzione • produzioni (o regole sintattiche) • assioma • unità-di-compilazione (definizione-classe) Sintassi e semantica

  5. Esempi di produzioni • definizione-classe: • class identificatore-classe corpo-classe • corpo-classe: • {dichiarazioni-corpo-classeopt} • dichiarazioni-corpo-classe: • dichiarazione-corpo-classe • dichiarazione-corpo-classe dichiarazioni-corpo-classe • dichiarazione-corpo-classe: • definizione-metodo • definizione-costruttore • dichiarazione-variabile • definizione-metodo: • intestazione-metodo corpo-metodo • corpo-metodo: • blocco • blocco: • {sequenza-istruzioni-bloccoopt} Sintassi e semantica

  6. identificatore-classe definizione-classe corpo-classe definizione-metodo Alcuni elementi sintattici nella definizione di una classe • /* 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"); • } • } Sintassi e semantica

  7. intestazione-metodo definizione-metodo istruzione-blocco — istruzione corpo-metodo — blocco sequenza-istruzioni-blocco Alcuni elementi sintattici nella definizione di un metodo • 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"); • } Sintassi e semantica

  8. Esempio — identificatori • I nomi delle classi, dei metodi e delle variabili appartengono alla categoria grammaticale degli identificatori • ad esempio, Math, println, frase, sqrt, RadiceQuadrata • Regola (informale) per la formazione degli identificatori è • un identificatore è una sequenza non vuota di caratteri alfanumerici (alfabetici e numerici), iniziante con un carattere alfabetico • in realtà, sono ammessi anche alcuni caratteri speciali • alcune sequenze di caratteri sono riservate (ad esempio, class) e non sono identificatori Sintassi e semantica

  9. Sintassi per gli identificatori • identificatore: • sequenza-caratteri ma non parola-chiave • sequenza-caratteri: • carattere-alfabetico • sequenza-caratteri carattere-alfanumerico • carattere-alfanumerico: • carattere-alfabetico • cifra • carattere-alfabetico: • uno di a à b c ... x y z A À B C ... X Y Z • cifra: • uno di0 1 2 ...8 9 • parola-chiave: • uno diabstract boolean break byte case catch char class const • continue default do double else extends final finally float • for goto if implements import instanceof int interface long • native new package private protected public return short • static super switch synchronized this throw throws • transient try void volatile while Sintassi e semantica

  10. Introduzione alla semantica di Java • La semantica di un linguaggio • stabilisce quali sono le frasi valide tra quelle ben formate • si occupa dell’interpretazione (del significato) delle frasi valide • legame stretto tra sintassi e semantica Sintassi e semantica

  11. Frasi ben formate e frasi valide • Una istruzione valida • System.out.println("ciao a tutti"); • Una istruzione ben formata – ma non valida • System.out.stampa("ciao a tutti"); • Una istruzione che non è ben formata • System.out.println("ciao a tutti"; Sintassi e semantica

  12. Semantica di una frase • La semantica di una frase dipende anche dal tipo della frase • la semantica di una espressione viene data in termini di un tipo e di un valore • la semantica di una istruzione viene data in termini dell’effetto dell’esecuzione dell’istruzione Sintassi e semantica

  13. Semantica delle espressioni • a + b • è una espressione ben formata • è anche valida se (ad esempio) • a e b sono variabili di tipo int • alle variabili a e b è stato già assegnato un valore • in questo caso è una espressione di tipo int • Semantica statica • controllata durante l’analisi statica del codice (dal compilatore) • assegna un tipo a ogni espressione • Semantica dinamica • valutata durante l’esecuzione dinamica del codice • assegna un valore a ogni espressione Sintassi e semantica

  14. Semantica delle istruzioni • somma = a + b; • è una istruzione ben formata • è anche valida se (ad esempio) • a, b e somma sono variabili di tipo int • alle variabili a e b è stato già assegnato un valore • Semantica statica • principalmente compatibilità tra tipi • Semantica dinamica Sintassi e semantica

  15. Semantica delle istruzioni semplici • System.out.println("ciao a tutti"); • Semantica statica • esiste l’oggetto System.out? • qual è il tipo dell’oggetto System.out? • per il tipo dell’oggetto System.out esiste una operazione di nome println che ha come parametro una stringa? • Semantica dinamica Sintassi e semantica

  16. Semantica delle istruzioni strutturate • La semantica di Java si occupa anche della semantica delle istruzioni strutturate • while (i<=n) { • somma = somma + i; • i = i + 1; • } Sintassi e semantica

  17. Sintassi, semantica ed errori • Possibili errori di programmazione • errori sintattici o grammaticali • errori semantici • errori di semantica statica ed errori di semantica dinamica • errori logici Sintassi e semantica

  18. Errori sintattici • System.out.println(ciao a tutti); • // ERRORE: mancano le virgolette • System.out println("ciao a tutti"); • // ERRORE: manca un punto • a = 10, • // ERRORE: virgola al posto di punto e virgola Sintassi e semantica

  19. Errori semantici • System.out.stampa("ciao a tutti"); • // ERRORE: il metodo stampa non è definito • system.out.println("ciao a tutti"); • // ERRORE: system.out non è un riferimento valido • Gli errori semantici sono di due tipi • errori di semantica statica • errori di semantica dinamica Sintassi e semantica

  20. Errori logici • System.out.print("ciao a tutti"); • // ERRORE: andava usato il metodo println • System.out.println("ciao a tuti"); • // ERRORE: Queto anziché Questo • doppiodin = n+2; • // ERRORE: + anziché * Sintassi e semantica

  21. commento sull’applicazione eventuale clausola di importazione • /* 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"); • } • } nome dell’applicazione sequenza di istruzioni e dichiarazioni Introduzione alle istruzioni di Java • Una applicazione Java, nella sua forma più semplice • il corpo del metodo main è una sequenza di istruzioni e dichiarazioni Sintassi e semantica

  22. istruzione o dichiarazione dichiarazione variabile locale istruzione istruzione semplice istruzione strutturata istruzione return istruzione espressione istruzione break istruzione continue istruzione vuota istruzione condizionale istruzione ripetitiva blocco istruzione invocazione di metodo istruzione di incremento o decremento istruzione creazione di oggetto istruzione assegnazione istruzione if istruzione if-else istruzione while istruzione for istruzione do-while Una classificazione delle principali istruzioni di Java Sintassi e semantica

More Related