Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAmando Salvadori Modificato 8 anni fa
1
Formalizzazione ed elaborazione automatica dell'informazione Progettazione di sistemi multimediali U NIVERSITÀ DEGLI S TUDI DI M ACERATA D IPARTIMENTO DI S CIENZE P OLITICHE, DELLA C OMUNICAZIONE E DELLE R ELAZIONI I NTERNAZIONALI C ORSO DI LAUREA M AGISTRALE IN S CIENZE DELLA COMUNICAZIONE PUBBLICA, D ' IMPRESA E PUBBLICITÀ C LASSE LM-59 – A NNO A CCADEMICO 2014/2015 Simone Carletti – CSIA Ufficio Web, eLearning, Ricerca e Sviluppo P03 – 05.03.15 simone.carletti@unimc.it
2
Argomenti (1) Introduzione alla progettazione del software e allo sviluppo sostenibile Riferimenti nel testo »1.1. Il concetto di sviluppo sostenibile »1.3. La gestione della globalizzazione dell’informazione »1.4. L’informatica sociale »1.5. Reti socio tecnologiche di interattività »1.6. Il sistema informativo come modello di rete socio… »1.7. Punti di osservazione di un sistema informativo Approfondimenti »http://en.wikipedia.org/wiki/Systems_development_life_cyclehttp://en.wikipedia.org/wiki/Systems_development_life_cycle »http://it.wikipedia.org/wiki/Metodologia_agilehttp://it.wikipedia.org/wiki/Metodologia_agile »“A sustainable development experience”
3
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
4
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
5
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
6
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.”
7
I linguaggi formali, esempio applicativo Differenze tra linguaggi compilati / interpretati
8
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
9
I linguaggi formali, esempio applicativo
10
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
11
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 t 1 la macchina si trova in uno stato interno s 1 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
12
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
13
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à
14
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.
15
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
16
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
17
Algoritmo: definizione, rappresentazione Flow charts: strutture di controllo if (cond1 ) { blocco1 } if (cond1) {blocco1} else {blocco2} while (cond1) do {blocco1} do {blocco2} while (cond2)
18
Introduzione alla progettazione del software e allo sviluppo sostenibile Approfondimenti »http://en.wikipedia.org/wiki/Formal_languagehttp://en.wikipedia.org/wiki/Formal_language »http://en.wikipedia.org/wiki/Abstract_syntax_treehttp://en.wikipedia.org/wiki/Abstract_syntax_tree »http://en.wikipedia.org/wiki/Euclidean_algorithmhttp://en.wikipedia.org/wiki/Euclidean_algorithm »http://it.wikipedia.org/wiki/Macchina_di_Turinghttp://it.wikipedia.org/wiki/Macchina_di_Turing »http://it.wikipedia.org/wiki/Automa_(informatica)http://it.wikipedia.org/wiki/Automa_(informatica »http://it.wikipedia.org/wiki/Algoritmohttp://it.wikipedia.org/wiki/Algoritmo »http://www.treccani.it/enciclopedia/algoritmo/http://www.treccani.it/enciclopedia/algoritmo/ »http://en.wikipedia.org/wiki/Flowcharthttp://en.wikipedia.org/wiki/Flowchart
19
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”
20
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)
21
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
22
La notazione dei sistemi numerici
23
I modelli formali, definizione Un sistema formale è costituito da: »un alfabeto, ovvero un insieme (finito o numerabile) di simbolinumerabilesimboli »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 formataformule ben formatericorsivaalgoritmo »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 formateregole di inferenza
24
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
25
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 massainformaticadatimemoriacomputermemoria di massa La scelta delle strutture dati da utilizzare è strettamente legata a quella degli algoritmi; per questo, spesso essi vengono considerati insiemealgoritmi 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 eterogeneolinguaggio di programmazione 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ù complessitipi di dato
26
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'implementazioneastrazione »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 metodiclasselinguaggi orientati agli oggettimetodi »lista: dinamica, un insieme di "nodi" collegati linearmentelista »albero: struttura a nodi, gerarchicaalbero »grafo: generalizzazione dell'albero, non gerarchico, può contenere collegamenti ad altri rami e cicligrafo
27
Strutture e modelli di dati: esempi
28
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
29
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
30
Grazie per l’attenzione
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.