UNIVERSITÀ DEGLI STUDI DI MACERATA DIPARTIMENTO DI SCIENZE POLITICHE, DELLA COMUNICAZIONE E DELLE RELAZIONI INTERNAZIONALI CORSO DI LAUREA MAGISTRALE IN COMUNICAZIONE E CULTURE DIGITALI CLASSE LM-19 CAPITOLO 2 Formalizzazione ed elaborazione automatica dell'informazione Progettazione dei sistemi multimediali Simone Carletti – CSIA Ufficio Web, eLearning, Ricerca e Sviluppo AA 2016/17 – Week 2 [email protected] Cap.2: Formalizzazione ed elaborazione automatica dell'informazione Dal testo adottato: • • • • • • 2.1. I linguaggi formali 2.4. La macchina di Turing 2.5. Algoritmo: definizione, rappresentazione 2.6. La notazione 2.7. I modelli formali 2.8. Strutture dati e modelli di dati PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 2 di 28 05/10/2016 2.1: I linguaggi formali • Presenti in tutte le applicazioni e in tutte le fasi di uso di un elaboratore elettronico » » » » » » linguaggi di specifica, di programmazione, di scripting linguaggi di configurazione compilatori e interpreti linguaggi di marcatura (html, xml ecc) protocolli di comunicazione interazione uomo macchina (sequenze di click) • Paradigmatici nella teoria » molti problemi informatici sono riconducibili a quello dell'appartenenza di una stringa ad un linguaggio • Definibili in modo formale secondo diversi approcci » algebrico » generativo » riconoscitivo PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 3 di 28 05/10/2016 2.1: I linguaggi formali • Definizioni » Dato un alfabeto Σ definiamo stringa o parola una sequenza finita di caratteri di Σ » Data una stringa x il numero di caratteri che la costituiscono è chiamato lunghezza della stringa ed è indicato come segue: |x|. La stringa di lunghezza zero (cioè non costituita da alcun simbolo) è chiamata stringa vuota o nulla » L’insieme di tutte le stringhe definite sull’alfabeto Σ (inclusa la stringa vuota) è denotato Σ* • Esempi: » 01000010 è una stringa definita sull’alfabeto binario {0, 1}. La sua lunghezza è 8. Essa appartiene quindi a {0, 1}* » La sequenza infinita 010101… non appartiene a {0, 1}* » abracadabra è una stringa definita sull’alfabeto italiano. La sua lunghezza è 11 PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 4 di 28 05/10/2016 2.1: I linguaggi formali esempio applicativo • Programming languages “A compiler usually has two distinct components. A lexical analyzer identifies the tokens of the programming language grammar, e.g. identifiers or keywords, which are themselves expressed in a simpler formal language, usually by means of regular expressions. At the most basic conceptual level, a parser attempts to decide if the source program is valid, that is if it belongs to the programming language for which the compiler was built. A parser usually outputs more than a yes/no answer, typically an abstract syntax tree, which is used by subsequent stages of the compiler to eventually generate an executable containing machine code that runs directly on the hardware, or some intermediate code that requires a virtual machine to execute.” PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 5 di 28 05/10/2016 2.1: I linguaggi formali esempio applicativo • Differenze tra linguaggi compilati / interpretati PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 6 di 28 05/10/2016 2.1: I linguaggi formali esempio applicativo Esempio di syntax tree per l’algoritmo Euclideo while b ≠ 0 if a > b a := a − b else b := b − a return a PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 7 di 28 05/10/2016 2.1: I linguaggi formali esempio applicativo PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 8 di 28 05/10/2016 2.4: La macchina di Turing • Una macchina di Turing (MdT) è una macchina ideale che manipola i dati contenuti su un nastro di lunghezza potenzialmente infinita, secondo un insieme prefissato di regole ben definite • In altre parole, è un modello (matematico) astratto che definisce una macchina in grado di eseguire algoritmi e dotata di un nastro potenzialmente infinito su cui può leggere e/o scrivere dei simboli PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 9 di 28 05/10/2016 2.4: La macchina di Turing • La macchina è formata da una testina di lettura e scrittura con cui è in grado di leggere e scrivere su un nastro potenzialmente infinito e partizionato, in maniera discreta, in caselle. Ad ogni istante di tempo t1 la macchina si trova in uno stato interno s1 ben determinato, risultato dell'elaborazione compiuta sui dati letti • Lo stato interno, o configurazione, di un sistema è la condizione in cui si trovano le componenti della macchina ad un determinato istante di tempo t. Le componenti da considerare sono: » il numero della cella osservata » il suo contenuto » l'istruzione da eseguire PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 10 di 28 05/10/2016 2.4: La macchina di Turing • Implementare un algoritmo in questo contesto significa effettuare una delle quattro operazioni elementari » spostarsi di una casella a destra » spostarsi di una casella a sinistra » scrivere un simbolo preso da un insieme di simboli a sua disposizione su una casella » cancellare un simbolo già scritto sulla casella che sta osservando » oppure fermarsi • Eseguire un'operazione o1, tra gli istanti di tempo t1 e t2, vuol dire passare dallo stato interno s1 al s2 • Formalmente questo si esprime in {s1,a1,o1,s2}, ovvero: nello stato interno s1 la macchina osserva il simbolo a1, esegue l'operazione o1 e si ritrova nello stato interno s2 PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 11 di 28 05/10/2016 2.4: La macchina di Turing • In teoria dei sistemi dinamici, un automa è un sistema dinamico discreto (nella scansione del tempo e nella descrizione del suo stato) e invariante (il sistema si comporta alla stessa maniera indipendentemente dall'istante di tempo in cui agisce) • Gli automi sono spesso utilizzati per descrivere linguaggi formali in informatica teorica, e per questo sono chiamati accettori o riconoscitori di un linguaggio • Il massimo livello di complessità e generalizzazione di un automa è raggiunto dalla macchina di Turing; poté • Turing dimostrò che un tale strumento, dalle caratteristiche così rigidamente definite, è in grado di svolgere un qualsiasi calcolo e capì la stretta relazione tra calcolabilità e dimostrabilità PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 12 di 28 05/10/2016 2.5: Algoritmo: definizione, rappresentazione • Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero determinato di passi • Il termine deriva dalla trascrizione latina del nome del matematico persiano al-Khwarizmi, considerato uno dei primi autori ad aver fatto riferimento a questo concetto • L'algoritmo è un concetto fondamentale dell'informatica, alla base della nozione teorica di calcolabilità: un problema è calcolabile quando è risolvibile mediante un algoritmo • L'algoritmo è un concetto cardine anche della fase di programmazione dello sviluppo di un software: preso un problema da automatizzare, la programmazione costituisce essenzialmente la traduzione di un algoritmo per tale problema in programma, scritto in un certo linguaggio, che può essere quindi effettivamente eseguito da un calcolatore. PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 13 di 28 05/10/2016 2.5: Algoritmo: definizione, rappresentazione Proprietà fondamentali degli algoritmi » atomicità: i passi costituenti devono essere "elementari", ovvero non ulteriormente scomponibili » non ambiguità: i passi costituenti devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale » finitezza: l'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso » terminazione: l'esecuzione deve avere termine dopo un tempo finito » effettività: l'esecuzione deve portare a un risultato univoco » determinismo: a ogni passo, il successivo deve essere uno e uno solo, ben determinato PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 14 di 28 05/10/2016 2.5: Algoritmo: definizione, rappresentazione Diagrammi di flusso - Flow charts • “A flowchart is a type of diagram that represents an algorithm, workflow or process, showing the steps as boxes of various kinds, and their order by connecting them with arrows. This diagrammatic representation illustrates a solution model to a given problem” • Flowcharts are used in analyzing, designing, documenting or managing a process or program in various fields PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 15 di 28 05/10/2016 2.5: Algoritmo: definizione, rappresentazione Flow charts: strutture di controllo • if ( … ) { … } • if ( … ) { … } else { … } • while ( … ) do { … } • do { … } while ( … ) PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 16 di 28 05/10/2016 2.6: La notazione Definizione » “Una notazione è un sistema di scrittura (utilizzato) per rappresentare o descrivere concetti in uno specifico settore disciplinare” (ad es: notazione matematica, informatica, geometrica, musicale, etc.) » “La notazione usa simboli o espressioni simboliche che sono intese avere un preciso significato” PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 17 di 28 05/10/2016 2.6: La notazione, impatto » Milestones dello sviluppo della scrittura e delle notazioni • perfezionamento dell’alfabeto greco • superamento del sistema numerico additivo (romano) e adozione del sistema numerico posizionale (arabo) » La notazione matematica: il linguaggio più noto e meglio sviluppato come strumento di pensiero » Importanza del codice, della scrittura, quale strumento di sviluppo della conoscenza umana e dell’intelligenza: • “The quantity of meaning compressed into small space by algebric signs [...] facilitates the reasoning we are accustomed to carry on by their aid” (C. Babbage, 1948) • “Alleviando il cervello da tutto il lavoro non necesarrio [...] lo rende libero di concentrarsi su problemi più rilevanti” (A. Whitehead, 1948) • La scrittura da strumento di memoria a strumento di pensiero: “Le scritture danno accesso alle articolazioni del linguaggio e ne moltiplicano le possibilità” (E.A. Havelock, 1973) • “L’intelligenza umana è stata liberata dal fardello della necessità di ricordare e ha potuto applicarsi all’innovazione” (D. de Kerckhove, 1995) PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 18 di 28 05/10/2016 2.6: La notazione e i sistemi formali • Nei linguaggi di programmazione » universalità: stessa interpretazione in contesti diversi » non ambiguità: stessa interprestazione da diversi autori » eseguibilità: possono essere eseguiti da un calcolatore/automa • In tutti i sistemi formali » semplicità: nel formulare i costrutti » suggestività: possibilità di riferirsi/suggerire espressioni collegate ed indipendenti » sintesi: utilizzo di simboli, nomi, e funzioni concise che racchiudono i dettagli al loro interno » economia: all’aumentare delle regole grammaticali che descrivono il linguaggio si semplifica l’uso del linguaggio che può essere generato PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 19 di 28 05/10/2016 2.6: La notazione dei sistemi numerici PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 20 di 28 05/10/2016 2.7: I modelli formali, definizione • Un sistema formale è costituito da: » un alfabeto, ovvero un insieme (finito o numerabile) di simboli » una grammatica che specifica quali sequenze finite di questi simboli sono formule ben formate (fbf). La grammatica deve essere ricorsiva, nel senso che deve esistere un algoritmo per decidere se una sequenza di simboli è o meno una formula ben formata » un sottoinsieme dell'insieme delle formule ben formate: gli assiomi (o concetti di base) del sistema formale. Anche in questo caso l'insieme degli assiomi deve essere ricorsivo » alcune regole, dette regole di inferenza, che associano formule ben formate ad n-uple di formule ben formate PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 21 di 28 05/10/2016 2.7: I modelli formali • Caratteristiche dei modelli formali: » costituisce una rappresentazione di una realtà o di un fenomeno; non la realtà stessa » può essere migliorabile » permette di spiegare, capire e approfondire la realtà che rappresenta » un modello diventa superato quando se ne costruisce uno migliore » le componenti del modello possono non corrispondere precisamente con le componenti della realtà rappresentata PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 22 di 28 05/10/2016 2.8: Strutture e modelli di dati: definizione • • • • • • In informatica una struttura dati è un'entità usata per organizzare un insieme di dati all'interno della memoria del computer, ed eventualmente per memorizzarli in una memoria di massa La scelta delle strutture dati da utilizzare è strettamente legata a quella degli algoritmi; per questo, spesso essi vengono considerati insieme La scelta della struttura dati influisce inevitabilmente sull'efficienza degli algoritmi che la manipolano La struttura dati è un metodo di organizzazione dei dati, quindi prescinde dai dati effettivamente contenuti Ciascun linguaggio di programmazione offre strumenti, più o meno sofisticati, per definire strutture dati, ovvero aggregare dati di tipo omogeneo o eterogeneo Più formalmente, i linguaggi forniscono un insieme predefinito di tipi di dato elementari, e le strutture dati sono strumenti per costruire tipi di dati aggregati più complessi PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 23 di 28 05/10/2016 2.8: Strutture e modelli di dati: caratteristiche • Modello dati (astratto) » la struttura dei dati » l’insieme delle operazioni effettuabili sui dati • Modello dati (Sistema Informativo) » » » » la struttura dei dati la verifica di integrità manipolazione dei dati interrogazione dei dati PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 24 di 28 05/10/2016 2.8: Strutture e modelli di dati: caratteristiche Le strutture di dati si differenziano prima di tutto in base alle operazioni che si possono effettuare su di esse e alle prestazioni offerte; questo permette di studiare un'astrazione dall'implementazione » scalare: elementare, numero o carattere » array: omogenea, a una o più dimensioni » record: eterogenea, contiene diversi elementi o campi » classe: è un costrutto tipico dei linguaggi orientati agli oggetti, e consiste in un record a cui sono associate anche dei metodi » lista: dinamica, un insieme di "nodi" collegati linearmente » albero: struttura a nodi, gerarchica » grafo: generalizzazione dell'albero, non gerarchico, può contenere collegamenti ad altri rami e cicli PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 25 di 28 05/10/2016 2.8: Strutture e modelli di dati: esempi PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 26 di 28 05/10/2016 Cap.2: Formalizzazione ed elaborazione automatica dell'informazione • Approfondimenti » » » » » » » » » http://it.wikipedia.org/wiki/Linguaggio_formale http://it.wikipedia.org/wiki/Macchina_di_Turing http://it.wikipedia.org/wiki/Automa_(informatica) http://it.wikipedia.org/wiki/Algoritmo http://en.wikipedia.org/wiki/Abstract_syntax_tree http://en.wikipedia.org/wiki/Flowchart http://it.wikipedia.org/wiki/Notazione http://it.wikipedia.org/wiki/Sistema_formale http://it.wikipedia.org/wiki/Struttura_dati PROGETTAZIONE DEI SISTEMI [email protected] MULTIMEDIALI / LABORATORIO UNIMC AL DIGITALE 27 di 28 05/10/2016 Grazie per l’attenzione [email protected]