Introduzione ai tipi parametrici (Generics) in Java. Algoritmi e Laboratorio a.a Lezioni. Nota linguistica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione ai tipi parametrici (Generics) in Java. Algoritmi e Laboratorio a.a Lezioni. Nota linguistica"

Transcript

1 Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR Algoritmi e Laboratorio a.a Lezioni prof. Elio Giovannetti Lezione 18 Tipi generici in Java 5 e uso di void* in C (a.a. 2007). versione 06/11/09 Quest' opera è pubblicata sotto una Licenza Creative Commons Attribution-NonCommercial-ShareAlike 2.5. Introduzione ai tipi parametrici (Generics) in Java Una classe può essere definita come dipendente da parametri che sono tipi invece che valori di un tipo. Essi compaiono fra "parentesi angolari" subito dopo il nome della classe. Tali parametri possono poi essere usati all'interno della classe come se fossero dei tipi ordinari. public class Coppia<Tipo1, Tipo2> { private Tipo1 primo; private Tipo2 secondo; Nota: nella definizione del costruttore non si scrivono i parametri-tipi fra parentesi angolari. public Coppia(Tipo1 p, Tipo2 s) { primo = p; secondo = s; public Tipo1 primo() { return primo; public Tipo2 secondo() { return secondo; 06/11/09 E. Giovannetti - AlgELab Lez Creazione di oggetti di classi parametriche. All'atto dell'uso del nome della classe come tipo di una variabile, di un parametro o di un risultato, si possono passare alla classe parametrica i tipi effettivi. All'atto della creazione di un oggetto della classe si possono passare al costruttore i tipi effettivi. Tali argomenti-tipi effettivi non possono essere tipi primitivi. Coppia<String, Integer> coppia = new Coppia<String,Integer>("Prog 1", 30); int n = coppia.secondo(); String s = coppia.primo(); Coppia<int, double> c; Errore di compilazione! Nota linguistica Invece di "parametro-tipo" e "argomento-tipo" si usa spesso dire "parametro di tipo" e "argomento di tipo"; si potrebbe anche dire "tipo-parametro" e "tipo-argomento". I parametri-tipi vengono anche detti "tipi generici", e una classe, interfaccia o metodo dipendente da parametri-tipi viene anch'essa detta (classe, interfaccia, ecc.) generica. Ovviamente non si confondano le espressioni "parametro di tipo" e "parametro di tipo A"! I parametri-tipi sono dei parametri simili ai parametri normali, ma di un altro tipo: è come se fossero di un tipo chiamato Tipo o magari Type! Vedi slide seguente. 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Nota linguistica Cioè è come se la classe Coppia avesse la forma: public class Coppia(Type T1, Type T2) { T1 primo; T2 secondo; public Coppia(Type T1, Type T2, T1 p, T2 s) { primo = p; secondo = s; e come se l'invocazione del costruttore avesse la forma: new Coppia(String, Integer, "Prog 1", 30); dove si noti che gli ultimi due argomenti devono avere tipi rispettivamente uguali ai due tipi passati come primi due argomenti. Invece di tale sintassi "uniforme", i linguaggi Java, C#, ecc. usano (con alcune variazioni) la sintassi a parentesi angolari. 06/11/09 E. Giovannetti - AlgELab Lez Tipi "crudi" (raw, pronuncia "ro"). Si può anche creare un oggetto di una classe parametrica senza passare argomenti-tipi. Il compilatore genera un warning, e sostituisce automaticamente ai parametri-tipi il tipo Object. Coppia coppia = new Coppia("Prog 1", 30); String s = coppia.primo(); primo(); Errore! Un valore di tipo "riferimento a Object" non può essere messo in una variabile di tipo String. Occorre fare un cast: String s = (String) coppia.primo(); Il tipo Coppia ottenuto dal tipo parametrico omettendo gli argomenti-tipi si dice che è un raw type. 06/11/09 E. Giovannetti - AlgELab Lez

2 I tipi raw: nota. I tipi crudi (raw) sono stati introdotti in Java per pure ragioni di retro-compatibilità. Il loro uso è fortemente sconsigliato. In future versioni di Java essi potrebbero scomparire. Metodi generici Per poter ottenere campi e metodi effettivi di una classe parametrica occorre che essi vengano "istanziati". Cioè il campo o metodo dipendente da un parametro-tipo della classe non può essere statico. All'interno di qualsiasi classe si possono tuttavia definire metodi sia statici che dinamici dipendenti direttamente da parametri-tipi. static <T1,T2> T2> void mymethod(t1 x, T2 y) { ; <T> T myinstancemethod(t x) { All'atto della chiamata non si deve passare al metodo alcun argomento-tipo: ciò viene fatto automaticamente dal compilatore/esecutore: mymethod("ada", Color.RED); 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Metodi generici in C# Si noti che invece C# adotta un approccio più uniforme (e quindi forse più chiaro): all'atto della chiamata gli argomenti-tipi devono essere sempre passati, sia che si tratti di un costruttore di una classe "generica", sia che si tratti di un metodo "generico". In C# si scriverebbe dunque: mymethod<string, Color>("Ada", Color.RED); i progettisti di Java hanno evidentemente pensato che è più comodo per il programmatore non dover scrivere l'informazione che il compilatore può ricavarsi da solo. Nota: esistono linguaggi in cui il programmatore non specifica (quasi) nessun tipo, e i tipi vengono inferiti (cioè ricavati) dal compilatore o dall'esecutore. Array generici (un aspetto delicato). Si possono usare, ma non creare, array generici. è perfettamente definibile un metodo che verifichi l'uguaglianza di due array (pieni) di oggetti di un tipo generico (non primitivo): public static <T> boolean uguali(t[] a, T[] b) { if(b.length!= n) return false; if(!a[i].equals(b[i])) return false; return true; 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Array generici (un aspetto delicato). Non si può invece definire un metodo che crea e restituisce un nuovo array uguale ad un array di elementi di un tipo generico : static <T> T[] copia(t[] a) { T[] nuovoarray = new T[n]; errore di compilazione! 06/11/09 E. Giovannetti - AlgELab Lez Array generici (continua) Si può scrivere: public static <T> Object[] copia(t[] a) { Object[] nuovoarray = new Object[n]; il metodo restituisce un array di Object, di scarsa utilità perché poi il cast da un array di Object ad un array di tipo più specifico fallisce a runtime: String[] ar = {"Ada", "Carlo", ; String[] arcopy = (String[]) copia(ar); A runtime: eccezione di cast! 06/11/09 E. Giovannetti - AlgELab Lez

3 Array generici (continua) Se si cerca di inglobare il cast nel metodo: public static <T> T[] copiawrong(t[] a) { T[] nuovoarray = (T[]) new Object[n]; poiché, dopo il controllo del compilatore, il tipo T viene sostituito a runtime dal tipo Object, il metodo restituisce in realtà un array di Object, come la versione prec.; quindi: Object[] cop = copiawrong(new String[] {"qui", "quo"); si esegue correttamente; String[] cop = copiawrong(new String[] {"qui", "quo"); compila correttamente ma genera un'eccezione di ClassCast. 06/11/09 E. Giovannetti - AlgELab Lez Array generici in Java (continua) Si noti che invece, sia in Java che in C#, i seguenti cast si compilano ed eseguono correttamente, perché l'array è stato generato come un array della classe più particolare. Object[] oa = new String[10]; String[] sa = (String[]) oa; Point[] pa = new ColorPoint[10]; ColorPoint[] cpa = (ColorPoint[]) pa; ecc. 06/11/09 E. Giovannetti - AlgELab Lez Copia di un array In conclusione un metodo generico di copia di array si può definire solo facendogli restituire un array di Object, e allora è inutile che abbia un argomento di tipo generico; tanto vale usare sempre Object: public static Object[] copia(object[] a) { Object[] nuovoarray = new Object[n]; Array generici (continua) static <T> boolean uguali(t[] a, T[] b) { if(n!= b.length) return false; for(int i = 0; i < n; i++) if(!a[i].equals(b[i])) return false; return true; è invece corretto! Il tipo parametro effettivo da sostituire a T non può essere un tipo primitivo. Si può quindi scrivere: String[] ar1 = {"Ada","Leo",; String[] ar2 = System.out.println(uguali(ar1, ar2)); ma non si può scrivere: int[] ar1 = {11,22,33,; int[] ar2 = System.out.println(uguali(ar1, ar2)); 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Vincoli sui parametri-tipi Un parametro di tipo può essere sottoposto a vincoli: si può richiedere che il tipo sia una sottoclasse di una classe data o che implementi un'interfaccia data. Esempi: class CorsoSpeciale<S extends Studente> { class SearchTree<E extends Comparable<E>> { class ArrayUtil { public static <T extends Comparable<T>> void isort(t[] a) { Nota: nell'espressione dei vincoli su parametri-tipi si deve usare la parola extends sia per l'effettivo extends che per l'implements. Ad esempio, poiché Comparable<E> è un'interfaccia, il significato dei vincoli su E e su T qui sopra è in realtà implements. 06/11/09 E. Giovannetti - AlgELab Lez Vincoli sui parametri-tipi Quando i parametri di tipo sono più d'uno, ognuno di essi può essere sottoposto a vincoli differenti, eventualmente uno dipendente dall'altro. public interface ObjectWithKey<K> { K getkey(); public class Bst<K extends Comparable<K>, E extends ObjectWithKey<K>> { La classe Bst (Binary Search Tree) è un albero di ricerca di elementi di tipo E, con il vincolo che E implementi l'interfaccia ObjectWithKey<K>, cioè Oggetto con chiave di tipo K, e che a sua volta K implementi l'interfaccia Comparable<K>, cioè gli oggetti di tipo K siano confrontabili fra di loro. 06/11/09 E. Giovannetti - AlgELab Lez

4 Tipi-intersezione nei vincoli L'unico punto della sintassi Java che permette di scrivere esplicitamente un tipo intersezione è proprio nell'esprimere i vincoli sui parametri-tipi. interface Reader { void readbook(); interface Writer { void writebook(); class CreativeSchool <T extends Reader & Writer > { void addstudent(t st) { La classe CreativeSchool dipende da un parametro-tipo che può essere un qualunque sottotipo del tipo-intersezione Reader & Writer, dove il simbolo "&" denota l'intersezione. 06/11/09 E. Giovannetti - AlgELab Lez Java permette vincoli ancora più flessibili (non richiesto all'esame) public class BST<K extends Comparable<? super K>, E extends ObjectWithKey<K>> { La classe K delle chiavi deve possedere un metodo di confronto CompareTo, definito o nella classe stessa K, oppure in una superclasse (cioè classe-base) di K. Supponiamo che la classe IdStudente implementi l'interfaccia Comparable<IdStudente>, contenendo un metodo int compareto(idstudente altroidstud) Una classe IdLaureando, che sia derivata da IdStudente, soddisfa anch'essa al vincolo Java di cui sopra, perché eredita il metodo compareto dalla superclasse IdStudente. Non soddisfa invece al vincolo più forte nella slide precedente, a meno che IdLaureando implementi Comparable<IdLaureando> definendo anch'essa un proprio metodo compareto. 06/11/09 E. Giovannetti - AlgELab Lez Java: alberi binari con classe Nodo interna. Classi parametriche e classi interne private class Node { E element; Node left, right; Node(E element, Node left, Node right) { this.element = element; this.left = left; this.right = right; private Node root; La classe interna Node, non essendo statica, può utilizzare il tipo parametro E della classe BinTree. 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Java: classi interne e metodi statici. I metodi statici della classe BinTree non possono utilizzare la classe interna Node. Il metodo: int height(node nd) { if(nd == null) return -1; else return 1 + max(height(nd.left),height(nd.right)); non può essere statico, poiché la classe Node, tipo del parametro nd, non è statica; esso deve quindi essere dichiarato (come metodo di istanza) nella classe BinTree. (inoltre una classe interna non statica non può contenere membri statici) 06/11/09 E. Giovannetti - AlgELab Lez Classi annidate statiche in Java private static class Node<E> { E element; Node<E> left, right; Node(E element, Node<E> left, Node<E> right) { this.element = element; this.left = left; this.right = right; La classe Node, essendo statica, non può utilizzare il tipo parametro E della classe BinTree. Deve perciò a sua volta prendere un argomento-tipo, che abbiamo di nuovo chiamato E, ma cui si sarebbe potuto dare un nome diverso (ad es. EN)! 06/11/09 E. Giovannetti - AlgELab Lez

5 Classi annidate statiche in Java (fine) private static class Node<EN> { EN element; Node<EN> left, right; private Node<E> root; // public BinTree() { root = null; Tipi parametrici in C In C i tipi parametrici possono essere realizzati per mezzo del tipo puntatore a un tipo qualunque, che si indica (in modo piuttosto incongruo) come void* (puntatore a void). il file coda.h typedef struct CodaStruct * Coda; Coda nuovacoda(); int isempty(coda q); void accoda(coda q, void* e); void* primo(coda q); void* estraiprimo(coda q); 06/11/09 E. Giovannetti - AlgELab Lez /11/09 E. Giovannetti - AlgELab Lez Tipo astratto parametrico in C: implementazione. Nel file coda.c basta sostituire ovunque string con void*. #include "coda.h" struct CodaStruct { void** elementi; puntatore ad (array di) elementi di tipo void* ; Coda nuovacoda() { Coda q = (Coda) malloc(); q->elementi = (void**) malloc((sizeof(void*)) * ); return q; 06/11/09 E. Giovannetti - AlgELab Lez Tipo astratto parametrico in C: utilizzo. Il tipo Coda può ora essere utilizzato per costruire code di elementi di qualunque tipo. La sola differenza nell'utilizzo è che quando si estrae un elemento dalla coda occorre fare il cast esplicito al tipo dell'elemento. Coda unacoda = nuovacoda(); accoda(unacoda, "Paperino"); accoda(unacoda, "Qui"); char* s = (char*) estraiprimo(unacoda); unacoda = nuovacoda(); accoda(unacoda, unostudente); Studente st = (Studente) estraiprimo(unacoda); 06/11/09 E. Giovannetti - AlgELab Lez Osservazione. Essendo il tipo dell'elemento definito come puntatore, una coda di elementi di un tipo semplice (int, double, ecc.) può essere realizzata solo allocando l'elemento sullo heap: ciò equivale a "impacchettare" il tipo semplice in un oggetto, come in Java un int in un Integer. int* newint(int n) { int* p1 = (int *) malloc(sizeof(int)); *p1 = n; return p1; accoda(unacoda, newint(3)); accoda(unacoda, newint(5)); int* p2 = (int*) estraiprimo(unacoda); 06/11/09 E. Giovannetti - AlgELab Lez

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

Dettagli

Nota linguistica. Algoritmi e Laboratorio a.a Lezioni. Valori e tipi. Astrazione e rappresentazione (Prog. 1)

Nota linguistica. Algoritmi e Laboratorio a.a Lezioni. Valori e tipi. Astrazione e rappresentazione (Prog. 1) Nota linguistica Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni Nelle slides seguenti usiamo talvolta

Dettagli

Una definizione induttiva di albero binario astratto. Algoritmi e Laboratorio a.a Lezioni. Notazione lineare infissa per alberi binari.

Una definizione induttiva di albero binario astratto. Algoritmi e Laboratorio a.a Lezioni. Notazione lineare infissa per alberi binari. Una definizione induttiva di albero binario astratto Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2006-07 Lezioni

Dettagli

Corso di Fondamenti di Informatica I

Corso di Fondamenti di Informatica I Corso di Fondamenti di Informatica I Generics in Java Fabio Patrizi, Silvia Bonomi Dipartimento di Ingegneria Informatica, Automatica e Gestionale Facoltà di Ingegneria dell Informazione, Informatica e

Dettagli

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

Programmazione I - corso B a.a prof. Viviana Bono Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 12 Riepilogo e complementi sui tipi Ripasso del sistema di tipi

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I { Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

La classe java.lang.object

La classe java.lang.object La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita

Dettagli

Cenni su programmazione con tipi generici (generics)

Cenni su programmazione con tipi generici (generics) Cenni su programmazione con tipi generici (generics) Tipi generici (generics) Programmazione generica: Creazione di costrutti che possono essere utilizzati con tipi di dati diversi Es. ArrayList,

Dettagli

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

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

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio

Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli

Dettagli

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

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.

Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1. OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,

Dettagli

Esonero del corso di Programmazione a Oggetti

Esonero del corso di Programmazione a Oggetti Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio

Dettagli

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

OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 8 SE PROGRAMMER

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura

Dettagli

Passaggio dei parametri

Passaggio dei parametri Passaggio dei parametri Per valore Il valore viene copiato dall environment esterno all environment della funzione o procedura Cambiamenti dei parametri così passati non si riflettono sull environment

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

Overloading - Overriding

Overloading - Overriding 1 Overloading - Overriding Overloading: Funzioni con uguale nome e diversa firma possono coesistere. move(int dx, int dy) move(int dx, int dy, int dz) Overriding: Ridefinizione di una funzione in una sottoclasse

Dettagli

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free

Variabili dinamiche. Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free Variabili dinamiche Obiettivi: Presentare le variabili dinamiche, allocate e deallocate nell area HEAP, e le funzioni malloc e free 1 Tipi di variabili in C In C è possibile classificare le variabili in

Dettagli

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 Alcune Soluzioni ESERCIZIO 1. Si consideri il seguente frammento di codice in linguaggio Java: int[][] a = new int[n][n]; for (int i

Dettagli

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. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Ereditarietà e Polimorfismo: Polimorfismo - d Regole Sintattiche e Semantiche versione 1.2 Questo lavoro è concesso in uso secondo i termini di

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap > Struttura di una classe > Costruttore > Riferimento

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Implementare un'interfaccia

Implementare un'interfaccia Le interfacce Un metodo astratto è un metodo senza corpo, con un ";" dopo l'intestazione. Una interfaccia (interface) in Java ha una struttura simile a una classe, ma può contenere SOLO costanti e metodi

Dettagli

Programmazione I - Preparazione A.A. 2010/2011

Programmazione I - Preparazione A.A. 2010/2011 Programmazione I - Preparazione A.A. 2010/2011 3 febbraio 2011 Matricola:........................................................................ Cognome:........................................................................

Dettagli

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Programmazione Java Struttura di una classe, Costruttore, Riferimento this Programmazione Java Struttura di una classe, Costruttore, Riferimento this Davide Di Ruscio Dipartimento di Informatica Università degli Studi dell Aquila diruscio@di.univaq.it. Sommario 2 2» Struttura

Dettagli

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125 Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia

Dettagli

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

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

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

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Programmazione Java Avanzata Programmazione Object- Oriented in Java

Programmazione Java Avanzata Programmazione Object- Oriented in Java Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction

Dettagli

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

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()

Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA

Dettagli

Il Linguaggio Java. Le interfacce

Il Linguaggio Java. Le interfacce Il Linguaggio Java Le interfacce Ordinamento dei conti PROBLEMA: si vogliono ordinare i libretti di risparmio (SavingsAccount) in base al loro tasso di interesse REQUISITO: La classe dovrebbe essere ordinabile,

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

Dettagli

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a

Dettagli

Esempi in Java di program.ne O-O

Esempi in Java di program.ne O-O Esempi in Java di program.ne O-O Ereditarietà Polimorfismo statico e dinamico Esercitazione laboratorio Interfaccia Comparable e Comparator 1 Gerarchia di ereditarietà Persona IS_A Docente Studente Tecnico

Dettagli

Il linguaggio Java: aggiunte in Java 1.5

Il linguaggio Java: aggiunte in Java 1.5 .. Il linguaggio Java: aggiunte in Java 1.5 Una breve presentazione GENERICI Java 1.5 introduce i generici: classi che hanno un parametro di tipo. Nelle versioni precedenti a Java 1.5 si può definire:

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie 16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie 16 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo

Dettagli

17 - Ereditarietà, tipi e gerarchie

17 - Ereditarietà, tipi e gerarchie 17 - Ereditarietà, tipi e gerarchie Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

18 - Classi parzialmente definite: Classi Astratte e Interfacce

18 - Classi parzialmente definite: Classi Astratte e Interfacce 18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

17 - Classi parzialmente definite: Classi Astratte e Interfacce

17 - Classi parzialmente definite: Classi Astratte e Interfacce 17 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario

Dettagli

Implementazione Java di un ADT

Implementazione Java di un ADT Implementazione Java di un ADT Primo passo definire l'interfaccia (API) dell' ADT (l'api descrive i nomi dei metodi che l'adt supporta e come essi sono dichiarati e usati) Secondo passo scrivere il codice

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Marco Faella Introduzione al corso

Marco Faella Introduzione al corso Marco Faella Introduzione al corso 1 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Linguaggi

Dettagli

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array

Dettagli

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5

Ricerca e ordinamento su array di oggetti. Corso di Programmazione 2 Esercitazione 5 Ricerca e ordinamento su array di oggetti Corso di Programmazione 2 Esercitazione 5 Sommario Ricercare in array di oggetti Interfaccia comparable Ordinare array di oggetti Problema Come ordinare, ricercare

Dettagli

Programmazione a Oggetti. Polimorfismo e Tipi Generici

Programmazione a Oggetti. Polimorfismo e Tipi Generici Programmazione a Oggetti Polimorfismo e Tipi Generici Polimorfismo Abilità di una funzione di eseguire il suo task su argomenti di tipi diversi Dipende di solito, dal fatto che la funzione non ha necessità

Dettagli

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili

Riuso di classi. Ereditarietà. Ereditarietà. Spesso si ha bisogno di classi simili Riuso di classi Spesso si ha bisogno di classi simili Si vuole cioè riusare classi esistenti per implementare attributi e metodi leggermente diversi Non è pratico copiare la classe originaria e modificarne

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; }

public BankAccount() { balance = 0; } public BankAccount(double initialbalance) { balance = initialbalance; } Il Linguaggio Java Le interfacce La classe BankAccount public class BankAccount { public BankAccount() { balance = 0; public BankAccount(double initialbalance) { balance = initialbalance; public void deposit(double

Dettagli

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE Prova di Algoritmi e s.d. (1o anno) 17 Settembre 2002 TESTO e RISPOSTE Esercizio 1 (punti 7 in prima approssimazione) Consideriamo alberi binari con insieme dei nodi NODI = N (l'insieme dei naturali).

Dettagli

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti DAIS Univ. Ca' Foscari Venezia Programmazione ad oggetti Samuel Rota Bulò Programmazione polimorfa Immaginiamo di voler creare una classe Stack. Il funzionamento di uno stack può essere definito indipendentemente

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false; Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 04 Introduzione ai Tipi astratti di dato A. Miola Febbraio 2007 http://www.dia.uniroma3.it/~java/fondinf2/ Introduzione ADT 1

Dettagli

Linguaggi di Programmazione I Lezione 10

Linguaggi di Programmazione I Lezione 10 Linguaggi di Programmazione I Lezione 10 Prof. Marcello Sette mailto://marcello.sette@gmail.com http://sette.dnsalias.org 8 maggio 2008 Array 3 Dichiarazione...........................................................

Dettagli

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1:

ESERCIZI JAVA. Esercizi sulle Interfacce. Esercizio 1: ESERCIZI JAVA Esercizi sulle Interfacce Esercizio 1: Java mette a disposizione un'interfaccia chiamata Comparable. Quando un oggetto implementa questa interfaccia esso può implementare un metodo chiamato

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Alberi Binario in Java

Alberi Binario in Java Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un

Dettagli

Esempio 2: Subtyping

Esempio 2: Subtyping Esempio 2: Subtyping 22 Subclassing e subtyping Fino ad ora abbiamo trattato l ereditarietà come strumento che consente il riuso flessibile di classi già esistenti mediante l aggiunta o la ridefinizione

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce Programmazione orientata agli oggetti Classi astratte e interfacce Fondamenti di Informatica L-B 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Array. Definizione e utilizzo di vettori

Array. Definizione e utilizzo di vettori Array Definizione e utilizzo di vettori Array (1/2) Un array o vettore rappresenta un insieme di elementi dello stesso tipo. Sintassi per la creazione di un array: tipo_elementi[] nome; nome = new tipo_elementi[numero_elementi];

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

Oggetti e classi. Cos è un oggetto

Oggetti e classi. Cos è un oggetto Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Classi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura

Classi astratte. Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Classi astratte Nella gerarchia delle classi, potrebbe essere utile prevedere un supertipo generale per le classi che si usano. Ad esempio: Figura Rettangolo getarea() Quadrato getarea() getarea() Cerchio

Dettagli

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011 13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.

Dettagli

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce

Programmazione orientata agli oggetti Classi astratte e interfacce. Classi astratte - Interfacce Programmazione orientata agli oggetti Classi astratte e interfacce 1 Classi astratte Java ci consente di definire classi in cui uno o più metodi non sono implementati, ma solo dichiarati Questi metodi

Dettagli

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013

Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Preparazione allo scritto di Programmazione Comunicazione Digitale / Informatica - A.A. 2012/2013 Matricola:...................... Cognome:...................... Nome:...................... Informatica

Dettagli

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

Programmazione. Cognome... Nome... Matricola... Compitino del 17 gennaio 2007 Cognome............................. Nome................................ Programmazione Compitino del 17 gennaio 2007 Matricola............................ NOTA: Negli esercizi 1, 2, 3, 4 fate riferimento

Dettagli

Strutture Dinamiche. Strutture Dinamiche

Strutture Dinamiche. Strutture Dinamiche Corso di Informatica A Vito Perrone 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato)); Crea in memoria una variabile

Dettagli

Una definizione induttiva di albero binario astratto. Algoritmi e Laboratorio a.a Lezioni. Notazioni prefissa e postfissa.

Una definizione induttiva di albero binario astratto. Algoritmi e Laboratorio a.a Lezioni. Notazioni prefissa e postfissa. Una definizione induttiva di albero binario astratto Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Curriculum SR (Sistemi e Reti) Algoritmi e Laboratorio a.a. 2009-10 Lezioni

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Concetti Avanzati versione 2.5 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Alberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza

Alberi binari e di ricerca. Parte 1 BST e GUI. Introduzione. 1. Minimo Antenato Comune. 2. Vistita in ampiezza Alberi binari e di ricerca Introduzione L esercitazione corrente riguarda problemi su alberi binari semplici e di ricerca. 1. Nella prima parte vengono proposti esercizi da svolgere mediante le classi

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

Calcolare x n = x x x (n volte)

Calcolare x n = x x x (n volte) Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile

Dettagli