Introduzione agli Abstract Data Type (ADT)



Похожие документы
Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

I tipi di dato astratti

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:

UML Diagrammi delle classi. UML Diagramma classi 1

Il tipo di dato astratto Pila

ALGEBRA DELLE PROPOSIZIONI

Abstract Data Type (ADT)

dall argomento argomento della malloc()

Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

I casi d uso corrispondono ai compiti che l attore (che può essere una persona fisica e non) può svolgere.

Automazione Industriale (scheduling+mms) scheduling+mms.

I Sistemi Informativi

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Algebra Booleana ed Espressioni Booleane

Object Oriented Software Design

Progettaz. e sviluppo Data Base

La Metodologia adottata nel Corso

Elementi di Algebra Relazionale

MODA-ML: Esempi di XSL (Extensible Stylesheet Language) Vocabolario di supporto alla creazione di un set di Schemi di documenti XML

Introduzione alla teoria dei database relazionali. Come progettare un database

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

Ricorsione. (da lucidi di Marco Benedetti)

Al giorno d oggi, i sistemi per la gestione di database

Database. Si ringrazia Marco Bertini per le slides

Fasi di creazione di un programma

Lezione 8. La macchina universale

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Esercizio: gestione di un conto corrente

Funzioni in C. Violetta Lonati

Esercitazione n 4. Obiettivi

DATABASE. A cura di Massimiliano Buschi

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. (Sistemi Informativi) teoria e pratica con Microsoft Access. Basi di dati. Basi di dati. Basi di dati e DBMS DBMS DBMS

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

2. Simulazione discreta: approcci alla simulazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Java: Compilatore e Interprete

Fondamenti di Informatica. Docenti: Prof. Luisa Gargano Prof. Adele Rescigno BENVENUTI!

Algebra booleana. Si dice enunciato una proposizione che può essere soltanto vera o falsa.

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

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Ottimizzazione Multi Obiettivo

Macchine a stati finiti G. MARSELLA UNIVERSITÀ DEL SALENTO

Introduzione ai database relazionali

Esempi di algoritmi. Lezione III

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

ING SW. Progetto di Ingegneria del Software. e-travel. Requisiti Utente. Specifiche Funzionali del Sistema

Monitor. Introduzione. Struttura di un TDA Monitor

Uff. I. - OLIMPIADI DI PROBLEM SOLVING - Informatica e pensiero algoritmico nella scuola dell'obbligo

Algebra di Boole ed Elementi di Logica

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

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

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

BASI DI DATI - : I modelli di database

Linguaggio C. Fondamenti. Struttura di un programma.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

Anno 3. Funzioni: dominio, codominio e campo di esistenza

COMUNE DI SOLBIATE ARNO

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

IL PROCESSO DI BUDGETING. Dott. Claudio Orsini Studio Cauli, Marmocchi, Orsini & Associati Bologna

Elementi di semantica operazionale

Introduzione alla programmazione in C

Raggruppamenti Conti Movimenti

Antonella Martinucci, Rossana Nencini, 2013 IL PESO. classe quarta

LINGUAGGI DI PROGRAMMAZIONE

Laurea Specialistica in Informatica

La manutenzione come elemento di garanzia della sicurezza di macchine e impianti

Protezione. Protezione. Protezione. Obiettivi della protezione

Uso delle basi di dati. Informazione e dato. Cos è un database. Tabelle. Esempi di database

Università degli Studi di Parma Facoltà di Scienze MM. FF. NN. Corso di Laurea in Informatica. Ingegneria del Software. La fase di Analisi

Implementing a new ADT based on the HL7 version 3 RIM. Esempio

Università degli Studi di L Aquila. Facoltà di Ingegneria. Corso di Laurea in Ingegneria Elettronica Corso di Sistemi Informativi

Attività destinata a raccogliere e a catalogare documenti con l'obiettivo di farli conoscere e diffonderli.

Corso di Informatica

Fasi del ciclo di vita del software (riassunto) Progetto: generalità. Progetto e realizzazione (riassunto)

Guida al sistema. Dott. Enea Belloni

Tesina per il corso di Psicotecnologie dell apprendimento per l integrazione delle disabilità

Introduzione all OOP!

Identificare le classi in un sistema

Транскрипт:

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 dell algoritmo in un linguaggio di programmazione (LdP) La prima fase coinvolge la specifica di due aspetti: Specifica dei dati che l algoritmo deve manipolare Specifica delle operazioni da eseguire per realizzare l algoritmo Per esprimere i dati in maniera indipendente dai vincoli imposti da un LdPsi utilizzano i tipi di dato astratti Fondamenti di Informatica - Strutture dati 2 1

La nozione di tipo di dato astratto Un tipo di dato astratto è costituito da tre componenti: Il dominio di interesse D, che rappresenta l insieme dei valori che costituiscono il tipo astratto, ed eventuali altri domini, che rappresentano altri valori coinvolti Un insieme di costanti, che denotano valori del dominio di interesse Un insieme di operazioni che si effettuano sugli elementi del dominio di interesse, utilizzando eventualmente elementi degli altri domini: funzioni: calcolano valori sul dominio D predicati: calcolano proprietà vere o false su D Tutte e tre le componenti sono indipendenti dalla rappresentazione e dall uso del tipo stesso nei LdP (la fase di specifica è indipendente dai vincoli imposti dal LdP) Fondamenti di Informatica - Strutture dati 3 Specifica dei tipi di dato astratti La concettualizzazione di un tipo di dato astratto richiede di specificare separatamente le tre componenti: Gli insiemi che rappresentano dominio di interesse e gli eventuali altri domini l insieme delle costanti del tipo le operazioni, attraverso un insieme di funzioni: la segnatura della funzione (ovvero il suo nome e il tipo dei parametri di ingresso ed uscita) specifica di cosa necessita un operazione e cosa restituisce il significato di un operazione può venire specificato algebricamente in modo rigoroso. Noi descriveremo il significato delle operazioni in modo informale. Fondamenti di Informatica - Strutture dati 4 2

Specifica dei tipi di dato astratti Esempio: Concettualizzazione del tipo astratto Booleano. dominio di interesse: {vero, falso} costanti: true e false, che denotano rispettivamente vero e falso operazioni: and : Booleano x Booleano Booleano or : Booleano x Booleano Booleano not : Booleano Booleano Fondamenti di Informatica - Strutture dati 5 Implementazione dei tipi di dato astratti Il tipo di dato astratto deve essere realizzato usando i costrutti del LDP: 1. rappresentazione dei domini usando i tipi concreti del LDP 2. codifica delle costanti attraverso i costrutti del LDP 3. realizzazione delle operazioni attraverso opportune funzioni del LDP Osservazioni: Per uno stesso tipo astratto si possono avere più realizzazioni diverse. Una realizzazione potrebbe avere delle limitazioni rispetto al tipo di dato astratto. Fondamenti di Informatica - Strutture dati 6 3

Tipi di dato astratto in C In C, un ADT si costruisce definendo: il nuovo tipo con typedef una funzione per ogni operazione Esempio: il contatore una entità caratterizzata da un valore intero typedef int counter; con operazioni per resettare il contatore a zero reset(counter*); incrementare il contatore inc(counter*); Fondamenti di Informatica - Strutture dati 7 Organizzazione di un ADT in C La struttura di un ADT comprende quindi: 1. un file header, contenente la typedef la dichiarazione delle funzioni 2. un file di implementazione, contenente una direttiva #include per includere il proprio header (per importare la definizione di tipo) la definizione delle funzioni Fondamenti di Informatica - Strutture dati 8 4

ADT counter 1. file header counter.h typedef int counter; void reset(counter*); void inc(counter*); Definisce in astratto cos è un counter e cosa si può fare con esso 2. file di implementazione counter.c #include "counter.h" void reset(counter c*) { *c=0; } void inc(counter*) { (*c)++; } Specifica come funziona (quale è l implementazione) un counter Fondamenti di Informatica - Strutture dati 9 Operazioni di un ADT Quali operazioni definire per un ADT? costruttori (costruiscono un oggetto di questo tipo, a partire dai suoi costituenti elementari ) selettori (restituiscono uno dei mattoni elementari che compongono l oggetto) predicati (verificano la presenza di una proprietà sull oggetto, restituendo vero o falso) funzioni (agiscono in vario modo sugli oggetti) trasformatori (cambiano lo stato dell oggetto) Fondamenti di Informatica - Strutture dati 10 5

ADT in C limiti Gli ADT così realizzati funzionano, ma molto dipende dall autodisciplina del programmatore Non esiste alcuna protezione contro un uso scorretto dell ADT l organizzazione suggerisce di operare sull oggetto solo tramite le funzioni previste, ma non riesce a impedire di aggirarle a chi lo volesse La struttura interna dell oggetto è visibile a tutti (nella typedef) Superare questi limiti sarà uno degli obiettivi della programmazione ad oggetti Fondamenti di Informatica - Strutture dati 11 6