Abstract Data Type (ADT)
|
|
- Rita Carlucci
- 8 anni fa
- Visualizzazioni
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.
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,
DettagliTipi 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
DettagliFunzioni 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
DettagliEsercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)
Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando) Le basi della programmazione ad oggetti: per costruire in modo adeguato una applicazione basata sulla programmazione ad oggetti occorre
DettagliIl 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:
DettagliIntroduzione 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
DettagliRealizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
DettagliSoluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
DettagliIntroduzione 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
DettagliMatematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
DettagliCorso 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
DettagliFasi di creazione di un programma
Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliOrganizzazione degli archivi
COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i
DettagliProgettaz. e sviluppo Data Base
Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo
DettagliLezione 8. La macchina universale
Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione
DettagliCOS È 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
DettagliSiamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
DettagliFONDAMENTI 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
DettagliInformatica 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è
DettagliDatabase. Si ringrazia Marco Bertini per le slides
Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida
Dettaglimanuale utente per Viabizzuno online
manuale utente per Viabizzuno online nuova piattaforma di e-business Viabizzuno il primo approccio con il nuovo sistema è la pagina di autenticazione. già qui appare la prima novità, ovvero il recupero
DettagliEsercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
DettagliGESTIONE DEI BENI USATI
GESTIONE DEI BENI USATI Di seguito vengono elencate le modalità per gestire l acquisto e la cessione dei beni usati OPERAZIONI PRELIMINARI Per gestire l acquisto e la cessione di beni usati è necessario:
DettagliTesti di Esercizi e Quesiti 1
Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica
DettagliDimensione di uno Spazio vettoriale
Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione
DettagliEsercizio 1: trading on-line
Esercizio 1: trading on-line Si realizzi un programma Java che gestisca le operazioni base della gestione di un fondo per gli investimenti on-line Creazione del fondo (con indicazione della somma in inizialmente
DettagliINTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI
INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.
DettagliLe variabili. Olga Scotti
Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
DettagliElementi 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
DettagliSommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.
Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell
DettagliObject 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
Dettaglidall 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 È
DettagliLinguaggi 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
DettagliModulo 4: Ereditarietà, interfacce e clonazione
Modulo 4: Ereditarietà, interfacce e clonazione Argomenti Trattati: Classi, Superclassi e Sottoclassi Ereditarietà Ereditarietà ed Attributi Privati Override super Ereditarietà e Costruttori Polimorfismo
DettagliUso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
DettagliProgettazione : Design Pattern Creazionali
Progettazione : Design Pattern Creazionali Alessandro Martinelli alessandro.martinelli@unipv.it 30 Novembre 2010 Progettazione : Design Pattern Creazionali Aspetti generali dei Design Pattern Creazionali
DettagliINFORMATICA 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
DettagliProgrammazione a Oggetti Modulo B
Programmazione a Oggetti Modulo B Progetto Dott. Alessandro Roncato 4/10/2011 Progetto Da svolgere singolarmente Scadenza consegna: una settimana prima dello scritto; Valutazione in base a: Corretta compilazione
DettagliGestione Risorse Umane Web
La gestione delle risorse umane Gestione Risorse Umane Web Generazione attestati di partecipazione ai corsi di formazione (Versione V03) Premessa... 2 Configurazione del sistema... 3 Estrattore dati...
DettagliEsercitazione 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:
DettagliSOMMARIO 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
DettagliRicapitoliamo. Ricapitoliamo
Ricapitoliamo Finora ci siamo concentrati sui processi computazionali e sul ruolo che giocano le procedure nella progettazione dei programmi In particolare, abbiamo visto: Come usare dati primitivi (numeri)
DettagliLezioni di Matematica 1 - I modulo
Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può
DettagliCorso 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
DettagliLa struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
Dettagli4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0
Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice
DettagliEsempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
DettagliUniversità degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi
Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica Ingegneria del Software La fase di Analisi Giulio Destri Ing. del software: Analisi - 1 Scopo del modulo Definire
DettagliExcel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it
Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
DettagliRECUPERO DATI LIFO DA ARCHIVI ESTERNI
RECUPERO DATI LIFO DA ARCHIVI ESTERNI È possibile importare i dati relativi ai LIFO di esercizi non gestiti con Arca2000? La risposta è Sì. Esistono tre strade per recuperare i dati LIFO per gli articoli
DettagliLa gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni
La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni Autore: Prof. Agostino Sorbara ITIS "M. M. Milano" Autore: Prof. Agostino Sorbara ITIS "M. M.
DettagliSiti web centrati sui dati Architettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliProcesso di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico
Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare
DettagliTipi 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
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliNascita 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
DettagliESEMPIO 1: eseguire il complemento a 10 di 765
COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento
Dettagli!"#$%&&'()#*%+%+!"#$"',,'()#*%+ -")%*&'&'+'$.)+-$$%&&) !"#$%&&'(%)'*+%",#-%"#.'%&'#/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
DettagliDefinizione 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
DettagliDefinizione di nuovi tipi
Definizione di nuovi tipi Un tipo è un insieme di valori. Per definire un nuovo tipo occorre specificare: 1 un nome per il tipo 2 come costruire i valori del tipo, cioè quali sono i costruttori del tipo.
DettagliIl documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.
Il documento rappresenta una guida sintetica per descrivere sia la filosofia che il modulo software per l implementazione dei workflow in recuper@2.0 ver 1.0 del 19/03/2013 Nettuno Solutions s.r.l. Viale
DettagliMANUALE ESSE3 Gestione Registro delle lezioni
MANUALE ESSE3 Gestione Registro delle lezioni DOCENTI 1 INDICE 1. INTRODUZIONE E ACCESSO... 3 2. GESTIONE DEL REGISTRO... 4 2.1. Informazioni generali... 6 2.2. Stato del Registro... 7 2.2.1. Transizioni
DettagliPROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
DettagliEsercitazioni di Progettazione del Software. Esercitazione (Prova al calcolatore del 17 settembre 2010)
Sapienza - Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Corso di Laurea in Ingegneria Informatica ed Automatica, Ingegneria dei Sistemi Informatici Esercitazioni
DettagliUniversità di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
DettagliEVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO
EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi
DettagliArchitettura MVC-2: i JavaBeans
Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con
DettagliProgettazione della componente applicativa
7 Progettazione della componente applicativa In questo capitolo illustreremo la progettazione della componente applicativa di un sistema informativo. La metodologia da noi utilizzata sarà basata sull utilizzo
DettagliLibreria 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:
DettagliOttimizzazione delle interrogazioni (parte I)
Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di
DettagliFasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)
Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Sede di Latina Laurea in Ingegneria dell Informazione Fasi del ciclo di vita del software (riassunto) Corso di PROGETTAZIONE DEL SOFTWARE
DettagliFondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)
Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2) Definiamo innanzitutto una relazione d ordine tra le funzioni. Siano φ e ψ funzioni
DettagliSoluzione dell esercizio del 12 Febbraio 2004
Soluzione dell esercizio del 12/2/2004 1 Soluzione dell esercizio del 12 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. 2. Modello concettuale
DettagliCorso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP
Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP Accademia Futuro info@accademiafuturo.it Programma Generale del Corso Analista Programmatore Web PHP Tematiche Trattate
DettagliAPPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
DettagliL amministratore di dominio
L amministratore di dominio Netbuilder consente ai suoi clienti di gestire autonomamente le caselle del proprio dominio nel rispetto dei vincoli contrattuali. Ciò è reso possibile dall esistenza di un
DettagliAlgoritmi 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
DettagliLa 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
DettagliRichiesta 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
DettagliElementi 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
DettagliFondamenti 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
DettagliCorso 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
DettagliBDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D
BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software BDX 3D Editor è un programma che permette di navigare ed editare texture in un qualsiasi modello 3D.E compatibile con i software in grado di esportare
DettagliInizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
DettagliParte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno
Parte II Indice Operazioni aritmetiche tra valori rappresentati in binario puro somma sottrazione Rappresentazione di numeri con segno modulo e segno complemento a 2 esercizi Operazioni aritmetiche tra
DettagliProva di Laboratorio di Programmazione
Prova di Laboratorio di Programmazione 6 febbraio 015 ATTENZIONE: Non è possibile usare le classi del package prog.io del libro di testo. Oltre ai metodi richiesti in ciascuna classe, è opportuno implementare
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 11 Tipi astratti di dato e loro rappresentazione A. Miola Marzo 28 http://www.dia.uniroma3.it/~java/fondinf2/ ADT e Rappresentazione
DettagliRicerca Operativa Esercizi sul metodo del simplesso. Luigi De Giovanni, Laura Brentegani
Ricerca Operativa Esercizi sul metodo del simplesso Luigi De Giovanni, Laura Brentegani 1 1) Risolvere il seguente problema di programmazione lineare. ma + + 3 s.t. 2 + + 2 + 2 + 3 5 2 + 2 + 6,, 0 Soluzione.
DettagliSpecifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni
Specifiche dello sviluppo di un progetto software e indicazioni sulla documentazione e sulle modalità di esercizio delle prestazioni Redatto dalla Commissione per l elettronica, l informatica e la telematica
DettagliUtilizzo delle formule in Excel
Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula
DettagliII.f. Altre attività sull euro
Altre attività sull euro II.f È consigliabile costruire modelli in carta o cartoncino di monete e banconote, e farli usare ai bambini in varie attività di classe fin dal primo o al più dal secondo anno.
DettagliLE SUCCESSIONI 1. COS E UNA SUCCESSIONE
LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe
DettagliLogica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo
Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero
DettagliSISTEMI DI NUMERAZIONE E CODICI
SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema
DettagliDall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni
Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere
DettagliRAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI
RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI Diagramma di flusso L algoritmo può essere rappresentato in vari modi, grafici o testuali. Uno dei metodi grafici più usati e conosciuti è il cosiddetto diagramma
DettagliUML Diagrammi delle classi. UML Diagramma classi 1
UML Diagrammi delle classi UML Diagramma classi 1 Diagramma delle classi Non è nei nostri obiettivi affrontare UML nel suo complesso Ci concentreremo sui diagrammi delle classi che ci forniscono un linguaggio
DettagliCorso di Informatica
Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down
Dettagli