Java: concetti e costrutti base

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità G1 Dati strutturati.
Ripasso R1 Dati strutturati.
Array (vettori) In linguaggio C / C++.
Capitolo 8 Array Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Programmazione in Java Parte I: Fondamenti Lezione 1 Dott. Marco Faella.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Process synchronization
Process synchronization
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Introduzione alla programmazione MIDI
© 2007 SEI-Società Editrice Internazionale, Apogeo
ODMG.
Maurizio Cozzetto, Francesco Sarasini
Introduzione al linguaggio C
Process synchronization
7. Strutture di controllo Ing. Simona Colucci
Programmazione a oggetti
Corso di Reti di Calcolatori Programmazione Java
TIPI PRIMITIVI TIPI STRUTTURATI
JAVA usa una rappresentazione in VIRGOLA MOBILE
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
Java World Cicli e Array.
Classe III A A.s – 2012 Programma di Informatica
Corso Java Cicli e Array.
Programmazione e Laboratorio di Programmazione
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Programmazione e Laboratorio di Programmazione
Java: le basi del linguaggio
Programmazione e Laboratorio di Programmazione
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Definizione di linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
Lucidi della Pof.ssa Pazienza
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Programmazione e Laboratorio di Programmazione
Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Dalla programmazione tradizionale al paradigma OO
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Array (vettori) In linguaggio C / C++.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

Java: concetti e costrutti base Lezione 18b Java: concetti e costrutti base Programmazione MIDI (Prof. Luca A. Ludovico)

Tipizzazione JAVA Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Tipizzazione (type system) Java è un linguaggio «type safe»: previene o avvisa rispetto agli errori di tipo Un errore di tipo è un comportamento errato o non desiderabile del programma causato da una discrepanza tra diversi tipi di dato riguardo alle costanti, variabili e metodi (funzioni) del programma Un linguaggio è considerato type safe se tutti gli errori di tipo vengono rivelati sempre tramite l’operazione di type check Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Esempi di errori di tipo Assegnare a una variabile una costante del tipo errato Invocare una funzione con tipi di dato errati Superare i limiti di un array (out of bound) Invocare un metodo inesistente di un oggetto Accedere ad un campo dati inesistente di un oggetto Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Esempio public class EsempioTipizzazione { public static void main(String[] args) int a; // Dichiara la variabile intera a a = 3.5; // ERRORE! Il valore 3.5 è numerico a virgola // mobile, la variabile a invece è intera } Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Type check Il type check è il controllo dei tipi e del loro corretto utilizzo In generale può avvenire a compile-time o a run-time: a compile-type, esso produce un eseguibile già controllato che non richiede controlli a run-time. Ciò permette un'esecuzione più veloce del programma, a fronte di controlli più severi e limitanti; a run-time, il programmatore ha più libertà ma i controlli vengono eseguiti solo se una porzione di codice viene eseguita, quindi il codice può nascondere un errore che emergerà in altri utilizzi del programma. In Java il type check ha luogo a compile-time Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Tipizzazione statica Java è un linguaggio a tipizzazione statica: il tipo di ogni variabile (numerico intero, numerico a virgola mobile, carattere, ecc.) viene stabilito direttamente nel codice sorgente dove viene assegnato esplicitamente per mezzo di parole chiave apposite (manifest typing) Il programma mantiene in una tabella dei valori tutte le variabili dichiarate dal programmatore, insieme al loro tipo e al valore corrente. Un tentativo di assegnamento di un valore di tipo diverso da quello di una variabile causa un errore terminale. Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Tipi primitivi e tipi strutturati Il linguaggio distingue: tipi primitivi (che definiscono valori atomici) tipi strutturati (che definiscono strutture dati composte). I tipi primitivi sono detti anche tipi atomici e tipi base. Sono definiti nelle specifiche di linguaggio: di ognuno sono noti a priori l'insieme dei valori ammessi e gli operatori supportati. I tipi strutturati sono anche tipi riferimento, cioè definiscono oggetti, e sono classi o interfacce. Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Tipi primitivi (tipi base) Tipo Descrizione Classe contenitore (vedi prossima slide) byte intero con segno a 8 bit Byte short intero con segno a 16 bit Short int intero con segno a 32 bit Integer long intero con segno a 64 bit Long float virgola mobile a 32 bit singola precisione (standard IEEE 754) Float double virgola mobile a 64 bit doppia precisione (standard IEEE 754) Double char carattere singolo Unicode (intero senza segno a 16 bit) Character boolean true o false Boolean Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Classi wrapper per i tipi base I valori dei tipi base non sono oggetti. Tuttavia, per ogni tipo base è definita una corrispondente classe (definita in gergo tipo wrapper o tipo contenitore) nel package java.lang, la quale permette di incapsulare dentro un oggetto un valore di tipo primitivo. Opportuni metodi della classe wrapper permettono di ottenere l'oggetto che incapsula un certo valore, e il valore incapsulato da un certo oggetto. Dalla versione 5.0 in poi, sono supportati l'autoboxing e l'unboxing, che permettono di convertire da tipo primitivo a corrispondente classe wrapper e viceversa. Non si tratta di una vera conversione, ma di una sintassi che «nasconde» la creazione di un oggetto della classe wrapper Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Tipi strutturati (tipi riferimento) I tipi strutturati includono le classi per la gestione delle stringhe, gli array e le collezioni (liste, mappe, ecc.) In generale i tipi strutturati sono definiti dall'utente (user-defined), cioè dal programmatore. Al contrario i tipi base sono predefiniti (built-in) Fanno eccezione le classi degli array, definite nelle specifiche di linguaggio pur trattandosi di tipi strutturati Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Array Un array (o vettore) è una struttura dati complessa, statica e omogenea, usata in molti linguaggi di programmazione Indice Celle Contiene contemporaneamente più valori dello stesso tipo, che è detto tipo base dell’array Ogni posizione nell’array è detta cella e può contenere uno e un solo valore Le celle di un array sono identificate da un numero intero detto indice che parte da 0 per la prima cella 1 2 3 4 5 6 7 8 9 13 25 -5 11 56 -46 -12 67 Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Dichiarazione di array Per dichiarare un array: tipoBase[] nomeArray; Per specificare la dimensione, cioè il numero di celle: nomeArray = new tipoBase[numCelle]; In Java, la dimensione si può recuperare con il metodo length Scrittura compatta tipoBase[] nomeArray = new tipoBase[numCelle]; Per accedere alla cella ad un dato indice: System.out.println(nomeArray[indice]); (lettura) nomeArray[indice] = valore; (assegnamento, scrittura) Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Inizializzazione di array I valori delle celle possono essere preimpostati in fase di dichiarazione con la sintassi (valida per int, char e string): tipoBase[] nomeArray = {val1, val2, …, valN}; Per altri tipi base (ad esempio boolean): tipoBase[] nomeArray = new tipoBase[] {val1, val2, …, valN}; Non è necessario dimensionare esplicitamente l’array perché la dimensione viene evinta dal numero di valori elencati. Si ricordi che si tratta di una struttura dati statica, le cui dimensioni dopo la dichiarazione non possono variare. Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Array multidimensionali Un array può avere più di una dimensione. In tal caso spesso viene spesso definito matrice (per similitudine con il significato matematico) Un array multidimensionale ha due (o più) indici. Ogni indice rappresenta una dimensione. Ogni elemento è identificato dalla combinazione di valori di tutti gli indici del vettore. Esempi di dichiarazione e assegnamento: tipoBase[][] nomeArray = new tipoBase[dim1][dim2]; nomeArray[indice1][indice2] = valore; Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

JAVA Strutture di controllo Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Strutture di controllo La sintassi Java è derivata da C/C++ Strutture di controllo selettive: if … else switch … case Strutture di controllo iterative while do … while for for each [agisce su un array o collezione] Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Switch … case Utile per selezionare una tra diverse alternative sulla base di uno specifico valore int, short, byte o char String è ammesso solo da Java 7 in poi Forma base: switch (espressione) { case costante1: istruzioniRamo1; break; case costante2: istruzioniRamo2; break; ... default: istruzioniRamoDefault; break; } Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Switch … case Ogni gruppo di righe di codice che inizia con la parola riservata case e termina con break è un case group. La parola case è seguita da un valore costante (tipizzato come la variabile nello switch) e da “:” La parola chiave break provoca l’uscita dal costrutto Il gruppo default è opzionale, e viene invocato solo se non si trova corrispondenza con altri rami Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Array e strutture di controllo iterativo Lettura iterativa di tutti gli elementi di un array while o for, basandosi sulla dimensione dell’array foreach, ciclando su tutti gli elementi dell’array Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Gestione delle eccezioni La gestione delle eccezioni in Java viene trattata dalla sintassi try ... catch ... finally simile a quella del C++ int firstArg; if (args.length > 0) { try { firstArg = Integer.parseInt(args[0]); } catch (NumberFormatException e) { System.err.println("Argument must be an integer"); System.exit(1); Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base

Esempi della lezione MIDIPitchArray.java MIDIPitchToName.java costrutto switch … case argomenti del main MIDIPitchScale.java costrutti if … else, for e for each applicazione di algoritmi semplici BinaryParser.java funzioni sulle stringhe gestione delle eccezioni con try ... catch Programmazione MIDI (Prof. Luca A. Ludovico) 18b. Java: concetti e costrutti base