L'Elaborazione e la Strutturazione dell'informazione

Documenti analoghi
n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Informatica. Come si risolve un problema?

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione

Laboratorio di Programmazione

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

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

Corso di Informatica di Base

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Marta Capiluppi Dipartimento di Informatica Università di Verona

Elementi di informatica

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Introduzione alla programmazione

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

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

Problemi, algoritmi, calcolatore

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

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

L ELABORATORE ELETTRONICO!

Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii)

Sviluppo di programmi

Algoritmi e soluzione di problemi

ALGORITMI: PROPRIETÀ FONDAMENTALI

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Diagrammi a blocchi 1

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

L ELABORATORE ELETTRONICO

Rappresentazione con i diagrammi di flusso (Flow - chart)

Elaboratore Elettronico

Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Il concetto di calcolatore e di algoritmo

Fondamenti di Informatica 1 (I Modulo) Introduzione agli algoritmi. Roberto Basili a.a

LABORATORIO DI INFORMATICA

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Sistemi Web per il turismo - lezione 3 -

Fondamenti di Informatica

Parte Seconda: Fondamenti di informatica

Cosa è l Informatica?

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Analisi e programmazione 1

Strutture dati e loro organizzazione. Gabriella Trucco

LA METAFORA DELL UFFICIO

Diagrammi a blocchi 1

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

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

Fasi della programmazione. Gabriella Trucco

Dispensa di Informatica II.1

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica

Capitolo 3 L elaborazione e la strutturazione dell informazione

Università degli Studi di Roma Tor Vergata Facoltà di Ingegneria Corso di Laurea in Ingegneria Medica. Compressione dati

Unità di apprendimento 6. Dal problema al programma

Descrizione di un algoritmo

Formalismi per la descrizione di algoritmi

Lezione 5. La macchina universale

Rappresentazione degli algoritmi

DESCRIZIONI RIGOROSE c7

Cosa si intende con stato

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Algoritmi. Pagina 1 di 5

2. Algoritmi e Programmi

Introduzione agli Algoritmi

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

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

Dall analisi alla codifica (1)

generalità concetti di base

Unità di apprendimento 6. Dal problema al programma

Lezione 1. Problemi Algoritmi Programmi

Informatica, Algoritmi, Linguaggi

Informatica. Traccia. Algoritmi, dati e programmi. Elaborazione di informazione. informazione. rappresentazione dell informazione (dati) dati

Sistemi di Elaborazione delle Informazioni

Algoritmi e diagrammi di flusso

Calcolo numerico e programmazione Elementi di logica

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Teoria dell Informazione

1 Esercizi in pseudocodice

Algoritmi e diagrammi di flusso versione biennio

Elementi di programmazione

Algoritmi e Strutture Dati

FONDAMENTI DI INFORMATICA

Fabrizio Messina, Marzio Pennisi

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

= < < < < < Matematica 1

Transcript:

L'Elaborazione e la Strutturazione dell'informazione Maurizio Palesi Maurizio Palesi 1

Soluzione di un Problema Maurizio Palesi 2

Cos è Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Un algoritmo è un metodo per la soluzione di un problema adatto ad essere implementato sotto forma di programma Maurizio Palesi 3

Altre Definizioni di Algoritmo Un algoritmo si può definire come un procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito Maurizio Palesi 4

Derivazione del Termine Il termine deriva dal nome del matematico persiano Muhammad ibn Musa Al-Khwarizmi Uno dei primi autori ad aver fatto riferimento esplicitamente a questo concetto Tuttavia gli algoritmi erano presenti anche nelle antiche tradizioni matematiche Es., la matematica babilonese, quella cinese o del Kerala trasmettevano le conoscenze in forma algoritmica Maurizio Palesi 5

Semplicita vs. Ambiguita Affermando che i passi costituenti di un algoritmo debbano essere semplici, si intende soprattutto che essi siano specificati in modo non ambiguo Immediatamente evidenti a chi sarà chiamato ad applicare l'algoritmo, cioè il suo esecutore Maurizio Palesi 6

Semplicita vs. Ambiguita Rompete le uova può essere un passo legittimo di un algoritmo di cucina, e potrebbe esserlo anche Aggiungete sale quanto basta se possiamo assumere che l'esecutore sia in grado di risolvere da solo l'ambiguità di questa frase Preparate un pentolino di crema pasticciera non può probabilmente considerarsi semplice Potrebbe però essere associato ad un opportuno rimando ad un'altra sezione del ricettario, che fornisca un algoritmo apposito per questa specifica operazione Infine, una ricetta che preveda la cottura a microonde non può essere preparata da chi è sprovvisto dell'apposito elettrodomestico! Maurizio Palesi 7

Esempi di Algoritmi Ricetta per cucinare gli spaghetti Metti l acqua nella pentola Fai bollire l acqua Metti la pasta nell acqua Aggiungi un pò di sale Attendi 6 minuti Scola la pasta Maurizio Palesi 8

Esempi di Algoritmi Verifica se un numero è pari o dispari Prendi il numero Calcola il resto della divisione intera del numero per 2 Se il resto è zero Allora il numero è pari Altrimenti il numero è dispari Maurizio Palesi 9

Esempi di Algoritmi Ricerca utente in un elenco telefonico Dati Un insieme ordinato di coppie <nome, numero> Un nome X da ricercare 1) Leggi la prima coppia <nome, numero> 2) Se non hai oltrepassato l'ultima coppia Allora: Se nome = X allora il numero di telefono di X è quello letto; Altrimenti leggi la prossima coppia e vai al passo 2) Altrimenti Il nome X cercato non è nell'elenco Maurizio Palesi 10

Esempi di Algoritmi Ricerca di un utente X in un elenco telefonico (alternativa) 1) Leggi la prima coppia <nome, numero> 2) Se non hai oltrepassato l'ultima coppia E nome precede X (secondo l'ordine alfabetico) Allora osserva la prossima coppia e ripeti il passo 2) 3) Se hai oltrepassato l'ultima coppia OPPURE nome segue X Allora X non è presente nell'elenco 4) Altrimenti il numero telefonico di X è l'ultimo letto Maurizio Palesi 11

Proprietà degli Algoritmi L'algoritmo è caratterizzato da Finitezza: Composto da un numero finito di passi elementari. Le operazioni sono eseguite un numero finito di volte Non ambiguità: I risultati non variano in funzione della macchina/persona che esegue l'algoritmo (deterministico) Realizzabilità: Deve essere eseguibile con le risorse a disposizione Maurizio Palesi 12

Proprietà degli Algoritmi ma gli esempi precedenti possiedono queste proprietà? Problemi presenti Ambiguità Ipotesi implicite sulle capacità dell esecutore Uso del linguaggio naturale Maurizio Palesi 13

Definire un Algoritmo Per definire un algoritmo è necessario Condurre un'attenta analisi del problema Individuare i possibili ingressi Precisare le uscite Definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzione E conveniente suddividere il problema in piccoli sottoproblemi Maurizio Palesi 14

Sviluppo di un Programma PROBLEMA ANALISI SOLUZIONE INFORMALE SISTEMA INFORMATICO: STRUMENTI DI SUPPORTO EVOLUTI (CASE) FORMALIZZAZIONE SOLUZIONE FORMALE ALGORITMO SISTEMA INFORMATICO: AMBIENTE DI SVILUPPO TRADIZIONALE PROGRAMMAZIONE PROGRAMMA (alto livello) ESECUTORE DEL LINGUAGGIO DI ALTO LIVELLO TRADUZIONE PROGRAMMA (macchina) ESECUTORE DEL LINGUAGGIO MACCHINA (HW) ESECUZIONE Maurizio Palesi 15

Rappresentare un Algoritmo E necessario far riferimento a dei formalismi che Non introducano ambiguità Siano universalmente riconosciuti ed interpretati allo stesso modo da un generico esecutore Permettano di rappresentare in modo efficace un algoritmo Costituiscano un utile strumento per poi poter passare alla fase di codifica in un linguaggio di programmazione Maurizio Palesi 16

Rappresentare un Algoritmo Rappresentazione grafica Diagramma di flusso (noto anche come diagramma a blocchi o flow-chart) Maurizio Palesi 17

Rappresentare un Algoritmo Rappresentazione testuale Notazione Lineare Strutturata (o pseudocode) Maurizio Palesi 18

Operazioni di Base Le operazioni primarie sono Trasferimento di informazioni (istruzioni di I/O) Lettura dati, scrittura risultati, visualizzazione dati intermedi Esecuzione di calcoli (valutazione espressioni) Istruzioni di assegnamento Strutture di controllo (che modificano il flusso sequenziale di esecuzione delle operazioni) Maurizio Palesi 19

Variabili (1/2) Un algoritmo descrive la soluzione NON di un singolo problema...ma di un'intera classe di problemi in cui cambiano solo i dati di partenza Le istruzioni di un algoritmo non fanno riferimento ai valori utilizzati dall'esecutore...ma a variabili il cui valore non è fissato a priori Le variabili possono essere viste come contenitori per i dati Maurizio Palesi 20

Variabili (2/2) Una variabile ha un nome ed un valore Il valore contenuto nella variabile può cambiare durante l'esecuzione del programma In molte situazioni è rilevante definire anche il tipo della variabile Cioè l'insieme dei valori che può assumere Maurizio Palesi 21

Esempio (scambio di variabili) x y 7 9 t 0 x y y x x y; 7 9 t 1 9 9 t 2 y x; 9 9 t 3 9 9 t 4 x y tempo Maurizio Palesi 22

Esempio (scambio di variabili) tmp x y?? 7 9 t 0 tmp x tmp x; 7 7 9 t 1 x y 7 7 9 t 2 y tmp x y; 7 7 9 t 3 7 9 9 t 4 y tmp; 7 9 9 t 5 7 9 7 t 6 tmp x y tempo Maurizio Palesi 23

Simboli Convenzionali ingresso/uscita inizializzazione documento Elaborazione inizio/fine input manuale elab. predefinita connessioni disco decisione mem. sequenziale Maurizio Palesi 24

Istruzioni di I/O Lettura di dati in ingresso (input) Scrittura dei risultati in uscita (output) Diagramma a blocchi Pseudocodice leggi A leggi A scrivi B scrivi B Maurizio Palesi 25

Istruzione di Assegnamento Concetto di variabile Identificata da un etichetta/identificatore simbolico Può essere comodo pensare alla variabile come ad un contenitore in cui possiamo memorizzare o reperire dei dati utilizzati durante il calcolo L istruzione di assegnamento permette di assegnare un valore ad una variabile A = 5 Alla variabile A viene assegnato il valore 5 Maurizio Palesi 26

Istruzione di Assegnamento Inizializzazione All inizio di un algoritmo una variabile non ha alcun valore Non ha quindi senso utilizzarla in una espressione (è un errore!) Essa deve essere inizializzata O esplicitamente mediante un assegnamento Oppure mediante una operazione di lettura START START START B = 0 leggi B A = B + 3 ERRORE B non è inizializzata A = B + 3 A = B + 3 CORRETTO CORRETTO Maurizio Palesi 27

Istruzione di Assegnamento E stato usato il simbolo = per indicare l istruzione di assegnamento Alcuni testi/autori indicano invece il simbolo (per evitare confusione con l operatore di uguaglianza) Dato il seguente frammento di codice A = 5 A = A + 1 Cosa fa quell istruzione? L esecutore esegue i seguenti passi Prima valuta l espressione a destra, cioè calcola il valore di A+1 che vale 6 Dopo assegna tale valore alla variabile a sinistra, cioè ad A Alla fine dell esecuzione di quella istruzione quindi, A vale 6 Maurizio Palesi 28

Valutazione delle Espressioni L esecutore è in grado di valutare espressioni aritmetiche Diagramma a blocchi Pseudo-codice B = 5*(82-35)/7 B = 5*(82-35)/7 A = (B+34)/B*2 A = (B+34)/B*2 Maurizio Palesi 29

Rappresentazione degli Algoritmi I diagrammi di flusso possono presentarsi Ad un livello generale Ad un livello particolare A seconda del livello di dettaglio con cui specificano le operazioni da compiere E opportuno procedere per fasi successive Un diagramma globale (di massima) per focalizzare le operazioni essenziali da compiere Un diagramma di flusso più particolareggiato, che tenga conto di operazioni più semplici e più elementari Maurizio Palesi 30

Tecniche di Programmazione Programmazione top-down Scomposizione iterativa del problema in sottoproblemi I sottoproblemi devono essere indipendenti ed avere interfacce ben definite Visibilità dei dettagli di ogni sottoproblema Programmazione bottom-up Maurizio Palesi 31

Problema 1 Determinare il maggiore di due numeri, x e y (svolto alla lavagna) Maurizio Palesi 32

Problema 2 Determinare il maggiore di n numeri (svolto alla lavagna) Maurizio Palesi 33

Esempio 3 Somma dei primi n numeri naturali (svolto alla lavagna) Maurizio Palesi 34

Problema 4 Calcolo del prodotto di due numeri interi mediante somme ripetute (svolto alla lavagna) Maurizio Palesi 35

Strutture Dati Fondamentali Problema duale rispetto a quello della definizione di algoritmi Wirth: algoritmi + strutture dati = programmi L uso di strutture dati adeguate semplifica la soluzione di un problema Classificazione Strutture dati statiche Strutture dati dinamiche Maurizio Palesi 36

Strutture Dati Statice Struttura e dimensioni fisse Array o vettore: insieme ordinato di variabili omogenee identificate dalla posizione all interno della struttura Variante N-dimensionale: matrice Record: insieme a struttura fissa di variabili disomogenee identificate da un nome detto campo Esempio: le informazioni contenute in una carta di identità Maurizio Palesi 37

Strutture Dati Dinamiche Struttura e dimensioni variabili Lista Coda (FIFO, First In First Out) Pila (LIFO, Last In First Out) Albero Grafo Composte da un elemento base con riferimenti ad altri elementi analoghi Gli elementi vengono creati e inseriti o distrutti quando necessario Maurizio Palesi 38

Rappresentazioni 1 a c 4 7 r * 0 4 a a : h a) N-1 e r campo1 dato1 c f k u campo2 campo3 dato2 dato3 a b g t x campo4 dato4 campo5 dato5 b) c h e d) h g r t x a b e h z b a f k u c) e) Maurizio Palesi 39

Algebra di Boole L algebra di Boole (dal suo inventore G. Boole) serve a descrivere le operazioni logiche Componenti dell algebra di Boole Operatori booleani Regole di trasformazione ed equivalenza tra operatori booleani Gli operandi booleani assumono solo due valori: Vero/Falso True/False 1/0 Sì/No Maurizio Palesi 40

Operatori e Tavole di Verità A not A 0 1 1 0 A B A and B 0 0 0 0 1 0 1 0 0 1 1 1 A B A or B 0 0 0 0 1 1 1 0 1 1 1 1 A B A xor B 0 0 0 0 1 1 1 0 1 1 1 0 A B A B 0 0 1 0 1 0 1 0 0 1 1 1 A B A nand B 0 0 1 0 1 1 1 0 1 1 1 0 A B A nor B 0 0 1 0 1 0 1 0 0 1 1 0 Maurizio Palesi 41

Dalla Tabella All'Espressione Conosciamo la tabella, ma non sappiamo qual è l espressione Ci basta trovare una delle espressioni equivalenti che hanno questa tabella della verità a b c espressione F F F F F F T F F T F F F T T T T F F F T F T T T T F T T T T T Maurizio Palesi 42

Dalla Tabella All'Espressione Identificazione di tutte le righe che hanno valore T Per ogni riga identificata si costruisce una sottoespressione prodotto (and) di tutte le lettere che sono prese nella loro forma naturale o complementata seguendo i seguenti principi Le lettere che nella riga in esame hanno valore T sono prese nella forma naturale Le lettere che nella riga in esame hanno valore F sono prese nella forma complementata Le sottoespressioni prodotto così ottenute vengono sommate (or) tra loro per realizzare l espressione desiderata Maurizio Palesi 43

Dalla Tabella All'Espressione a b c espressione riga 0 F F F F riga 1 F F T F riga 2 F T F F riga 3 F T T T riga 4 T F F F riga 5 T F T T riga 6 T T F T riga 7 T T T T Maurizio Palesi 44

Dalla Tabella All'Espressione a b c espressione riga 0 F F F F riga 1 F F T F riga 2 F T F F riga 3 F T T T ( a) b c riga 4 T F F F riga 5 T F T T a ( b) c riga 6 T T F T a b ( c) riga 7 T T T T a b c Maurizio Palesi 45

Dalla Tabella All'Espressione a b c espressione riga 0 F F F F riga 1 F F T F riga 2 F T F F riga 3 F T T T m 1 = ( a) b c riga 4 T F F F riga 5 T F T T m 2 = a ( b) c riga 6 T T F T m 3 = a b ( c) riga 7 T T T T m 4 = a b c expr = m 1 + m 2 + m 3 + m 4 expr = (( a) b c) + (a ( b) c) + (a b ( c)) + (a b c) Maurizio Palesi 46

Verifica a b c m 1 = ( a) b c m 2 = a ( b) c m 3 = a b ( c) m 4 = a b c F F F F F F F F F F T F F F F F F T F F F F F F F T T T F F F T T F F F F F F F T F T F T F F T T T F F F T F T Maurizio Palesi 47 m 1 + m 2 + m 3 + m 4 T T T F F F T T