Abstract Data Type (ADT)

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Abstract Data Type (ADT)"

Transcript

1 Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo di Dato Astratto (ADT). Useremo gli ADT come strumento di descrizione di una collezione di oggetti quando è nostro interesse specificare cosa una operazione deve fare, tralasciando aspetti implementativi quali la realizzazione di un operatore o l organizzazione delle informazioni. Introdurremo la nozione di ADT facendo riferimento a problematiche ricorrenti nella pratica, evidenziandone quindi le potenzialità. Richiameremo infine, sulla base di quanto espresso in precedenza, i concetti principali del paradigma Object Oriented sottolineando come tale tecnica di programmazione rappresenti uno strumento efficace per dar luogo ai concetti propri del Tipo di Dato Astratto. 1. Tipi di dati e nuovi operatori Ogni linguaggio di programmazione offre un insieme di tipi di dati predefiniti, dati built-in o primitivi, e per ognuno di essi definisce un insieme di operatori applicabili. Esempi di tipi di dati primitivi sono gli interi, i reali ed i caratteri, così come esempi di operatori sono l operatore somma e l operatore di moltiplicazione applicabili ai tipi di dati interi. L applicazione di un operatore ad un tipo di dato è dettato da un insieme di regole. Esempio 1.1 Siano m ed n due interi. Un insieme di regole alle quali gli operatori di divisione e moltiplicazione devono attenersi è dato dalla seguente lista: 1. n/m è NON APPLICABILE se m=0; 2. n*m = 0 se m=0 3. n*1 = n

2 Abstract Data Type Pag. 2/10 In considerazione di un tipo di dato, D e sulla base degli operatori per esso applicabili possiamo implementare un nuovo operatore per D. Ad esempio, mediante l utilizzo dell operatore di moltiplicazione possiamo implementare l operazione di elevamento a potenza di un numero. Esempio 1.2 Consideriamo il seguente tipo di dato, Ndemo, costituito dall insieme dei numeri naturali e da un insieme ristretto di operatori: iszero, succ, add, molt. Tipo di dato: Ndemo = n tale che n è numero naturale Operatori: iszero( n ) bool succ( n ) m add( n 1, n 2 ) m molt( n 1, n 2 ) m Regole: iszero( zero ) = true iszero( succ(n)) = false add(zero, n ) = n add( succ( n ), m ) = succ( add( n, m )) molt( n, zero ) = zero molt( n, uno ) = n dove: - iszero ritorna true se il valore assunto da n è uguale a zero, altrimenti ritorna false. - add esegue la somma dei valori n 1 e n 2 ; - molt esegue il prodotto dei valori n 1 e n 2 ; - succ ritorna il valore successivo a quello assunto da n. Estendiamo l insieme degli operatori definendo un nuovo operatore: il fattoriale. Sulla base degli operatori applicabili al nostro tipo di dato, non possiamo esprimere il nuovo operatore mediante la classica formula fatt(n)=n*fatt(n-1), poiché non disponiamo dell operatore di sottrazione. Questo però sembra non essere un problema insormontabile, i soli operatori Succ e Molt bastano per implementare l operatore fattoriale come di seguito riportato: Operatore: Fatt( n ) m Regole: Fatt( zero ) = 1; Fatt( succ( n ) ) = succ(n) Molt( Fatt( n ) ); cioè: Fatt( 10 ) = Fatt( succ( 9 ) ) = succ( 9 ) Molt( Fatt( 9 ) ) = 10 Molt( Fatt( 9 ) ) Sulla base dei soli operatori applicabili al tipo di dato Ndemo abbiamo pertanto definito un nuovo operatore. Definizione: l operazione di estensione dell insieme degli operatori definiti per un tipo di dato è definita come Astrazione Funzionale.

3 Abstract Data Type Pag. 3/10 2. Tipo di dato astratto Similmente all operazione di astrazione funzionale è possibile operare l Astrazione Dati cioè definire un nuovo tipo di dato ed un nuovo insieme di operatori ad esso applicabili e similmente all astrazione funzionale, per la quale il vincolo imposto è l utilizzo degli operatori già definiti, anche l astrazione dati è sottoposta al rispetto di due requisiti: requisito di astrazione e requisito di protezione. Proseguiamo per ordine e proviamo ad operare una astrazione dati definendo quindi un nuovo tipo di dato e l insieme degli operatori ad esso applicabili. Nuovo tipo di dato Consideriamo l insieme dei numeri complessi C= a+ib a R, b R. A partire dal tipo di dato numero reale possiamo definire un nuovo tipo di dato che rappresenti un numero complesso. Procediamo in tal senso e rappresentiamo quindi un numero complesso attraverso una coppia di valori formata da due numeri reali: c = (a,b) a R, b R Nuovi operatori Scelta la rappresentazione del nuovo tipo di dato definiamo gli operatori applicabili. Specifichiamo quindi due soli operatori somma e sottrazione di due numeri complessi che operano nel seguente modo: ComplexSomma(( a 1, b 1 ), ( a 2, b 2 )) ( a, b ) = (a 1 + a 2, b 1 + b 2 ) ComplexSottrazione(( a 1, b 1 ), ( a 2, b 2 )) ( a, b ) = = (a 1 - a 2, b 1 - b 2 ) Date due coppie rappresentanti due numeri complessi, gli operatori di somma e sottrazione restituiscono una coppia rappresentante anch essa un numero complesso. Gli elementi di tale coppia sono nel primo caso la somma dei singoli elementi mentre nel secondo caso la sottrazione di singoli elementi.

4 Abstract Data Type Pag. 4/10 L utente finale In base alla nostra rappresentazione, l utente finale 1 quando opererà con il nostro nuovo tipo di dato eseguirà sostanzialmente i seguenti passi: 1. definisce tre coppie di numeri ( a 1, b 1 ), ( a 2, b 2 ), ( a 3, b 3 ) 2. inizializza ( a 1, b 1 ), ( a 2, b 2 ) 3. poni ( a 3, b 3 ) = Csomma(( a 1, b 1 ), ( a 2, b 2 )) Le lacune della rappresentazione La rappresentazione da noi scelta, anche se funzionale, possiede però alcuni difetti. Il primo su tutti: l utente finale nell utilizzare il nuovo tipo di dati ed i relativi operatori dovrà necessariamente conoscere la rappresentazione adottata, coppia di due valori reali. Pertanto, qualora decidessimo di modificare la rappresentazione del tipo di dato o di proporre una rappresentazione alternativa alla coppia di valori, l utente finale dovrà necessariamente apportare modifiche all intero lavoro svolto. Altro difetto: essendo la coppia di valori reali definita dall utente (si veda il passo 1), nulla vieta ad egli di procedere in una operazione di somma delle singole componenti o perfino in una operazione di somma della parte immaginaria e della parte complessa di un numero complesso eseguendo in tal caso una operazione non corrispondente alla realtà 2. Insomma nulla vieta all utente di modificare il valore rappresentato dal nostro tipo di dato senza accedere ai soli operatori definiti per esso (ComplexSomma, ComplexSottrazione). La nostra rappresentazione manca in tal caso di due requisiti fondamentali dell astrazione dati: - il Requisito di Astrazione (oppure Incapsulamento), una astrazione dati rispetta questo requisito quando all utente finale vengono nascoste le scelte di realizzazione, rappresentazione del tipo di dato ed implementazione degli operatori. 1 Dove per utente finale si intende una qualsiasi entità che praticamente oppure in maniera del tutto teorica fa uso della nostra rappresentazione. 2 La parte immaginaria e la parte reale di un numero complesso non possono essere sommate.

5 Abstract Data Type Pag. 5/10 - il Requisito di Protezione (oppure Data Hiding), una astrazione dati rispetta questo requisito quando l utente finale può apportare modifiche e quindi elaborare il nuovo tipo di dati solo attraverso l utilizzo dei soli operatori dichiarati all atto della specifica. Come abbiamo già visto, il rispetto del requisito di astrazione permette la modifica della rappresentazione del tipo di dato o l implementazione di una rappresentazione alternativa senza dover necessariamente obbligare l utente finale ad apportare modifiche al proprio lavoro. Mentre il rispetto del requisito di protezione aiuta l utente nel non eseguire una operazione non corretta o qualsivoglia non corrispondente alla realtà. Un Tipo di Dato Astratto è la rappresentazione di un tipo di dato in cui è presente sia il requisito di astrazione che il requisito di protezione. Formalmente: Definizione: un tipo di dati astratto (ADT) è un modello matematico (astratto) descrivente un tipo di dati. Un ADT specifica: 1. il tipo di dato; 2. l insieme dei soli operatori applicabili al tipo di dato; 3. i vincoli di correttezza ai quali gli operatori si attengono. Esempio 2.1 L ADT Coda Di seguito la rappresentazione mediante ADT di una coda di elementi. La politica di gestione di una coda è la usuale politica applicata ad esempio all interno degli esercizi pubblici: il primo che arriva è servito! Tale politica è identificata attraverso la sigla FIFO (First In First Out): il primo ad entrare è il primo ad uscire. Segue la definizione: Tipo di dato: Coda (sequenza di n elementi estratti da un insieme S) Operatori: isempty() risultato Restituisce true se la coda è vuota, false altrimenti Aggiungi( elemento e ) Aggiunge l elemento e al termine della coda Preleva() elemento Preleva il primo elemento in coda

6 Abstract Data Type Pag. 6/10 Sulla base dell esempio 2.1, approfondiamo il significato della definizione di ADT. Un ADT non deve specificare né come un tipo di dato è rappresentato né come un operatore è implementato (Incapsulamento), esso deve indicare esclusivamente la tipologia ( sequenza di n elementi estratti da un insieme S ), cioè cosa il tipo di dato rappresenta. Un ADT deve specificare l insieme degli operatori applicabili ad un tipo di dati, essi devono rappresentare gli unici strumenti adottabili dall utente finale per l elaborazione dei valori rappresentati dal tipo di dati (Data Hiding). Nella pratica quotidiana, i concetti espressi dall ADT tornano utili durante l utilizzo della rappresentazione: sono separati gli interessi di chi vuol semplicemente utilizzare il nuovo tipo di dati da chi è interessato alla effettiva realizzazione e/o implementazione degli operatori. Utilità riscontrabile anche in fase di progettazione durante la quale l analista potrà concentrarsi piuttosto su cosa il nuovo tipo di dati dovrà fare e non su come dovrebbe farlo. Nota Approccio simile è utilizzato nella fase di editing di un programma scritto in linguaggio C o C++. E uso comune, infatti, creare due file distinti: il file di include (estensione.h), contenente i prototipi delle funzioni o l interfaccia delle classi, ed il file sorgente (estensione.c o.cpp) contenente le implementazioni.

7 Abstract Data Type Pag. 7/10 3. L approccio OO Sulla base dei concetti introdotti nel Capitolo 2 possiamo affermare che un ADT è implementabile solo mediante l utilizzo di un linguaggio di programmazione che: 1. permetta la definizione di nuovi tipi di dati; 2. offra costrutti di linguaggio che permettano di esprimere la diretta dipendenza esistente tra il tipo di dato e l operatore; 3. vieti ogni tentativo di applicazione al nuovo tipo di dato di un qualsiasi operatore non dichiarato nella specifica; I linguaggi Object Oriented (OO) rappresentano al momento una famiglia di linguaggi di programmazione che esprimono al meglio i concetti intrinseci di un ADT. Un linguaggio di programmazione OO ( C++, Java, etc. ) garantisce la presenza di tutti gli strumenti utili per la corretta definizione di un tipo di dato astratto dove la Classe ne rappresenta la naturale realizzazione. Esempio 3.1 Tipo di dato Ndemo Consideriamo nuovamente il nostro primo tipo di dato trattato precedentemente: Ndemo. Attraverso l utilizzo di un linguaggio OO, nello specifico il C++, possiamo dar luogo a questo tipo di dato implementando la seguente classe: Definizione class Ndemo private: int ValoreNumerico; public: bool iszero(); Ndemo succ(); Ndemo add( Ndemo n); Ndemo molt( Ndemo n ); ; Implementazione bool Ndemo::iszero() if ( ValoreNumerico == 0 ) return true; else return false;

8 Abstract Data Type Pag. 8/10 Ndemo Ndemo::succ() Ndemo ValoreRitorno; ValoreRitorno.ValoreNumerico = ValoreNumerico+1; return ValoreRitorno; Ndemo Ndemo::add( Ndemo n) Ndemo ValoreRitorno; ValoreRitorno.ValoreNumerico = ValoreNumerico+ n.valorenumerico; return ValoreRitorno; Ndemo Ndemo::molt( Ndemo n ) Ndemo ValoreRitorno; ValoreRitorno.ValoreNumerico = ValoreNumerico* n.valorenumerico; return ValoreRitorno; In tal modo l utente che utilizzerà il nostro nuovo tipo di dato definirà dapprima le variabili di tipo Ndemo attraverso dichiarazione del tipo Ndemo var1, var2, var3; e dopodichè elaborerà i dati attraverso istruzioni del tipo: var3 = var1.somma( var2 ); var3 = var1.prodotto( var2 ); Il compilatore vieterà l applicazione di operatori non dichiarati in fase di specifica o definizione, ad esempio var1 + var2 così come vieterà l applicazione di assegnamenti del tipo var1.valorenumerico = 10 poichè essendo ValoreNumerico un attributo privato non risulterà accessibile dall esterno.

9 Abstract Data Type Pag. 9/10 Esempio I numeri complessi Realizziamo il tipo di dato numero complesso. Al fine di fornire una rappresentazione più naturale degli operatori di somma e prodotto abbiamo utilizzato in questo caso la possibilità offerta dal linguaggio di ridefinire l operatore + e - Definizione class Complex private: float reale; // parte reale float immaginaria; // parte immaginaria public: Complex operator+( const Complex B ); Complex operator-( const Complex B ); ; Implementazione Complex Complex::operator +( const Complex B ) Complex ValoreRitorno; ValoreRitorno.reale = reale + B.reale; ValoreRitorno.immaginaria = immaginaria + B.immaginaria; return ValoreRitorno; Complex Complex::operator -( const Complex B ) Complex ValoreRitorno; ValoreRitorno.reale = reale - B.reale; ValoreRitorno.immaginaria = immaginaria - B.immaginaria; return ValoreRitorno; Il codice utente int main( ) Complex A, B, C, D; C = A + B; D = A - B; D = A * B; // Errore!!! L operatore * non è definito per i Complex D.reale = A.reale + A.immaginaria // Errore!!! Reale ed immaginaria non sono // accessibili direttamente dall utente

10 Abstract Data Type Pag. 10/10 Nota Il codice utente non fa alcun riferimento ai due attributi float utilizzati per rappresentare un numero complesso. Il compilatore del linguaggio blocca ogni tentativo di applicazione al tipo di dato Complex di un operatore non dichiarato nella specifica. Infine, qualsiasi modifica alla rappresentazione dei numeri complessi, ad esempio utilizzo di un vettore di due float, non comporta alcuna modifica al codice scritto dall utente e l utente finale non ha modo di applicare operazione considerate non lecita per l insieme dei numeri complessi.

Corso di Laurea in INFORMATICA

Corso di Laurea in INFORMATICA Corso di Laurea in INFORMATICA Algoritmi e Strutture Dati MODULO 2. Algebre di dati Dati e rappresentazioni, requisiti delle astrazioni di dati, costrutti. Astrazioni di dati e dati primitivi. Specifica

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Il tipo di dato astratto Pila

Il tipo di dato astratto Pila Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:

Dettagli

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI

1. I FONDAMENTI DELLA PROGRAMMAZIONE AD OGGETTI IL LINGUAGGIO JAVA Dispense per il corso di laboratorio di sistemi I.T.I.S. ABACUS A.S. 2008/2009 Autore: Roberto Amadini Testo di riferimento: La programmazione ad oggetti C++ Java (Lorenzi, Moriggia,

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

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

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

I tipi di dato astratti

I tipi di dato astratti I tipi di dato astratti.0 I tipi di dato astratti c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 001/00.0 0 I tipi di dato astratti La nozione di tipo di dato

Dettagli

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE

SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software

Dettagli

Introduzione agli Abstract Data Type (ADT)

Introduzione agli Abstract Data Type (ADT) Introduzione agli Abstract Data Type (ADT) La nozione di tipo di dato astratto Sappiamo già che quando si affrontano problemi complessi è necessario procedere in due fasi: Specifica dell algoritmo Implementazione

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 12 ADT: Lista, Pila, Coda A. Miola Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti!Tipo

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

Dettagli

Marco Faella Classi enumerate

Marco Faella Classi enumerate Marco Faella Classi enumerate 22 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Il problema

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Definizione di nuovi tipi in C

Definizione di nuovi tipi in C Definizione di nuovi tipi in C typedef Ancora sui tipi di dato Ogni elaboratore è intrinsecamente capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe

Dettagli

!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9

!#$%&&'()#*%+%+!#$',,'()#*%+ -)%*&'&'+'$.)+-$$%&&) !#$%&&'(%)'*+%,#-%#.'%&'#/0)-+#12+3,)4+56#7+#.')8'9 !"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&)!"#$%&&'(%)'*+%",#-%"#.'%&'#/0)-+#12"+3,)4+56#7+#.')8'9 Slide 1 Paradigmi di Programmazione! Un linguaggio supporta uno stile di programmazione se

Dettagli

Corso di Programmazione ad Oggetti

Corso di Programmazione ad Oggetti Corso di Programmazione ad Oggetti Introduzione alla programmazione ad oggetti a.a. 2008/2009 Claudio De Stefano 1 La programmazione modulare Un programma può essere visto come un insieme di moduli che

Dettagli

Elementi di semantica operazionale

Elementi di semantica operazionale Elementi di semantica operazionale 1 Contenuti sintassi astratta e domini sintattici un frammento di linguaggio imperativo semantica operazionale domini semantici: valori e stato relazioni di transizione

Dettagli

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008. Esercitazione. Programmazione Object Oriented in Java Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Programmazione Object Oriented in Java

Dettagli

Proff. Fabio Ciao e Raffaele Bortone

Proff. Fabio Ciao e Raffaele Bortone ISTITUTO D ISTRUZIONE SUPERIORE FERRARIS BRUNELLESCHI - EMPOLI Materia: INFORMATICA PROGRAMMAZIONE ANNUALE A.S. 2014/2015 Classe IV C Informatica Proff. Fabio Ciao e Raffaele Bortone Libro di testo: Cloud

Dettagli

Anno Accademico 1999/2000

Anno Accademico 1999/2000 progettare sistemi software di grandi dimensioni richiede adeguati supporti crisi del software : i costi di gestione diventano preponderanti su quelli di produzione il software dovrebbe essere protetto,

Dettagli

ARRAY E STRINGHE. G. Frosini Slide 1

ARRAY E STRINGHE. G. Frosini Slide 1 ARRAY E STRINGHE G. Frosini Slide 1 Array: VARIABILI ARRAY struttura dati costituita da elementi (anche nessuno, array vuoto) dello stesso tipo; tipo array: tipo degli elementi, non numero degli elementi;

Dettagli

3. La sintassi di Java

3. La sintassi di Java pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer

Dettagli

Tipi astratti di dato e loro realizzazione in Java

Tipi astratti di dato e loro realizzazione in Java Unità 13 Tipi astratti di dato e loro realizzazione in Java Sommario Tipo astratto di dato Specifica di tipi astratti Astrazione di valori e astrazione di entità Realizzazione di tipi astratti in Java

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented

Informatica. Prof. A. Longheu. Introduzione ai Linguaggi Object-Oriented Informatica Prof. A. Longheu Introduzione ai Linguaggi Object-Oriented 1 Generalità programmazione OO La programmazione ad oggetti è un particolare modo di scrivere il programma. Si prevede che: 1) si

Dettagli

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 11. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 11 + Credits I lucidi di questa lezione sono stati preparati da: Professor Stefano Mizzaro Professor Paolo Coppola e sono stati modificati e completati dal Dr. Paolo

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. www.dia.unisa.it/dottorandi/murano. Il linguaggio C II Laboratorio di Algoritmi e Strutture Dati Aniello Murano www.dia.unisa.it/dottorandi/murano 1 Il linguaggio C II 2 1 Indice (seconda parte) Funzioni Array Puntatori Preprocessore Storage Class Ricorsione

Dettagli

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari

Algoritmi e Strutture Dati. Tipo di dato astratto e Strutture dati elementari Algoritmi e Strutture Dati Tipo di dato astratto e Strutture dati elementari 1 Argomenti della lezione Tipi di dato astratto Strutture dati elementari Liste o Implementazione di liste in Java Stack Code

Dettagli

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2007-08 Primo scritto 11 Gennaio 2008 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati Informatica 3 Informatica 3 LEZIONE 10: Introduzione agli algoritmi e alle strutture dati Modulo 1: Perchè studiare algoritmi e strutture dati Modulo 2: Definizioni di base Lezione 10 - Modulo 1 Perchè

Dettagli

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++ ISTITUTO TECNICO INDUSTRIALE STATALE G A L I L E O F E R R A R I S DIISPENSA DII IINFORMATIICA E SIISTEMII AUTOMATIICII LA GESTIONE DEI FILE DI TESTO IN C++ Le classi per la gestione dei file. Il C++ è

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori

Outline. Programmazione ad oggetti in Java. La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori Programmazione ad oggetti in Java Daniela Micucci Outline La programmazione ad oggetti Classi e istanze Associazioni fra classi Incapsulamento Costruttori 2 Programmazione ad oggetti in Java 1 OOP Java

Dettagli

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto: Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Appunti di Informatica 1. Gianluca Rossi

Appunti di Informatica 1. Gianluca Rossi Appunti di Informatica 1 Gianluca Rossi Versione maggio 2011 Indice 1 Algoritmi, macchine e linguaggi di programmazione 3 1.1 La macchina di Von Neumann........................ 5 1.2 Dal linguaggio macchina

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 E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi

Dettagli

Programmazione. Prima lezione sugli oggetti: agenda

Programmazione. Prima lezione sugli oggetti: agenda Programmazione A.A. 2002-03 I Programmazione Orientata agli Oggetti (1): Principi generali ( Lezione XXV ) Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

Esercitazione n 4. Obiettivi

Esercitazione n 4. Obiettivi Esercitazione n 4 Obiettivi Progettare e implementare per intero un componente software in Java Linguaggio Java: Classi astratte Utilizzo di costruttori e metodi di superclasse Polimorfismo Esempio guida:

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T1 B2 Significato e proprietà della OOP 1 Prerequisiti Concetto ed elementi della comunicazione Allocazione e deallocazione della memoria Compilazione di un programma Spazio

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

La velocità di una carovana

La velocità di una carovana Programmazione A.A. 2002-03 I linguaggio Java ( Lezione X, Parte I ) Il primo programma Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica Università di Catania e-mail

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione

Dettagli

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione basata sul campo d utilizzo. I principali package sono:

Dettagli

Programmazione ad Oggetti: JAVA. Esercitazione

Programmazione ad Oggetti: JAVA. Esercitazione Programmazione ad Oggetti: JAVA Esercitazione Docente Ing. Mariateresa Celardo mariateresa.celardo@uniroma2.it Scrivere la classe Motorino che ha i seguenti attributi colore: una stringa indicante il colore

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

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

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione a Classi e Oggetti

Introduzione a Classi e Oggetti Introduzione a Classi e Oggetti Oggetto: concetto astratto Entità di un programma dotata di tre proprietà caratteristiche stato informazioni conservate nell oggetto condizionano il comportamento dell oggetto

Dettagli

Algebra Booleana ed Espressioni Booleane

Algebra Booleana ed Espressioni Booleane Algebra Booleana ed Espressioni Booleane Che cosa è un Algebra? Dato un insieme E di elementi (qualsiasi, non necessariamente numerico) ed una o più operazioni definite sugli elementi appartenenti a tale

Dettagli

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca)

LAVORI ESTIVI DI INFORMATICA PER LA CLASSE IV Sez. Ainf (Prof. Tessore Luca) Ministero dell Istruzione, dell Università e della Ricerca Istituto Tecnico Industriale Statale Enrico Mattei Via Martiri di Cefalonia 46-20097 San Donato Milanese Tel. 0255691411 - Fax 025276676 itisando@tin.it

Dettagli

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE

7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE 7 : I DATI E LA LORO STRUTTURA NELLA PROGRAMMAZIONE TIPO DI DATO Un tipo di dato è una entità caratterizzata dai seguenti elementi: un insieme X di valori che raprresenta il dominio del tipo di dato; un

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Tipi Tipo Astratto di Permette di specicare dati in modo astratto Astratto Indipendentemente

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag