Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Progettazione dei sistemi multimediali
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
2
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
3
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
4
2.1: I linguaggi formali Definizioni Esempi:
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: è una stringa definita sull’alfabeto binario {0, 1}. La sua lunghezza è 8. Essa appartiene quindi a {0, 1}* La sequenza infinita … non appartiene a {0, 1}* abracadabra è una stringa definita sull’alfabeto italiano. La sua lunghezza è 11
5
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.”
6
2.1: I linguaggi formali esempio applicativo
Differenze tra linguaggi compilati / interpretati
7
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
8
2.1: I linguaggi formali esempio applicativo
9
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
10
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
11
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
12
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à
13
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.
14
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
15
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
16
2.5: Algoritmo: definizione, rappresentazione
Flow charts: strutture di controllo if ( … ) { … } if ( … ) { … } else { … } while ( … ) do { … } do { … } while ( … )
17
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”
18
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)
19
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
20
2.6: La notazione dei sistemi numerici
21
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
22
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
23
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
24
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 verifica di integrità manipolazione dei dati interrogazione dei dati
25
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
26
2.8: Strutture e modelli di dati: esempi
27
Cap.2: Formalizzazione ed elaborazione automatica dell'informazione
Approfondimenti
28
Grazie per l’attenzione
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.