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

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Informatica II – Basi di Dati (08/09) – Parte 1
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
Punti Fissi.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Algoritmi e Programmazione
1 Semantica Operazionale di un frammento di Java: lo stato.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Relazione tra due insiemi:
Frontespizio Economia Monetaria Anno Accademico
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Programmazione Procedurale in Linguaggio C++
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Ordini Parziali - Reticoli
Informatica di base A.A. 2003/2004 Algoritmi e programmi
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
8. Reti di Code Nella maggior parte dei processi produttivi risulta troppo restrittivo considerare una sola risorsa. Esempio: linea tandem arrivi 1 v.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Corso di Informatica (Basi di Dati)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Algoritmi e strutture dati
Corso di Informatica per Giurisprudenza
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
Modelli simulativi per le Scienze Cognitive
Master universitario di II livello in Ingegneria delle Infrastrutture e dei Sistemi Ferroviari Anno Accademico 2012/2013 Cultura dimpresa, valutazione.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Algoritmi.
Unità Didattica 2 I Linguaggi di Programmazione
Strutture di controllo in C -- Flow Chart --
Dichiarazioni e tipi predefiniti nel linguaggio C
Il Linguaggio C.
Espressioni condizionali
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Contatore: esempio di circuito sequenziale
Biologia Computazionale - Algoritmi
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Elementi di Informatica di base
CODIFICA Da flow-chart a C++.
Lo sviluppo del software e i linguaggi di programmazione
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
TEORIA DEGLI INSIEMI INIZIO.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Numeri Interi senza segno
TRASFORMATA DI FOURIER
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Automi temporizzati.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona Corso di Informatica per Giurisprudenza Lezione 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 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 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 Rappresentazione a grafo

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 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 Esempio di macchina a stati (3) p s0s0 s1s1 s4s4 s2s2 s3s3 s5s5 a a c c e e e

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 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 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 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 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 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 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 Osservazioni (1) ä Nonostante gli alfabeti siano insiemi finiti i linguaggi possono essere infiniti ä La stringa vuota è uguale per qualsiasi alfabeto

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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Architettura dei linguaggi ä Sintassi del linguaggio e sua analisi ä PARSER ä Semantica del linguaggio ä INTERPRETE ä COMPILATORE ä Esecuzione di programmi ä Run-Time Support

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 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 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 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 Strutture fondamentali ä Funzioni base ä Controllo di flusso ä Lettura di dati ä Scrittura di dati ä Assegnamento di valori a variabili

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 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 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 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 Altre istruzioni ä Assegnamento ä x v ä Sottocaso: incremento ä x x + 1 ä Lettura ä read(x) ä Scrittura ä write(x)

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 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 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 Tipi strutturati ä Strutture statiche ä Array ä Record ä Strutture dinamiche ä Liste ä Alberi ä File

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 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 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 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 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 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 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 File ä I file sono sequenze accessibili anche mediante indici ä Si differenziano dalle liste per avere potenzialmente molti punti daccesso