Le basi del linguaggio Java

Похожие документы
Linguaggi Sintassi e Semantica

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Il paradigma di programmazione a oggetti

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Prima lezione di laboratorio. I mattoni di base di un programma Java. Riassunto. Comandi Unix. Oggi. Blog & Group.

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Le basi del linguaggio Java

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

La sintassi del C APPENDICE H

Indice. Prefazione. 3 Oggetti e Java 53

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Alfabeto ed elementi lessicali del linguaggio C

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso sul linguaggio Java

Modulo 2: Strutture fondamentali della programmazione Java

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Primo programma in C

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:

Istruzioni Condizionali

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Lezione 6 Introduzione al C++ Mauro Piccolo

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Elementi di Base. Introduzione a Python.

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione a oggetti

Транскрипт:

Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1

Prerequisiti Nozioni generali sulla sintassi e semantica del linguaggio naturale Conoscenza delle varie fasi della scrittura di un programma, fino alla sua esecuzione Introduzione alla programmazione strutturata Concetto di variabile Le basi del linguaggio Java 2

Contenuti Sintassi e semantica Introduzione alla sintassi di Java Introduzione alla semantica di Java semantica delle espressioni semantica delle istruzioni Sintassi, semantica ed errori Introduzione alle istruzioni di Java Le basi del linguaggio Java 3

Obiettivi (competenze da acquisire) Al termine dell unità didattica lo studente sarà in grado di Individuare gli errori presenti in un programma Leggere le informazioni sugli errori, che si hanno in fase di compilazione Distinguere gli errori sintattici dagli errori semantici Le basi del linguaggio Java 4

Linguaggi naturali... Per definire un linguaggio naturale si parte dalla definizione di un alfabeto in italiano ci sono 21 lettere, in inglese 26,... Con i caratteri dell alfabeto possiamo formare un insieme di sequenze, dette parole Non tutte le sequenze sono parole del linguaggio naturale La grammatica del linguaggio fornisce le regole per decidere quali sequenze sono parole del linguaggio parole corrette grammaticalmente Le basi del linguaggio Java 5

... Linguaggi naturali Con le lettere dell alfabeto italiano possiamo costruire alcune sequenze ad esempio abcdef, ghil, rst - che non sono parole della lingua italiana ad esempio andare, aula, corso, acqua, soqquadro, - che sono parole della lingua italiana, cioè corrette grammaticalmente Le basi del linguaggio Java 6

... Linguaggi naturali Con le parole, corrette, possiamo formare un insieme di parole, dette frasi Non tutte le sequenze sono frasi del linguaggio naturale La sintassi del linguaggio fornisce le regole per decidere quali sequenze sono frasi del linguaggio frasi corrette sintatticamente, o sintatticamente ben formate Le basi del linguaggio Java 7

... Linguaggi naturali In italiano la regola base della sintassi dice che le frasi sono costruite con sequenze di parole che seguono la struttura soggetto verbo complemento soggetto, verbo e complemento non sono altro che dei nomi, cioè denotano, alcuni particolari e ben precisi sottoinsiemi dell insieme di tutte le parole del linguaggio. Ad esempio la sequenza di parole il lo la non è quindi una frase della lingua italiana ad esempio la sequenza di parole gatto mangia topo è una frase della lingua italiana, ovvero è sintatticamente ben formata Le basi del linguaggio Java 8

... Linguaggi naturali Solo alcune delle frasi del linguaggio, cioè di quelle ben formate sono anche valide, cioè hanno un significato La semantica del linguaggio stabilisce quali tra le frasi ben formate sono anche valide e quindi si occupa dell interpretazione (del significato) delle frasi ad esempio la frase il gatto mangia il topo è una ben formata ma è anche valida, cioè ha un significato Le basi del linguaggio Java 9

Sintassi La sintassi di un linguaggio si occupa della forma delle frasi del linguaggio, ovvero delle regole che permettono di costruire frasi ben formate del linguaggio Esempio di frase in italiano il gatto mangia il topo Frammento della sintassi della lingua italiana frase soggetto verbo complemento soggetto articolo nome verbo mangia, beve complemento articolo nome articolo il, lo, la nome gatto, monte, topo Le basi del linguaggio Java 10

Semantica La semantica di un linguaggio si occupa dell interpretazione del linguaggio, ovvero del significato delle frasi corrette sintatticamente Esempio di frasi corrette sintatticamente in italiano, ma non tutte valide il gatto mangia il topo il topo mangia il monte il cane mangia il topo il monte beve il cane Le basi del linguaggio Java 11

Regole sintattiche... Le regole della sintassi sono chiamate regole di produzione, come nell esempio precedente Nelle regole di produzione compaiono elementi (simboli) terminali, come - mangia, beve, il, lo, la, gatto, monte, topo - ed elementi (simboli) non-terminali, come frase, soggetto, verbo,. che sono categorie sintattiche cioè nomi che denotano insiemi di simboli terminali Una fissata categoria sintattica, detta assioma, è quella dalla quale deve partire il processo di produzione Nel caso della lingua italiana l assioma è frase Le basi del linguaggio Java 12

... Regole sintattiche frase soggetto verbo complemento soggetto articolo nome verbo mangia, beve complemento articolo nome articolo il, lo, la nome gatto, monte, topo Una fissata categoria sintattica, detta assioma, è quella dalla quale deve partire il processo di produzione Nel caso della lingua italiana l assioma è frase Le basi del linguaggio Java 13

Sintassi, semantica e linguaggi 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 (linguaggi naturali e linguaggi di programmazione) vengono distinte due componenti la sintassi del linguaggio si occupa della forma delle frasi del linguaggio, per formare le frasi ben formate la semantica del linguaggio stabilisce quali tra le frasi ben formate sono anche valide si occupa dell interpretazione (del significato) delle frasi valide Le basi del linguaggio Java 14

Introduzione alla sintassi di Java La sintassi di Java si occupa della formazione di frasi valide in Java, mediante la formalizzazione delle regole sintattiche 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 } Le basi del linguaggio Java 15

Sintassi e grammatiche La sintassi di Java è descritta da una grammatica composta da elementi terminali le parole e i simboli che possono comparire nei programmi class public., ; { } a b c d... 0 1 2... elementi non terminali le categorie sintattiche, utilizzate per la descrizione dei programmi ma che non compaiono nei programmi definizione-classe identificatore corpo-classe definizione-metodo blocco sequenza-istruzioni-blocco istruzione produzioni (o regole sintattiche) le regole che specificano come sia possibile derivare frasi da ciascun non terminale assioma l elemento non terminale che guida la scrittura di un intero programma o classe Le basi del linguaggio Java 16

Esempi di produzioni definizione-classe: class identificatore-classe corpo-classe corpo-classe: { dichiarazioni-corpo-classe opt } 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-blocco opt } Le basi del linguaggio Java 17

Produzioni definizione-classe: class identificatore-classe corpo-classe la prima riga di una produzione contiene un non terminale la produzione ha lo scopo di descrivere le possibili forme per questo non terminale nelle righe successive alla prima vengono descritti i possibili modi per espandere il non terminale questa produzione afferma che una definizione-classe è formata dal terminale class, seguito da un identificatore-classe e da un corpo-classe le forme per identificatore-classe e corpo-classe sono descritte dalle rispettive produzioni Le basi del linguaggio Java 18

Alcuni elementi sintattici nella definizione di una classe identificatore-classe definizione-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"); } } corpo-classe definizione-metodo Le basi del linguaggio Java 19

Alcuni elementi sintattici nella definizione di un metodo intestazione-metodo definizione-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"); } corpo-metodo blocco sequenza-istruzioni-blocco istruzione-blocco istruzione Le basi del linguaggio Java 20

Esempio identificatori I nomi delle classi, dei metodi e delle variabili appartengono alla categoria grammaticale degli identificatori alcuni esempi di identificatori Math, println, frase, sqrt, RadiceQuadrata System.out non è un identificatore La 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, come il carattere underscore _ alcune sequenze di caratteri sono riservate come ad esempio class e public non sono identificatori l uso dei caratteri minuscoli e maiuscoli è significativo ad esempio, alfa e Alfa sono identificatori diversi Le basi del linguaggio Java 21

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 di 0 1 2... 8 9 parola-chiave: uno di abstract 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 Le basi del linguaggio Java 22

Introduzione alla semantica di Java La semantica di un linguaggio stabilisce quali sono le frasi valide tra quelle ben formate la sintassi è uno strumento troppo povero si occupa dell interpretazione (del significato) delle frasi valide legame stretto tra sintassi e semantica Le basi del linguaggio Java 23

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"; la sintassi caratterizza le frasi ben formate le frasi valide sono un sottoinsieme delle frasi ben formate i tipi rivestono un ruolo importante nel discriminare tra frasi valide e no Le basi del linguaggio Java 24

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 in modo diverso per istruzioni semplici e istruzioni strutturate Le basi del linguaggio Java 25

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 il valore di a+b è dato dal valore di a sommato a quello di b è noto solo durante l esecuzione Le basi del linguaggio Java 26

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 in questo caso valuta l espressione a+b memorizza il valore calcolato nella variabile somma Le basi del linguaggio Java 27

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 invia il messaggio println("ciao a tutti") all oggetto System.out poi System.out sa che cosa fare... Le basi del linguaggio Java 28

Semantica delle istruzioni strutturate La semantica di Java si occupa anche della semantica delle istruzioni strutturate (istruzioni che al loro interno contengono altre istruzioni) while (i<=n) { } somma = somma + i; i = i + 1; la semantica delle istruzioni strutturate viene data in termini di esecuzioni delle istruzioni contenute valutazioni delle condizioni di controllo Le basi del linguaggio Java 29

Sintassi, semantica ed errori Possibili errori di programmazione la frase non è ben formata errori sintattici o grammaticali la frase è ben formata ma non è valida errori semantici errori di semantica statica ed errori di semantica dinamica la frase è valida ma il suo significato è diverso da quello voluto errori logici Le basi del linguaggio Java 30

Errori sintattici System.out.println(ciao a tutti); // ERRORE: mancano le virgolette System.out println("ciao a tutti"); a = 10, // ERRORE: manca un punto // ERRORE: virgola al posto di punto e virgola Gli errori sintattici sono riconosciuti e segnalati dal compilatore Le basi del linguaggio Java 31

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 riconosciuti e segnalati dal compilatore (come i due errori mostrati qui sopra) errori di semantica dinamica possono verificarsi durante l esecuzione del programma (non sono riconosciuti dal compilatore) Le basi del linguaggio Java 32

Errori logici System.out.print("ciao a tutti"); // ERRORE: andava usato il metodo println doppiodin = n+2; // ERRORE: + anziché * Gli errori logici non sono riconosciuti dal compilatore, e possono verificarsi durante l esecuzione del programma Le basi del linguaggio Java 33

Introduzione alle istruzioni di Java Una applicazione Java, nella sua forma più semplice eventuale clausola di importazione commento sull applicazione /* 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 il corpo del metodo main è una sequenza di istruzioni e dichiarazioni Le basi del linguaggio Java 34

Una classificazione delle principali istruzioni di Java istruzione o dichiarazione dichiarazione variabile locale istruzione istruzione semplice istruzione strutturata istruzione espressione istruzione return istruzione break istruzione continue istruzione vuota blocco istruzione condizionale istruzione ripetitiva istruzione assegnazione istruzione invocazione di metodo istruzione di incremento o decremento istruzione creazione di oggetto istruzione if istruzione if-else istruzione while istruzione for istruzione do-while Le basi del linguaggio Java 35

Una classificazione delle principali istruzioni di Java Dichiarazioni Istruzioni di variabili, locali a un metodo istruzioni semplici invocazione di metodo, assegnazione,... istruzioni atomiche istruzioni strutturate blocco, istruzioni condizionali, istruzioni ripetitive istruzioni non atomiche, molecolari sono istruzioni di controllo Le basi del linguaggio Java 36

Riepilogo della dispensa Le basi del linguaggio Java 37

Conoscenze acquisite Analogia tra il linguaggio naturale e il linguaggio di programmazione Modalita di generazione delle regole grammaticali in un linguaggio Le basi del linguaggio Java 38

Competenze acquisite Saper individuare gli errori presenti in un programma Saper leggere le informazioni sugli errori, che si hanno in fase di compilazione Saper distinguere gli errori sintattici dagli errori semantici Le basi del linguaggio Java 39

Parole chiave Alfabeto, grammatica, frase, sintassi, semantica Frase ben formata, frase valida Categoria sintattica, produzioni, assioma, parole chiave Errori sintattici, semantici, logici Le basi del linguaggio Java 40

Rifermimenti al libro di testo Capitolo 6 Le basi del linguaggio Java 41