UNIVERSITÀ DEGLI STUDI DI MACERATA DIPARTIMENTO DI SCIENZE POLITICHE, DELLA COMUNICAZIONE E DELLE RELAZIONI INTERNAZIONALI CORSO DI LAUREA MAGISTRALE IN SCIENZE DELLA COMUNICAZIONE PUBBLICA, D'IMPRESA E PUBBLICITÀ CLASSE LM-59 – ANNO ACCADEMICO 2014/2015 Formalizzazione ed elaborazione automatica dell'informazione Progettazione di sistemi multimediali Simone Carletti – CSIA Ufficio Web, eLearning, Ricerca e Sviluppo P03 – 05.03.15 [email protected] Argomenti (1) Introduzione alla progettazione del software e allo sviluppo sostenibile • Riferimenti nel testo » » » » » » 1.1. 1.3. 1.4. 1.5. 1.6. 1.7. Il concetto di sviluppo sostenibile La gestione della globalizzazione dell’informazione L’informatica sociale Reti socio tecnologiche di interattività Il sistema informativo come modello di rete socio… Punti di osservazione di un sistema informativo • Approfondimenti » http://en.wikipedia.org/wiki/Systems_development_life_cycle » http://it.wikipedia.org/wiki/Metodologia_agile » “A sustainable development experience” PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 2 di 20 05/03/2015 Argomenti (2) Formalizzazione ed elaborazione automatica dell'informazione • Riferimenti nel testo » » » » » » 2.1. I linguaggi formali 2.2. 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 DI SISTEMI [email protected] MULTIMEDIALI 3 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 4 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 5 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 6 di 20 05/03/2015 I linguaggi formali, esempio applicativo • Differenze tra linguaggi compilati / interpretati PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 7 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 8 di 20 05/03/2015 I linguaggi formali, esempio applicativo PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 9 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 10 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 11 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 12 di 20 05/03/2015 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 • 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 DI SISTEMI [email protected] MULTIMEDIALI 13 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 14 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 15 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 16 di 20 05/03/2015 Algoritmo: definizione, rappresentazione Flow charts: strutture di controllo • if (cond1 ) { blocco1 } • if (cond1) {blocco1} else {blocco2} • while (cond1) do {blocco1} • do {blocco2} while (cond2) PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 17 di 20 05/03/2015 Introduzione alla progettazione del software e allo sviluppo sostenibile • Approfondimenti » » » » » » » » http://en.wikipedia.org/wiki/Formal_language http://en.wikipedia.org/wiki/Abstract_syntax_tree http://en.wikipedia.org/wiki/Euclidean_algorithm http://it.wikipedia.org/wiki/Macchina_di_Turing http://it.wikipedia.org/wiki/Automa_(informatica) http://it.wikipedia.org/wiki/Algoritmo http://www.treccani.it/enciclopedia/algoritmo/ http://en.wikipedia.org/wiki/Flowchart PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 18 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 19 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 20 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 21 di 20 05/03/2015 La notazione dei sistemi numerici PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 22 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 23 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 24 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 25 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 26 di 20 05/03/2015 Strutture e modelli di dati: esempi PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 27 di 20 05/03/2015 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 DI SISTEMI [email protected] MULTIMEDIALI 28 di 20 05/03/2015 Notazione, sistemi formali, strutture dati • Approfondimenti » http://it.wikipedia.org/wiki/Notazione » http://en.wikipedia.org/wiki/Formal_system » http://it.wikipedia.org/wiki/Struttura_dati PROGETTAZIONE DI SISTEMI [email protected] MULTIMEDIALI 29 di 20 05/03/2015 Grazie per l’attenzione [email protected]