La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona Corso di.

Presentazioni simili


Presentazione sul tema: "1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona Corso di."— Transcript della presentazione:

1 1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona http://www.sci.univr.it/~cristani Corso di Informatica per Giurisprudenza Lezione 2

2 2 Agenda ä Concetto di algoritmo: ä Algoritmi e programmi ä Macchina a stati ä Linguaggi e calcolabilità ä Linguaggi di Programmazione ä Semantica operazionale ä Funzioni e denotazione ä Equivalenza funzionale e computazionale ä Codifica dei dati ä Tipi elementari ä Strutture di dato

3 3 Macchina a stati (1) ä Formalizzazione del concetto di calcolo ä Operazioni base di una macchina a stati: ä Lettura dellinput ä Scrittura delloutput ä Transizione di stato ä Memorizzazione dati

4 4 Macchina a stati (2) ä Calcolo: ä Stato iniziale ä Sequenza di caratteri di input ä Sequenza di stati ed azioni di trasformazione dellinput ä Sequenza di scritture delloutput ä Stati finali

5 5 Rappresentazione a grafo

6 6 Esempio di macchina a stati (1) ä Un apparecchio telefonico può essere riguardato come una macchina a stati ä Stato iniziale: segnale assente (s 0 ) ä Stati intermedi:segn. di linea(s 1 ) segn. di libero(s 2 ) segn. di occupato(s 3 ) segn. di assenza di linea (s 4 ) ä Stato finale:conversazione conclusa(s 5 ) ä Linguaggio riconosciuto: Attivazione di una conversazione telefonica

7 7 Esempio di macchina a stati (2) ä Modello di funzionamento ä Stato iniziale:segnale assente ä Sequenza: ä Accesso(a); ä Se linea Componi(c); ä Se libero Conversazione(p) altrimenti se occupato Concludi(e)

8 8 Esempio di macchina a stati (3) p s0s0 s1s1 s4s4 s2s2 s3s3 s5s5 a a c c e e e

9 9 Il concetto di linguaggio (1) ä Alfabeto ä Un insieme finito e non vuoto i cui elementi sono detti SIMBOLI ä Stringa ä Una sequenza di lunghezza qualsiasi di simboli di un alfabeto ä Stringa vuota ä La sequenza di lunghezza zero su un qualsiasi alfabeto (è denotata con )

10 10 Il concetto di linguaggio (2) ä Sia un alfabeto, ä * denota linsieme delle stringhe su ä + denota linsieme delle stringhe su tranne la stringa vuota ä + = * - { } ä Linguaggio ä Sottoinsieme delle stringhe su di un alfabeto ä L *

11 11 Un esempio ä = {a,b,c} ä * = {, a, b, c, aa, ab, ac, ba, bb, bc, ca, cb, cc, aaa, aab, aac, …} ä Un linguaggio ä L = {a, aa, aaa, aaaa, aaaaa, …}

12 12 Grammatiche (1) ä Dato un alfabeto V T detto alfabeto terminale, ä un alfabeto V N detto alfabeto nonterminale, ä un elemento s dellalfabeto nonterminale detto simbolo distinto, ä un insieme P di regole di produzione che trasformano stringhe di (V T V N )* in stringhe nonvuote su V T V N, ä la quadrupla è detta una grammatica

13 13 Grammatiche (2) ä Date due stringhe e di (V T V N )* diremo che deriva ( )se e solo se scrivesi ä = x y; ä = x y ä Con x, y,, in (V T V N )* ä Cè una regola di produzione

14 14 Grammatiche (3) ä Una stringa è derivata indirettamente da unaltra quando si può compiere una sequenza di passi di derivazione che conduce dalla prima alla seconda stringa ä Il linguaggio generato da una grammatica è costituito dalle stringhe terminali derivate indirettamente dal simbolo distinto ä Ogni stringa del linguaggio generato da una grammatica si dice sinttaticamente corretta per la grammatica stessa

15 15 Grammatiche (4) ä Un linguaggio generato da una grammatica si dice grammaticale ä IMPORTANTISSIMO: ä Un linguaggio è grammaticale se e solo se è riconoscibile da una macchina a stati

16 16 Osservazioni (1) ä Nonostante gli alfabeti siano insiemi finiti i linguaggi possono essere infiniti ä La stringa vuota è uguale per qualsiasi alfabeto

17 17 Osservazioni (2) ä Le lettere dellItaliano sono simboli di un alfabeto ä Possiamo vedere come linguaggio: ä Il lessico (radici e desinenze delle parole) ä Il vocabolario (linsieme delle parole italiane) ä Le strutture frasali (sintagmi) italiane: ä Il giovane biologo veronese; ä Larguto giurista in erba scaligero; ä Linteressante corso di Informatica ä Le frasi ed i periodi Italiani: ä La lezione si fece stimolante; ä La pausa per il caffè era peraltro cogente

18 18 Problemi (1) ä Chiamiamo PROBLEMA DI RICONOSCIMENTO di un linguaggio L su di un alfabeto, il problema di stabilire se una data stringa in * sia in L o no ä Ogni stringa si dice una istanza del problema

19 19 Generalità sulle funzioni (1) ä Siano A e B due insiemi, diciamo Prodotto Cartesiano A B linsieme delle coppie ordinate di elementi di A e B ä Chiamiamo relazione tra A e B un sottoinsieme del prodotto cartesiano di A e B ä Per una relazione r definita tra A e B definiamo A il dominio di r, e B il codominio di r

20 20 Generalità sulle funzioni (2) ä Una funzione è una relazione univoca, cioè una relazione che ad ogni elemento del dominio associa al più un elemento del codominio ä Una funzione che associa sempre ad un elemento del dominio un elemento del codominio si dice totale

21 21 Generalità sulle funzioni (3) ä Dato un elemento x del dominio lelemento in relazione f con x nel codominio si indica con f(x) e si dice limmagine di x ä Dato un elemento y nel codominio, se vale y = f(x), allora si dice che x è la controimmagine di y secondo f

22 22 Generalità sulle funzioni (4) ä Una funzione f si dice iniettiva se ad elementi distinti del dominio associa elementi distinti del codominio: x y f(x) f(y) ä Una funzione si dice suriettiva se ogni elemento del codominio ha controimmagine y x[y = f(x)] ä Una funzione sia iniettiva che suriettiva si dice biiettiva o biunivoca

23 23 Esempi (1) ä A={0,1}; B={a,b} A B = {(0,a);(0,b);(1,a);(1,b)} ä Relazione determinata da 1 va con b R={(0,a);(0,b);(1,b)}

24 24 Esempi (2) ä Sia A=naturali ( ) e B=naturali ä Funzione f(n)=n 2 ä Proprietà: ä Iniettiva ä Non suriettiva ä Funzione f(n) = maxdiv(n) [che trova il massimo divisore di n strettamente minore di n] ä Proprietà: ä Non iniettiva ä Suriettiva

25 25 Problemi (2) ä Sia f una funzione dai numeri naturali in se stessi (f: ) ä Dato un numero naturale n chiamiamo PROBLEMA DI CALCOLO ä Trovare f(n) ä Dati due numeri naturali m ed n chiamiamo PROBLEMA DI DECISIONE ä Stabilire se vale f(n) = m

26 26 Concetto di calcolabilità ä Una funzione f si dice calcolabile se e solo se esiste una macchina a stati che è in grado di leggere n in input e scrivere f(n) in output in un tempo finito ä Una funzione f totale e calcolabile si dice totalmente calcolabile

27 27 Equivalenza (1) ä Ogni problema di decisione può essere risolto se so risolvere il corrispondente problema di calcolo ä Per decidere se m=f(n) calcolo f(n) e stabilisco se vale luguaglianza ä Meno ovviamente vale anche il contrario ä Se so stabilire quando m=f(n) per calcolare f(n) enumero da 1 in avanti e risolvo 1=f(n), 2=f(n),… fino a quando il risultato è vero. Il valore stabilito è f(n)

28 28 Equivalenza (2) ä Ogni problema di decisione corrisponde ad un problema di riconoscimento e viceversa ä Per stabilire che questo è vero è sufficiente ricordare che linsieme * è ovviamente numerabile (anche detto di cardinalità 0 ) ovvero corrispondente biunivocamente ad tramite una funzione h ä Una volta enumerato * il problema di riconoscimento per una stringa corrisponde a stabilire se vale per una funzione f(h( ))=1 (inteso come codifica per il vero)

29 29 Equivalenza (2) - continua ä Per un problema di decisione ogni istanza del problema può definirsi come una istanza di un problema di riconoscimento ä Enumeriamo 2. Enumeriamo * per un dato alfabeto e costruiamo la corrispondenza biunivoca composta da * allenumerazione di 2. ä Ogni coppia di corrisponde ora ad una stringa in *. Sia L il linguaggio delle stringhe che corrispondono ad una coppia (m,n) tale che f(n)=m. Riconoscere L corrisponde a risolvere il problema di decisione per f

30 30 Problemi paradigmatici ä Date le equivalenze sopradette, i problemi paradigmatici sono quelli di riconoscimento ä La calcolabilità è definita mediante macchine a stati ä Quindi: lobiettivo dellinformatica teorica è definire tecniche per risolvere problemi di riconoscimento mediante macchine a stati

31 31 Linguaggi di programmazione ä Un linguaggio di programmazione è un linguaggio grammaticale il cui scopo è descrivere tecniche di risoluzione di problemi in modo che attraverso un meccanismo automatico si possa fare applicare tali tecniche su di una macchina a stati ä I token di un linguaggio di programmazione (simboli dellalfabeto su cui è costruito) si chiamano istruzioni

32 32 Linguaggi di programmazione ä Una stringa sintatticamente corretta di un linguaggio di programmazione si dice un programma ä La semantica operazionale di un linguaggio di programmazione corrisponde ad un insieme di regole che trasformano programmi in macchine a stati ä La semantica denotazionale di un linguaggio di programmazione corrisponde ad un insieme di regole che trasformano un programma nella funzione da esso calcolata

33 33 Tipi di linguaggio (1) ä Se le istruzioni di un linguaggio di programmazione vengono tradotte in comandi eseguibili dalla macchina (istruzioni macchina) una per volta il linguaggio di programmazione si dice interpretato ä Il programma che effettua la traduzione si dice interprete

34 34 Tipi di linguaggio (2) ä Se ogni programma di un linguaggio di programmazione viene tradotto in una sequenza di istruzioni macchina (codice eseguibile) il linguaggio di programmazione si dice compilato ä Il programma che effettua la traduzione si dice compilatore

35 35 Tipi di linguaggio (3) ä Ogni programma eseguibile può essere in realtà strutturato in comandi eseguibili direttamente dalla macchina ma anche in comandi eseguibili da macchine virtuali ä Una macchina virtuale è un programma che conosce un codice intermedio tra quello ad alto livello del linguaggio di programmazione e quello della macchina fisica ä Tale codice prende il nome di p-code

36 36 Architettura dei linguaggi ä Sintassi del linguaggio e sua analisi ä PARSER ä Semantica del linguaggio ä INTERPRETE ä COMPILATORE ä Esecuzione di programmi ä Run-Time Support

37 37 Paradigmi di programmazione (1) ä Un paradigma di programmazione è un modo di vedere la macchina che esegue i programmi ä Esecuzione di p-code come semantica operazionale

38 38 Paradigmi di programmazione (2) ä Linguaggi imperativi ä La computazione è modellata come lesecuzione di ordini da parte di un servo ä Linguaggi dichiarativi ä La computazione è modellata come un calcolo strutturato di ä Funzioni(paradigma funzionale) ä Condizioni logiche(paradigma logico)

39 39 Equivalenza di programmi ä Due programmi che computano la stessa funzione possono farlo in modo profondamente diverso ä Se due programmi computano la stessa funzione si dice che sono funzionalmente equivalenti ä Se due programmi che computano la stessa funzione lo fanno nello stesso modo si dice che sono algoritmicamente equivalenti

40 40 Algoritmo ä Perciò: ä Algoritmo è la forma astratta di un programma, essendo due programmi implementazioni dello stesso algoritmo se computano la stessa funzione nello stesso modo ä Necessità: ä Un modo semplice e generale di descrivere gli algoritmi ä Pseudolinguaggio ä Una forma non implementata di linguaggio di programmazione che contenga le strutture base dei linguaggi di programmazione (imperativi)

41 41 Strutture fondamentali ä Funzioni base ä Controllo di flusso ä Lettura di dati ä Scrittura di dati ä Assegnamento di valori a variabili

42 42 Controllo di flusso: sequenza ä Struttura di controllo per fare eseguire due istruzioni una dopo laltra ä La rappresentazione normalmente adottata è di utilizzare un separatore di linea esplicito /il punto e virgola) o implicito (a capo) Istruzione 1 Istruzione 2

43 43 Controllo di flusso: selezione ä Struttura di controllo per fare eseguire una istruzione se vale una condizione ed unaltra altrimenti ä La struttura generalmente si rappresenta mediante la codifica se condizione allora istr. 1 altrimenti istr. 2 Istr. 1 condizione Istr. 2 verofalso

44 44 Controllo di flusso: ciclo ä Struttura di controllo per fare eseguire ripetutamente una istruzione se vale una condizione ä La struttura generalmente si rappresenta mediante la codifica fintantoché condizione istruzione Istr. 1 condizione Istr. 2 vero falso

45 45 Nozione di variabile ä Variabile ä Nome ä Tipo ä Valore ä Un nome di variabile è valido, generalmente se è alfanumerico con limiti allimpiego di operatori aritmetici e se inizia con una lettera ä Occorrono costrutti per ä Definire tipi ä Attribuire tipi alle variabili

46 46 Altre istruzioni ä Assegnamento ä x v ä Sottocaso: incremento ä x x + 1 ä Lettura ä read(x) ä Scrittura ä write(x)

47 47 Tipi di dati ä Tipi elementari/strutturati ä Tipi predefiniti/utente ä Costrutti di definizione di tipo ä Costrutti di binding (assegnamento di tipo alle variabili) ä Regole di compatibilità tra tipi

48 48 Tipi elementari ä Tipi elementari predefiniti ä Interi(numeri relativi) ä Short/long ä Range ä Reali(numeri con la virgola) ä Float/Double ä Range e precisione ä Carattere(caratteri alfanumerici) ä Stringhe(sequenze di caratteri alfanumerici) ä Logico(vero o falso)

49 49 Tipi enumerativi ä I tipi enumerativi sono tipi utente elementari costituiti da un elenco di tutti e soli i possibili valori del tipo ä Esempio: colori dellarcobaleno ä {rosso, arancione, giallo, verde, blu, indaco, violetto}

50 50 Tipi strutturati ä Strutture statiche ä Array ä Record ä Strutture dinamiche ä Liste ä Alberi ä File

51 51 Accesso agli elementi ä Strutture ad accesso diretto o casuale sono quelle che permettono di leggere e scrivere elementi della struttura senza aver prima scandito altri elementi ä Strutture ad accesso sequenziale sono quelle che invece richiedono che la lettura di un elemento segua la lettura di altri elementi che precedono lelemento detto nellordine di scansione della struttura

52 52 Array ä Un array è un oggetto formato da un insieme accessibile direttamente di oggetti tutti dello stesso tipo ä Gli indici di accesso sono un tipo enumerativo ovvero numeri interi ä Un array è definito dalla sua dimensione strutturale (un array di dimensioni strutturale 1è un vettore, uno di dimensione strutturale 2 è una matrice) e dalle dimensioni relative (un vettore di dieci elementi è di dimensione relative 10)

53 53 Array ä Esempio: ä Array di dimensione strutturale 1 e dimensione relativa 7 di numeri interi ä ä Array di dimensione strutturale 2 e dimensioni relative 2 e 4

54 54 Record ä Un record è un oggetto formato da un insieme accessibile direttamente di oggetti di tipi diversi ä Gli indici di accesso sono nomi validi di variabili

55 55 Liste ä Una lista si costruisce aggiungendo un elemento in coda ad una lista esistente, che può essere vuota ä Per leggere una lista abbiamo due operatori: ä Uno per ritornare il valore della posizione corrente ä Uno per spostare la posizione corrente in avanti

56 56 Grafi ä Un grafo (diretto) è una coppia in cui E è un insieme di coppie di V, gli elementi di V si chiamano vertici, gli elementi di E archi ä Una sequenza di vertici di un grafo è un percorso se e solo se ogni coppia di vertici in sequenza è un arco ä Un grafo si dice aciclico se e solo se non contiene percorsi circolari (cioè che iniziano e terminano con lo stesso vertice)

57 57 Alberi ä Un albero è ä Un grafo diretto aciclico dove ä Ogni vertice è puntato da al più un altro vertice ä Linsieme dei vertici non puntati è un singoletto ä Una lista è un albero i cui elementi puntano al più un altro elemento

58 58 File ä I file sono sequenze accessibili anche mediante indici ä Si differenziano dalle liste per avere potenzialmente molti punti daccesso


Scaricare ppt "1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona Corso di."

Presentazioni simili


Annunci Google