Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati

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

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Algoritmi e Strutture Dati

Concetti Introduttivi. Il Computer

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Introduzione alla programmazione

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Concetti di base dell ICT

Le aree dell informatica

Algoritmo: procedimento non ambiguo che in un numero finito di passi risolve un problema (o una classe di problemi)

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Cosa è l Informatica?

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

Problemi, algoritmi, calcolatore

Sviluppo di programmi

Algoritmi e Linguaggi

I Tipi di Dato Astratto

Il concetto di informatica. Graziano Pravadelli (2012)

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Corso di Informatica di Base

Strutture dati e loro organizzazione. Gabriella Trucco

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

Il concetto di calcolatore e di algoritmo

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia. Università degli Studi di Salerno

L ELABORATORE ELETTRONICO

Salvatore Cuomo Prolusione

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il calcolatore. Architettura di un calcolatore (Hardware)

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Struttura del calcolatore

Cos'e un linguaggio di programmazione?

Algoritmi e diagrammi di flusso

Introduzione agli Algoritmi

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

3. Programmi e algoritmi

FONDAMENTI DI INFORMATICA

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio

Le aree dell informatica

PIANO DI LAVORO. Programmazione Didattica per Competenze. Indirizzo Informatica e Telecomunicazioni. Articolazione Informatica DOCENTE:

Fondamenti di Informatica (lettere A-I) A

Linguaggi di programmazione

Una breve introduzione all implementazione in C di algoritmi su grafo

LABORATORIO DI INFORMATICA

A proposito di informatica

CONCETTI FONDAMENTALI

Appunti di informatica. Lezione 5 anno accademico Mario Verdicchio

Introduzione agli Algoritmi

Informatica, Algoritmi, Linguaggi

Strutture fisiche e strutture di accesso ai dati

Teoria dell Informazione

Introduzione. Sommario. Il software. Definizione di Ingegneria del software

Corso di Matematica per la Chimica

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Algoritmi e Programmi

Algoritmi e Strutture Dati

Studio degli algoritmi

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

FONDAMENTI DI INFORMATICA

Algoritmi e diagrammi di flusso versione biennio

Algoritmi e Strutture Dati

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

generalità concetti di base

Corso di Laurea Ingegneria Civile

Lezioni di Ricerca Operativa

L ELABORATORE ELETTRONICO!

Programmazione C Massimo Callisto De Donato

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Annamaria Bria 1

Algoritmi e Strutture Dati

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Introduzione alla programmazione strutturata

Lezione 1. Problemi Algoritmi Programmi

Architettura di un calcolatore

Corso di Access. Prerequisiti. Modulo L2 A (Access) Le query

Fondamenti VBA. Che cos è VBA

Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output

Algoritmi e Strutture Dati

DESCRIZIONI RIGOROSE c7

Concetti di base di informatica

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Pag Politecnico di Torino 1

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Corso di Perfezionamento

INFORMATICA PER LE SCIENZE UMANE a.a. 2016/2017

L INFORMATICA c1. Informatica è qualcosa che ha a che fare con l uso del computer

Programmazione di INFORMATICA e Laboratorio

Elena Baralis 2007 Politecnico di Torino 1

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Corso di Laurea Ingegneria Informatica

Informatica di Base - 6 c.f.u.

Tipo di Dato. Abstract Data Types. Tipi di Dato Astratti /2. Tipi di Dato Astratti /1

Progettazione di algoritmi e attributi

Corso Programmazione

Algoritmi e Strutture dati a.a. 2013/2014

Transcript:

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

Informatica 3 Lezione 10 - Modulo 1 Perchè studiare algoritmi e strutture dati

Importanza delle strutture dati Obiettivo: efficienza Calcolatori più potenti applicazioni più complesse maggiori capacità di calcolo e programmi sempre più efficienti occorrono principi che permettono di progettare programmi efficienti

Organizzazione dei dati Struttura dati = qualsiasi rappresentazione dei dati e le operazioni associate ad essa Esempio: Collezione di dati: array di record Operazioni: cercare, processare in qualsiasi ordine, modificare Scegliere la corretta struttura dati esecuzioni in pochi secondi oppure in molti giorni

Soluzione efficiente Una soluzione si dice efficiente se risolve il problema soddisfacendo vincoli di risorse Spazio (su disco, in memoria centrale) Tempo Il costo di una soluzione dipende dalla quantità di risorse che la soluzione consuma Tempo

Scegliere una struttura dati Passi da seguire: Analizzare il problema per determinare i vincoli delle risorse Determinare le operazioni di base da supportare. Quantificare i vincoli di risorse per ciascuna operazione Selezionare la struttura dati che meglio soddisfa i requisiti

Cosa chiedersi I dati vengono inseriti nella struttura dati tutti all inizio oppure tra un inserimento e l altro vengono effettuate altre operazioni? I dati possono essere cancellati? I dati devono essere processati secondo un particolare ordine oppure occorre potervi accedere in modo casuale? strutture dati più o meno complesse

Costi e benefici Ogni struttura dati ha costi e benefici Raramente una struttura dati è migliore di un altra in tutte le situazioni Una struttura dati richiede: spazio per ogni informazione da memorizzare tempo per eseguire le operazioni di base sforzo di programmazione Esempio: banca Apertura conto: pochi minuti Transazioni: pochi secondi Chiusura conto: durante la notte

Obiettivi del corso Studiare le strutture dati più comuni e alcune strutture dati più complesse Analizzare costi/benefici di queste strutture dati Comprendere come misurare l efficienza di un algoritmo o di una struttura dati giudicare anche nuove strutture dati

Informatica 3 Lezione 10 - Modulo 2 Definizioni di base

Tipi di dati astratti Tipi di dati astratti o Abstract Data Type (ADT): definizione di un tipo di dato solamente in termini di insieme di valori e insieme di operazioni sul tipo di dato Ogni operazione di un ADT è definita attraverso i suoi input e output I dettagli di come il tipo di dato è implementato sono nascosti Una struttura dati è l implementazione fisica di un ADT Ogni operazione associata con l ADT viene implementata tramite una o più funzioni

Forma fisica e logica dei dati I dati hanno una forma logica e una forma fisica Forma logica: definizione di un dato all interno dell ADT Es. Interi (intesi in senso matematico) con operazioni +, - Forma fisica: implementazione del dato all interno di una struttura dati Es. intero a 16/32 bit, overflow

Relazione tra dati, ADT e strutture dati Tipo di dato ADT: Tipo Operazioni Dato: forma logica Struttura dati: Spazio di memoria Funzioni Dato: forma fisica

Problema Problema: compito da eseguire può essere pensato in termini di input ed output la definizione del problema dovrebbe includere i vincoli sulle risorse che possono essere consumati in una soluzione accettabile I problemi possono essere visti come funzioni matematiche Una funzione mappa input (dominio) in output (codominio) Un input può essere un singolo numero oppure una collezione di dati I valori che costituiscono un input vengono detti parametri della funzione In corrispondenza di un input la funzione calcola un output

Algoritmi e programmi Algoritmo: metodo o processo per risolvere un problema Es. ricetta Un algoritmo riceve l input di un problema (funzione) e lo trasforma in output Un problema può essere risolto attraverso diversi algoritmi

Proprietà di un algoritmo Proprietà che deve possedere un algoritmo: Correttezza Deve essere costituito da una serie di passi concreti Non deve essere ambiguo Deve essere costituito da un insieme finito di passi Deve terminare Un programma è un istanza, o rappresentazione concreta, di un algoritmo in un linguaggio di programmazione

Concetti di matematica Insiemi Relazioni Logaritmi Ricorsione Somme e ricorrenze Dimostrazioni per assurdo e per induzione Stima