IL LINGUAGGIO JAVA. Introduzione alla sintassi di Java La sintassi formalizza le regole sintattiche per scrivere frasi ben formate

Documenti analoghi
IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Le basi del linguaggio Java

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

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

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Programmazione ad Oggetti. Java Parte II

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

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

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

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

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

Le basi del linguaggio Java

Linguaggi di Programmazione I Lezione 8

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

! Riassunto. ! for. ! Cicli annidati. ! Esempi, esercizi, errori tipici. ! Programmazione strutturata. ! break e continue I1; I2; I3;

Laboratorio di Informatica I

1

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Programmazione Orientata agli Oggetti in Linguaggio Java

Struttura di un programma C++

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

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

Il paradigma di programmazione a oggetti

Il paradigma di programmazione a oggetti

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Dichiarazioni e tipi predefiniti nel linguaggio C

Struttura di un linguaggio

Il C nel C++ Struttura di un linguaggio. Elementi lessicali. Spazi. Livello lessicale: Livello sintattico: Livello semantico:

La sintassi del C APPENDICE H

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Basi della programmazione in Java

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Lezione 6 Introduzione al C++ Mauro Piccolo

Corso sul linguaggio Java

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Introduzione a Java. Riferimenti

Istruzioni di selezione in Java 1

Fondamenti di Informatica T-1

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza

Laboratorio di Informatica I

Agenda. Caratteristiche del linguaggio. Il primo programma java. Variabili. Tipi primitivi. Assegnamento

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 11. Leggibilità. Aprile Leggibilita 1

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

Programmazione in Java (I modulo) Lezione 4

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Dati due punti sul piano calcolare la loro distanza

Linguaggi Sintassi e Semantica

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C: Espressioni

Indice. Prefazione. 3 Oggetti e Java 53

Programmazione I - corso B a.a prof. Viviana Bono

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Laboratorio di Informatica I

Oggi. La programmazione strutturata - II. Riassunto (1/2) Riassunto (2/2) Sequenza e selezione. if e while. Stefano Mizzaro 1

Fondamenti di Informatica T-1

Introduzione alla programmazione. Alice Pavarani

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Fondamenti di Informatica T1 Introduzione al linguaggio Java Input/Output-Variabili-Tipi

Introduzione alla programmazione in C++

Lezione 4 Casting, stringhe e caratteri, operatori relazionali, espressioni e variabili booleane

Esonero di Informatica I. Ingegneria Medica

Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)

Fondamenti di Informatica T-1

Riassunto. Introduzione alla. 4. Intro programmazione strutturata. Oggi. programmazione strutturata. Le strutture di controllo della.

Char. Parte 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Programmazione in rete e laboratorio a.a. 2002/03

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Corso di Laurea Ingegneria Informatica

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

I Metodi. Fondamenti di Informatica A-K

Programmazione Orientata agli Oggetti in Linguaggio Java

Char. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Introduzione alla programmazione in linguaggio C

PROGRAMMA = ALGORITMO

1. Esempi. 2. I mattoni di un programma Java: ! Parole riservate. ! Identificatori. ! Variabili. ! Letterali. ! Costanti. ! Operatori. !

5 - Istruzioni condizionali

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Linguaggi di programmazione

Linguaggio Macchina. Numeri binari. E il linguaggio che il microprocessore comprende. In Esadecimale

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Alfabeto ed elementi lessicali del linguaggio C

Programmazione A.A Costrutti di base. ( Lezione XII, parte I ) Gestione dell input. Prof. Giovanni Gallo Dr.

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Transcript:

Fondamenti di Informatica IL LINGUAGGIO JAVA Sintassi, Semantica, Input, Tipi Elementari e Istruzione Condizionale 1 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 2 tra parentesi graffe e 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) 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 3 corpo-metodo: blocco blocco: sequenza-istruzioni-blocco opt 4 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"); 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-classe definizione-metodo corpo-metodo blocco sequenza-istruzioni-blocco istruzione-blocco istruzione 5 6

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 7 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 8 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 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"; 9 10 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 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 11 Semantica dinamica valutata durante l esecuzione dinamica del codice assegna un valore a ogni espressione 12

Semantica delle istruzioni somma = a + b; Semantica delle istruzioni semplici System.out.println("ciao a tutti"); è 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 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 13 14 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"); Primo esempio di un programma Java Semplicissimo programma che stampa la stringa Ciao. public class FaiCiao System.out.println("Ciao a tutti"); nome dell applicazione sequenza di istruzioni e dichiarazioni il corpo del metodo main è una sequenza di istruzioni e dichiarazioni 15 16 Primo esempio : una versione O-O La versione più object-oriented del programma che stampa la stringa Ciao è la seguente. class FaiCiao Ciao miosaluto = new Ciao(); miosaluto.stampaciao(); Creazione di un oggetto class Ciao public static void StampaCiao() System.out.println("Ciao a tutti"); Lettura di dati da input In Java la lettura di dati da input non è diretta come in C. Useremo una classe non-standard per effettuare operazioni di input da tastiera. Questa classe prende il nome di Console che esporta metodi per leggere interi, reali a doppia precisione (double), stringhe e parole. 17 18

Lettura di dati da input classe Console Di seguito sono indicati i metodi di lettura definiti dalla classe Console Lettura di un numero intero public static int Console.readInt(String prompt) x = Console.readInt( Inserire un intero: ); Lettura di un numero reale public static double Console.readDouble(String s) r = Console.readDouble( Inserire un reale: ); 19 Lettura di dati da input classe Console Lettura di una stringa di caratteri che termina con newline public static String Console.readString() s = Console.readString(); Lettura di una stringa che termina con newline (2) public static String Console.readString(String ) s = Console. readstring( Inserire una stringa ); Lettura di una parola che termina con uno spazio public static String Console.readWord() w = Console.readWord(); 20 Commenti in programmi Java // commento fino a fine linea /* commento che può occupare più linee */ /** commento su più linee che viene estratto dallo strumento che genera automaticamente la documentazione */ 21 Area di un Rettangolo Programma Java che calcola l area di un rettangolo. import corejava.*; public class AreaRettangolo double base, altezza, area; base = Console.readDouble( Base= ); altezza = Console.readDouble( Alt= ); area = base * altezza; System.out.println("Area = " + area); 22 Vogliamo definire una classe Rettangolo che sia più generale e definisca un insieme di operazioni su rettangoli. DATI OPERAZIONI base Rettangolo costruttore Rettangolo() Area() Perimetro() Diagonale() altezza Un programma che crea ed usa oggetti Rettangolo class Rettangolo private double altezza; // variabili d istanza private double base; /* Costruttore : inizializza un oggetto Rettangolo */ public Rettangolo() this.base = Console.readDouble("Inserisci la base: "); this.altezza =Console.readDouble("Inserisci l'altezza: ");..... 23 24

...... /* Calcola l'area del rettangolo. */ public double area() double a; a = this.base * this.altezza; return a; // area del rettangolo /* Calcola il perimetro del rettangolo. */ public double perimetro() double p; // perimetro del rettangolo p = (2 * this.base)+ (2 * this.altezza); return p; // chiude la definizione della classe 25 class TestRettangolo Rettangolo B, C; // due rettangoli double areab; // area del rettangolo B double perimetroc; // perimetro del rettangolo C /* crea i due rettangoli */ B = new Rettangolo(); C = new Rettangolo(); /* calcola e visualizza l'area di B */ areab = B.area(); System.out.println("Area di B = " + areab); /* calcola e visualizza il perimetro di C */ perimetroc = C.perimetro(); System.out.println(" Primetro di C = " + perimetroc); 26 Tipi in Java Nei linguaggi di programmazione di alto livello le variabili e le espressioni sono caratterizzati da un tipo. Un tipo di dati (o tipo) è costituito da un insieme di valori ammissibili un insieme di operatori che possono essere applicati ai valori del tipo I tipi sono importanti perché il significato e la correttezza di molte istruzioni è legata non solo alla forma sintattica delle istruzioni, ma anche a vincoli semantici, che sono definiti tramite tipi. Tipi primitivi in Java Tipi primitivi boolean (1 bit) valori: true o false byte (8 bit ) un intero tra 128 e +127 short (16 bit) un intero tra 32768 e +32767 float (32 bit ) un numero razionale in virgola mobile (9 cifre significative eesponente tra 45 e +38) int (32 bit) un intero di valore compreso tra 2147483648 e +2147483647 double (64 bit) un numero razionale in virgola mobile (18 cifre significative eesponente tra 324 e +308) long (64 bit) un intero di valore compreso tra 223372036854775808 e +9223372036854775807 char (16 bit) un carattere dell alfabeto Unicode 27 28 Tipi primitivi in Java I tipi primitivi non sono rappresentati da classi (efficienza) Hanno dimensione fissata dalla specifica del linguaggio (portabilità) Non esistono i tipi unsigned e i tipi puntatore a. Le classi definiscono i tipi non primitivi (riferimento) Conversione di tipi In Java è possibile effettuare conversione tra variabili che hanno tipi diversi ma compatibili. Conversione implicita int i; short s; i = s + 1; La conversione implicita di tipo si ha nei casi in cui non ci sia perdita di informazione (promozione). int i; long l; l = i + 10; 29 30

Conversione di tipi Nessuna conversione implicita di tipo nei casi in cui ci sia perdita di informazione (errore di compilazione!). : int vintera; double vreale = 3.14159; vintera = vreale; NO! Conversione esplicita vintera = (int)vreale; SI (Narrowing) La conversione esplicita è detta casting. 31 Operatori in Java Operatori aritmetici: somma (+), sottrazione (-), prodotto (*), divisione (/), resto(%), incremento(++), decremento (--), (+=, -=, *=, /=) Operatori relazionali: uguale (==), diverso (!=), maggiore (>), minore (<), minore o uguale (<=), maggiore o uguale (>=) Operatori logici: not (!), or ( ), and (&). Sequenze di escape: \b, \t, \n, \r, \, \, \\ 32 Istruzioni composte Oltre alle istruzioni elementari come l assegnamento, il return, ecc., il linguaggio mette a disposizione del programmatore un insieme di istruzioni composte che servono a controllare il flusso di esecuzione di un programma come le istruzioni if-else, for, while, do-while. Istruzione if-else if (condizione) istruzioni1 else istruzioni2 Istruzione condizionale if-else L istruzione if-else serve per valutare il valore di una espressione logica ed eseguire le operazioni opportune. Il ramo else e le parentesi possono mancare. In questo caso si parla di istruzione if. 33 34 Istruzione if-else ESEMPI if (i >= 0) System.out.println( Valore positivo o nullo ); else System.out.println( Valore negativo ); if (x == 0) y = 10; else y = x +3*z; if (x == 0 & z > x) y= 10; z= z-1; 35