Il Linguaggio Java. Concetti e costrutti di base

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

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

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

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

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

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

Le basi del linguaggio Java

Conversioni fra Tipi di Dati. Luca Abeni

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

LINGUAGGI DI PROGRAMMAZIONE!

Il linguaggio C. Notate che...

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

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Linguaggio C - sezione dichiarativa: costanti e variabili

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Variabili. Tipi di dati di base. Variabili. Variabili

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Programmazione in Java (I modulo)

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Primi passi col linguaggio C

Programmazione Orientata agli Oggetti in Linguaggio Java

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Programmazione Java Tipi, Variabili e scope, Operatori, Conversione e Promozione

Corso di Fondamenti di Informatica

Definizione di una classe

R. Focardi 2002 Laboratorio di Ingegneria del Software Slide 1. Applicazioni = programmi stand-alone

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

La sintassi del C APPENDICE H

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Tipi primitivi ed Istruzioni in Java

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

3. La sintassi di Java

Laboratorio di informatica Ingegneria meccanica

La velocità di una carovana

5 - Istruzioni condizionali

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Tipi ed espressioni. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 5. Carla Limongelli Settembre 2007

SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Il linguaggio C. Caratteristiche generali

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Le command line di Java

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Programmazione Procedurale in Linguaggio C++

Introduzione alla programmazione in C

Caratteristiche di un linguaggio ad alto livello

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Operazioni numeriche - Input

Programmazione ad oggetti

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Java Native Interface Appunti

Programmazione, 4 a lezione

Linguaggio C Espressioni e operatori

Rappresentazione dell Informazione

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 17/01/2014/ Foglio delle domande / VERSIONE 1

La codifica binaria. Informatica B. Daniele Loiacono

Variabili e tipi di dato

Il Linguaggio Java. Classe. Classi ed oggetti

Strutture dati e loro organizzazione. Gabriella Trucco

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Lab 02 Tipi semplici in C

Struttura di un programma Java

Somma di numeri binari

Rapida Nota sulla Rappresentazione dei Caratteri

Programmazione Procedurale in Linguaggio C++

Java: Compilatore e Interprete

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Le variabili. Olga Scotti

Codifica. Rappresentazione di numeri in memoria

Unità Didattica 2 Rappresentazione dei Dati

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Il linguaggio PHP. Elementi base

IL PROBLEMA DEL PROGETTO

Il linguaggio C - Introduzione

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

LabVIEW parte II. Ing. Gianfranco Miele November 3, 2010

Corso Programmazione 1 Capitolo 01: Concetti Elementari

Espressioni ed operatori

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano. Murano Aniello LASD 05/06 Seconda Lezione.

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Laboratorio di Informatica

Informatica (A-K) 7. Linguaggio C - 1

INTRODUZIONE INTRODUZIONE JAVA JAVA

Programmazione AA

Excel & VBA. Excel e Visual Basic for Application

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Linguaggi ad oggetti (object oriented) LINGUAGGI DI PROGRAMMAZIONE: PARADIGMI DI PROGRAMMAZIONE. Programmazione ad oggetti

Programmazione ad oggetti

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Tipi di dati fondamentali

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Transcript:

Il Linguaggio Java Concetti e costrutti di base Hello world /** * La classe Ciao implementa un applicazione che * semplicemente scrive Ciao! sullo standard * output */ public class Ciao { public static void main(string[] args) { System.out.println( Ciao!"); //Display the string. TIGA 2

Commenti Java ha tre tipi di commenti, ognuno specificato da un diverso limitatore: /** documentation */ (doc comment) // text /* text */ TIGA 3 La classe public class Ciao { public static void main(string[] args) { System.out.println( Ciao!"); In Java non esistono funzioni e variabili globali: ogni metodo o variabile è definito all interno di una classe Lo scheletro di un programma Java consiste nella definizione di una classe TIGA 4

Il metodo main public class Ciao { public static void main(string[] args) { System.out.println( Ciao!"); Il metodo main è l entry point di un applicazione Java Il metodo main è caratterizzato da tre modificatori public: il metodo main può essere invocato (è visibile) dall esterno static: il metodo main è un metodo di classe void: il metodo main non ha valore di ritorno TIGA 5 Compilazione ed esecuzione codice sorgente (.java) Compilatore (javac) bytecode (.class) librerie (.class) COMANDI > javac Ciao.java > java Ciao Interprete (java) Programma in esecuzione TIGA 6

Java Virtual Machine Il bytecode è un linguaggio intermedio indipendente dalla piattaforma che viene interpretato dall interprete Java Il bytecode è il linguaggio macchina della Java Virtual Machine (JVM) L interprete implementa la JVM TIGA 7 Write once, run anywhere write once, run anywhere TIGA 8

La piattaforma Java La piattaforma Java è solo SW ed è costituita da JVM Java API (packages) TIGA 9 La classe BasicDemo public class BasicsDemo { public static void main(string[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; System.out.println("Sum = " + sum); variabili operatori statement TIGA 10

Variabili DICHIARAZIONE DI UNA VARIABILE int sum = 0; Tipo Nome della variabile Inizializzazione Il nome di una variabile deve essere un identificatore Java, cioè una sequenza, possibilmente illimitata, di caratteri Unicode che inizia con una lettera Ogni variabile deve essere di un tipo dichiarato (tipizzazione forte) TIGA 11 Identificatori Identifier: IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral IdentifierChars: JavaLetter IdentifierChars JavaLetterOrDigit JavaLetter: any Unicode character that is a Java letter JavaLetterOrDigit: any Unicode character that is a Java letter-or-digit ESEMPI: pippo, i3, αβγ, MAX_VALUE TIGA 12

Identificatori Java letter include Lettere maiuscole della codifica ASCII Latin: A Z (\u0041 \u005a) Lettere minuscole della codifica ASCII Latin: a z (\u0061 \u007a) l ASCII underscore: _ (\u005f) Il segno di dollaro: $ (\u0024) Java digit digits ASCII: 0-9 (\u0030 \u0039). TIGA 13 Nomi delle variabili public class BasicsDemo { public static void main(string[] args) { int sum = 0; for (int current = 1; current <= 10; current++) { sum += current; System.out.println("Sum = " + sum); nome qualificato (qualified name) nome semplice (simple name) TIGA 14

Tipi di dato Type: PrimitiveType ReferenceType PrimitiveType: NumericType boolean IntegralType: one of byte short int long char FloatingPointType: one of float double NumericType: IntegralType FloatingPointType TIGA 15 Tipi Primitivi KEYWORD Descrizione Size/Format integer byte byte-length integer 8 bit, compl. a due short short integer 16 bit, compl. a due int integer 32 bit, compl. a due long long integer 64 bit, compl. a due real float Single precision floating point 32 bit, IEEE754 double Double precision floating point 64 bit, IEEE754 altri tipi boolean valore booleano (true, false) true, false char carattere 16 bit, Unicode TIGA 16

Tipi Primitivi Java definisce la dimensione dei tipi primitivi Java non ha l operatore sizeof I tipi numerici sono tutti con segno Il tipo boolean ha due valori: true e false TIGA 17 Interi: letterali Letterale Tipo 178 int 0123 int (octal) 0x1FA int (hex) 8864L long 0123L long (octal) 0x1FAL long (hex) Letterale Tipo 37.266 double 37.266D double 87.363F float 26.77e3 double ' c ' char true boolean false boolean TIGA 18

Floating Point L intervallo di rappresentabilità dei float è ±3.40282347E+38F, con 6 7 cifre decimali significative L intervallo di rappresentabilità dei double è ±1.79769313486231570E+308, con 15 cifre decimali significative In accordo alla specifica IEEE 754 ci sono tre costanti Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NaN TIGA 19 Floating point: portabilità Il problema: Java usa 64 bit per memorizzare un double ma alcuni processori utilizzano registri floating-point a 80 bit DUE APPROCCI ALTERNATIVI: Sfruttare le risorse hw per le operazioni intermedie Vantaggi: maggiore precisione ed assenza di overflow Svantaggi: i risultati sono diversi se si lavora sempre su 64 bit (problema di portabilità) Troncare tutte le operazioni, anche quelle intermedie, a 64 bit Vantaggi: riproducibilità dei risultati Svantaggi: minore precisione, overflow, prestazioni ridotte (il troncamento richiede tempo!) TIGA 20

Floating-point: portabilità Approccio di Java Per default, le computazioni possono sfruttare la precisione estesa per le computazioni intermedie Se si vogliono risultati riproducibili allora si deve esplicitamente dichiarare di voler lavorare in strict floating-point (64 bit) anche nelle operazioni intermedie Esempio: public static strictfp void main(string[] args) TIGA 21 Operatori aritmetici Gli operandi aritmetici possono essere usati solo con operandi numerici (*) Operatore Uso Descrizione + op1 + op2 Somma op1 e op2 - op1 - op2 Sottrae op2 da op1 * op1 * op2 Moltiplica op1 per op2 / op1 / op2 Divide op1 per op2 % op1 % op2 Calcola il resto della divisione di op1 per op2 (*) l operatore + permette anche di concatenare le stringhe TIGA 22

Operatori aritmetici Operatore Uso Descrizione ++ op++ Valuta op e lo incrementa di 1 ++ ++op Incrementa op di 1 e poi lo valuta -- op-- Valuta op e lo decrementa di 1 -- --op Decrementa op di 1 e poi lo valuta + +op Se op è byte, short, o char viene promosso a int - -op Opposto di op TIGA 23 Operatori di relazione Operatore Uso Ritorna true se > op1 > op2 op1 è maggiore di op2 >= op1 >= op2 op1 è maggiore o uguale di op2 < op1 < op2 op1 è minore di op2 <= op1 <= op2 op1 è minore o uguale di op2 == op1 == op2 op1 e op2 sono uguali!= op1!= op2 op1 e op2 non sono uguali TIGA 24

Operatori logici Operatore Uso Ritorna true se && op1 && op2 op1 e op2 sono entrambi true, in tal caso valuta op2 op1 op2 o op1 o op2 è true, valuta op2 se op1 è false!! op op è false & op1 & op2 op1 e op2 sono entrambi true, valuta sempre op1 ed op2 op1 op2 o op1 o op2 è true, valuta sempre op1 ed op2 ^ op1 ^ op2 se op1 e op2 sono diversi TIGA 25 Operatori shift e bitwise Operator Use Operation shift >> op1 >> op2 trasla i bit di op1 a destra di op2 << op1 << op2 trasla i bit di op1 a sinistra di op2 >>> op1 >>> op2 trasla i bit di op1 a destra di op2 (unsigned) bitwise & op1 & op2 and op1 op2 or ^ op1 ^ op2 xor ~ ~op2 complement TIGA 26

Operatori di assegnamento (scorciatoie) Operatore Uso Equivalente a += op1 += op2 op1 = op1 + op2 -= op1 -= op2 op1 = op1 - op2 *= op1 *= op2 op1 = op1 * op2 /= op1 /= op2 op1 = op1 / op2 %= op1 %= op2 op1 = op1 % op2 &= op1 &= op2 op1 = op1 & op2 = op1 = op2 op1 = op1 op2 ^= op1 ^= op2 op1 = op1 ^ op2 <<= op1 <<= op2 op1 = op1 << op2 >>= op1 >>= op2 op1 = op1 >> op2 >>>= op1 >>>= op2 op1 = op1 >>> op2 TIGA 27 Altri operatori Operator Use Description? : op1? op2 : op3 Se op1 è true, ritorna op2. Altrimenti, ritorna op3. [] type [] Dichiara un array di tipo type [] type[op1] Crea un array con op1 elementi [] op1[op2] Accede l'elemento di indice op2 dell'array op1. op1.op2 È un riferimento al membro op2 di op1 () op1(params) Dichiara o chiama il metodo op1 con la lista di parametri params (type) (type) op1 Converts op1 al tipo type new new op1 Crea un nuovo oggetto o un array instanceof op1 instanceof op2 Ritorna true se op1 è un'istanza di op2 TIGA 28

Nomi delle variabili Il nome semplice di una variabile deve rispettare le seguenti regole: Deve essere un identificatore Deve essere diverso da una keyword, dai letterali booleani true, false e dalla parola riservata null Deve essere unico all'interno del suo scope I nomi delle variabili rispettano le seguenti convenzioni: Iniziano per lettera minuscola Se il nome è costituto da più parole, le parole sono concatenate ed iniziano, eccetto la prima, per lettera maiuscola (Es. isready) TIGA 29 Variabili locali finali final int afinalvarr = 0; Il valore di una variabile final non può essere cambiato dopo che è stato inizializzato Una variabile final è l'equivalente delle costanti in altri linguaggi di programmazione L'inizializzazione di una variabile locale final può essere differito final int afinalvar; afinalvar = 0; TIGA 30

Conversioni di tipo Contesti di conversione Assegnamento Invocazione di metodi Cast Conversione a stringa Promozione numerica Categorie di conversione: Conversione identità Estensione e Riduzione di un tipo primitivo Estensione e Riduzione di un tipo riferimento Conversione a stringa Conversione di tipo Value set TIGA 31 Estensione/riduzione di un tipo primitivo char byte short int long float double senza perdita di informazione con possibile perdita di precisione TIGA 32

Assegnamento (I) variabile = espressione Il tipo dell espressione viene convertito al tipo della variabile Categorie di conversione permesse: identità ed estensione Se il tipo dell espressione non può essere convertito al tipo della variabile allora si ha un errore di compilazione può essere convertito, allora l espressione è assegnabile alla variabile TIGA 33 Assegnamento (II) Un assegnamento può dare luogo anche ad una conversione per riduzione se l espressione è un espressione costante di tipo byte, short, char o int il tipo della variabile è byte, short o char. il valore dell espressione (*) è rappresentabile nel tipo della variabile. (*) Che è noto a compile-time perché l espressione è costante TIGA 34

Conversione a stringa int r = 1; println( Risultato + r); La conversione a stringa viene applicata agli operandi dell operatore + quando uno di questi due è una stringa l altro operando viene convertito a stringa e viene costruita una nuova stringa che é la concatenazione delle due stringhe; i caratteri dell operando di sinistra precedono quelli dell operando di destra Ogni tipo può essere convertito a stringa TIGA 35 Operatore cast (TipoPrimitivo)Espressione Il tipo dell espressione viene convertito al tipo esplicitamente indicato Il cast permette di convertire un tipo primitivo in un altro tipo primitivo Categorie di conversione permesse: conversioni identità, conversioni per estensione e conversioni per riduzione Non tutti i cast sono permessi (alcuni cast possono produrre un errore a compile-time). i cast boolean NumericType e NumericType boolean non sono permessi TIGA 36

Promozioni numeriche (I) Sono applicate agli operandi degli operatori aritmetici. Sono usate per convertire gli operandi ad un tipo comune in modo da poter eseguire l operazione Permettono le categorie di conversione identità ed estensione Sono di due tipi Promozioni numeriche unarie Promozioni numeriche binarie TIGA 37 Promozioni numeriche unarie La promozione numerica unaria viene applicata a l operando della selezione per indice (array) [] l operando dell operatore unario più +, e ~ (complemento bit a bit ) ciascun operando, separatamente, degli operatori di traslazione >>, << e >>> (il tipo dell'espressione è dato dal tipo promosso dell'operando di sinistra) secondo le seguenti regole: se l operando è byte, short o char, esso viene promosso a int per mezzo di una conversione per estensione altrimenti l operando non viene modificato TIGA 38

Promozioni numeriche binarie La promozione numerica binaria viene applicata agli operandi degli (altri) operatori aritmetici, compreso l operatore condizionale? :, secondo le seguenti regole se un operando è double, l altro operando è convertito a double; altrimenti se un operando è float l altro viene convertito a float; altrimenti se un operando è long, l altro viene convertito a long; altrimenti entrambi gli operandi sono convertiti a int TIGA 39 Statement Block EmptyStatement ExpressionStatement SwitchStatement DoStatement BreakStatement ContinueStatement ReturnStatement LabeledStatement IfThenStatement IfThenElseStatement WhileStatement ForStatement SynchronizedStatement ThrowStatement TryStatement TIGA 40

Blocco Block: { BlockStatements opt BlockStatements: BlockStatement BlockStatements BlockStatement BlockStatement: LocalVariableDeclarationStatement ClassDeclaration Statement TIGA 41 Controllo del flusso TIPO DI ISTRUZIONE ripetitive KEYWORD while, do-while, for condizionali if-else, switch-case gestione eccezioni try-catch-finally, throw salto break, continue, label:, return TIGA 42

Variabili locali LocalVariableDeclarationStatement: LocalVariableDeclaration ; LocalVariableDeclaration: final opt Type VariableDeclarators VariableDeclarators: VariableDeclarator VariableDeclarators, VariableDeclarator VariableDeclarator: VariableDeclaratorId VariableDeclaratorId = VariableInitializer VariableDeclaratorId: Identifier VariableDeclaratorId [ ] VariableInitializer: Expression ArrayInitializer TIGA 43 Scope di una variabile Lo scope di una variabile definisce la regione di programma nell'ambito della quale la variabile può essere riferita per mezzo del suo nome semplice determina il momento in cui il sistema alloca e dealloca, rispettivamente, memoria alla variabile TIGA 44

Scope di una variabile locale FLUSSO DI CONTROLLO creazione ed inizializzazione delle variabili locali { int b = 1; int a = 3*b; // statement lo scope della variabile si estende dalla dichiarazione alla fine del blocco le variabili locali cessano di esistere TIGA 45