Fondamenti dell informatica

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Fondamenti dell informatica"

Transcript

1 Fondamenti dell informatica Funzioni ricorsive e linguaggi funzionali Rosario Culmone rosario.culmone@unicam.it 16/4/2008 UNICAM - p. 1/21

2 Funzioni ricorsive Metodo di definizione di algoritmi introdotto negli anni 30 dal logico tedesco Kleene Si basano su un approccio matematico (funzioni e operatori). A differenza dei modelli di calcolo basate su macchine (Turing o RAM), questo modello di calcolo si basa sulla definizioni di funzioni base e operatori. Come nel caso della MdT si cerca il numero minimo di funzioni e operatori che permettono di definire qualsiasi funzione calcolabile. 16/4/2008 UNICAM - p. 2/21

3 Funzioni ricorsive Hanno ispirato i linguaggi di programmazione funzionali (LISP, ML, ecc). Mentre il modello di calcolo basato su macchine ha ispirato i linguaggi imperativi (stato e memoria), le funzioni ricorsive hanno ispirati la classe dei linguaggi funzionali. Entrambe le categorie sono Turing-equivalenti (con qualche differenza) ovvero hanno la stessa espressività Nel seguito faremo sempre riferimento a funzioni con argomenti sui naturali. Useremo la notazione f (n) per indicare la arietà di una funzione ovvero il numero dei suoi argomenti. Se n = 0 la funzione f corrisponde ad una costante. Una funzione che non richiede argomenti può produrre solo e sempre un solo valore. 16/4/2008 UNICAM - p. 3/21

4 Funzione base Le funzioni primitive sono: Le funzioni zero: le funzioni O (n) (x 1,...,x n ) = 0. Per n = 0 la funzione O() corrisponde alla costante 0 Il successore: ovvero la funzione S(x) = x + 1 Le funzioni selettive (o identità): ovvero U (n) i (x 1,...,x n ) = x i (n i 1) 16/4/2008 UNICAM - p. 4/21

5 Operatori Gli operatori sono: Composizione: date le funzioni g (n) 1,...,g m (n) e la funzione h (m) definiamo la funzione f (n) : f(x 1,...,x n ) = h (m) (g (n) 1 (x 1,...,x n ),...,g m (n) (x 1,...,x n )). La composizione è la forma più semplice per ottenere nuove funzioni. Ad esempio f(x) = x + 2 può essere ottenuta ponendo h(x) = S(x) e g 1 (x) = S(x) ovvero f(x) = S(S(x)) = x + 2 Ricursione primitiva: date le funzioni g (n) e h (n+2) definiamo la funzione f (n+1) : f (n+1) (x 1,...,x n, 0) = g (n) (x 1,...,x n ) f (n+1) (x 1,...,x n, y + 1) = h (n+2) (x 1,...,x n, y, f (n+1) (x 1,...,x n, y)) Ad esempio la funzione somma può essere definita per ricursione primitiva a partire dalle funzioni U (1) 1 identità ed S successore: somma(x, 0) = x somma(x, y + 1) = S(somma(x, y)) 16/4/2008 UNICAM - p. 5/21

6 La classe più semplice La classe delle funzioni ricorsive primitive è la più piccola classe di funzioni che contiene le funzioni base ed è chiusa rispetto alle operazioni di composizione e ricursione primitiva. 16/4/2008 UNICAM - p. 6/21

7 Esempi di funzioni ricorsive primitive Somma prodotto(x, 0) = 0 prodotto(x, y + 1) = somma(x, prodotto(x, y)) Esponenziale exp(x, 0) = 1 exp(x, y + 1) = prodotto(x, exp(x, y)) 16/4/2008 UNICAM - p. 7/21

8 Le funzioni ricorsive primitive non bastano Le funzioni ricorsive primitive non coprono l insieme delle funzioni calcolabili: le funzioni base e la composizione e la ricursione primitiva sono totali e quindi comunque possono definire solo funzioni totali quindi: non contengono le funzioni parziali non permettono di definire meccanismi di ricursione più complessi (ad esempio ricursione doppia) 16/4/2008 UNICAM - p. 8/21

9 La funzione di Ackermann La funzione di Ackermann è un esempio di funzione calcolabile ma non ricorsiva primitiva (ricorsione doppia). Consideriamo le seguenti funzioni ricorsive primitive di due argomenti: f 0 (x, y) = x + y f 1 (x, y) = xy { 1 se y = 0 per n 2 f n (x, y) = f n 1 (x, f n (x, y 1)) altrimenti Ad esempio: f 2 (x, 0) = 1 f 2 (x, y + 1) = f 1 (x, f 2 (x, y)) esponenziale f 3 (x, y + 1) = x xxx} y torre o esponenziale generalizzato 16/4/2008 UNICAM - p. 9/21

10 Esponenziale generalizzato La funzione di Ackermann cresce velocissima, ad esempio f(3, 4) = 3 333} 4 ovvero f(3, 4) = Se consideriamo come un unica funzione di tre argomenti: f(n, x, y) = f n (x, y) otteniamo una funzione che non è ricorsiva primitiva. Chiamiamo funzione di Ackermann la funzione A(n) = f(n, n, n) = f n (n, n). Questa funzione si può dimostrare che non può essere espressa come funzione primitiva ricorsiva 16/4/2008 UNICAM - p. 10/21

11 Operazione di minimalizzazione Data una funzione g (n+1) possiamo definire f (n) come il minimo valore di t che soddisfa il predicato g(x 1,...,x n, t) = 0 ovvero f (n) (x 1,...,x n ) = µt tale che (g (n+1) (x 1,...,x n, t) = 0) Il valore t può non esistere (ovvero non esiste un valore che soddisfa il predicato) e quindi la funzione diventa parziale (valore indefinito) Ad esempio P redecessore(x) = µt(s(t) = x) notare che Predecessore(0) è indefinito Int(x) = µt((t + 1)(t + 1) > x) ovvero la parte intera della radice quadrata di x x In questi ultimi casi non abbiamo considerato l annullamento del predicato (in un caso l uguaglianza ad un valore e nell altro caso il >) per semplicità. 16/4/2008 UNICAM - p. 11/21

12 Proprietà delle funzioni ricorsive La classe delle funzioni ricorsive è la più piccola classe di funzioni che contiene le funzioni base ed è chiusa rispetto alle operazioni di composizione, ricursione primitiva e minimalizzazione. Che relazione vi è tra le le MdT e le funzioni ricorsive. Ogni funzione calcolabile secondo Turing può essere formulata come: f(x 1,...,x n ) = U(µt(T(x 1,...,x n, t) = 0)) Ovvero qualsiasi funzione calcolabile secondo Turing può essere espressa utilizzando una funzione primitiva ricorsiva U, un predicato T e una sola volta l operatore di minimizzazione. Vale a dire che una computazione qualsiasi può essere espressa cercando il verificarsi di una proprietà (l uguaglianza a 0). Quindi il valore finale può essere calcolato estraendolo (mediante ricursione primitiva) dal valore minimale t. 16/4/2008 UNICAM - p. 12/21

13 Formalismo di Mc Carthy I linguaggi di programmazione funzionali devono la loro origine a vari filoni e in paricolare: funzioni ricorsive lambda-calcolo. Altro modello di calcolo inventato da Church per dimostrare che l aritmetica è indecidibile (tutte le formule non possono essere dimostrate vere) Anello di congiunzione di tutti questi filoni e i veri e propri linguaggi funzionali è il formalismo di Mc Carthy, collegato al più famoso dei linguaggi funzionali ovvero il LISP 16/4/2008 UNICAM - p. 13/21

14 Schemi di programmi [1] Il formalismo di Mc Carthy consente di definire la struttura sintattica dei programmi, appunto schemi di programmi. Le diverse interpretazioni dei simboli utilizzati nel formalismo conducono a diversi possibili linguaggi di programmazione. Simboli disponibili V insieme contenente infiniti simboli di variabile x 0, x 1,...,y, z... B insieme contenente infiniti simboli di funzione base b 0, b 1,...,a, b,... F insieme contenente infiniti simboli di funzione variabile F 0, F 1,...,G, H,... Sia le funzione base che le funzioni variabile hanno una loro arietà 16/4/2008 UNICAM - p. 14/21

15 Schemi di programmi [2] Si indica con Termine su V, B, F un simbolo di variabile è un termine un simbolo di funzione base con arietà 0 (costante) è un temine se t 1,...,t n sono termini e la arietà di b i è n allora b i (t 1,...,t n ) è un termine se t 1,...,t n sono termini e la arietà di F i è n allora F i (t 1,...,t n ) è un termine Null altro è un termine Se un termine non contiene variabili è chiamato termine chiuso (o di base) Dato V, B, F : T(V, B, F) denota l insieme dei termini T 0 (V, B, F) denota l insieme dei termini chiusi 16/4/2008 UNICAM - p. 15/21

16 Esempi Se b 0, b 1, b 2 hanno rispettivamente arietà 0, 2, 1 ed F 0 ha arietà 2 allora b 1 (b 0, b 0 ) T 0 (V, B, T) F 0 (F 0 (b 0, b 2 (b 0 )), b 1 (b 2 (b 0 ), b 0 )) T 0 (V, B, F) F 0 (F 0 (x, y), b 1 (b 2 (x), b 0 )) T(V, B, F) 16/4/2008 UNICAM - p. 16/21

17 Schemi di programmi [3] Dichiarazioni di schemi di programmi su V, B, F Uno schema di programma su V, B, F è una sequenza di dichiarazioni F i = t i dove F i F e t i T(V, B, F) seguita da un termine chiuso t 0 T 0 (V, B, F) Ad esempio: F(x) = b 2 (x, b 0 (x, F(b 1 (y)))) F(b 1 (b 0 )) La prima parte è una dichiarazione di una funzione di una variabile. Bisogna tenere presente che si tratta si schemi di programmi ovvero solo una rappresentazione sintattica. L interpretazione associa una semantica alla struttura sintattica. 16/4/2008 UNICAM - p. 17/21

18 Il linguaggio SLF Per passare da schemi di programmi a programmi (cioè per passare dal formalismo di Mc Carthy ad un vero e proprio linguaggio di programmazione) dobbiamo interpretare i simboli di V e B. L interpretazione di F si otterrà di conseguenza Consideriamo la seguente interpretazione: i simboli di variabile in V si interpreteranno come variabili intere i simboli di funzione base in B si interpreteranno come le seguenti funzioni sui naturali: per ogni numero naturale c, infinite funzioni costanti C c (n) (x 1,...,x n ) = c di arietà n 0 che producono il valore intero costante c; per ogni c, anziché scrivere la funzione C c (0) utilizzeremo il corrispondente naturale c S(x) = x + 1 successore di arietà 1 P(x) = x 1 predecessore di arietà 1 if then else(x, y, z) = se x = 0 allora y, altrimenti z condizionale di arietà 3 16/4/2008 UNICAM - p. 18/21

19 Semplice Linguaggio Funzinale Il linguaggio SLF è un linguaggio di programmazione che si ottiene interpretando nel modo descritto precedentemente gli schemi di programmi del formalismo di Mc Carthy. Esempio di programma che calcola il fattoriale di 4 FACT(y) = if then else(y, 1, PROD(y, FACT(P(y)))) FACT(4) dove PROD è la funzione prodotto che si assume già definita (è stata definita nello stesso modo). La sintassi è quella di Mc Carthy l interpretazione quella definita precedentemente. 16/4/2008 UNICAM - p. 19/21

20 Calcolabilità in SLF [1] Vediamo se le funzioni ricorsive sono calcolabili con questo linguaggio di programmazione. Per dimostrare ciò utilizzeremo la struttura induttiva. Le funzioni base sero e successore sono disponibili come funzioni base nel repertorio del linguaggio SLF. Le funzioni selettive si possono calcolare con il programma U (n) i (x 1,...,x n ) = x i La composizione ovvero F definita per composizione della funzione h con le funzioni g 1,...,g m si può definire come segue: F(x 1,...,x n ) = h(g 1 (x 1,...,x n ),...,g m (x 1,...,x n )) La ricursione primitiva ovvero F definita per ricursione primitiva a partire dalle funzioni g e h si può definire come segue: F(x 1,...,x n, y) = if then else(y, g(x 1,...,x n ), h(x 1,...,x n, P(y), F(x 1,...,x n, P(y)))) 16/4/2008 UNICAM - p. 20/21

21 Calcolabilità in SLF [2] La minimalizzazione ovvero F definita per minimalizzazione a partire dalla funzione g e può definire come segue: F(x 1,...,x n ) = G(x 1,...,x n, 0) G(x 1,...,x n, t) = if the else(g(x 1,...,x n, t), t, G(x 1,...,x n, S(t))) Se una funzione è definita per minimalizzazione vuol dire che bisogna calcolare il minimo valore di t che annulla un determinato predicato. Allora a partire da 0 si calcolano i predicati sino ad avere l annullamento del predicato, in questo caso è prodotto g(x 1,...,x n ). Si tratta di una applicazione della ricorsione ma in questo caso la sentinella t non viene decrementata ma incrementata a partire da 0. In questo modo non è certo che il predicato si annullerà è quindi il calcolo procede all infinito realizzando l indecidibilità (Turing equivalenza). 16/4/2008 UNICAM - p. 21/21

PARTE IV FUNZIONI RICORSIVE E LINGUAGGI FUNZIONALI

PARTE IV FUNZIONI RICORSIVE E LINGUAGGI FUNZIONALI PARTE IV FUNZIONI RICORSIVE E LINGUAGGI FUNZIONALI Funzioni ricorsive Accenno al lambda-calcolo Formalismo di Mc Carthy e linguaggi funzionali 1 4.1 FUNZIONI RICORSIVE Tra gli approcci sviluppati negli

Dettagli

(n) (x 1,..., x n ) = x i

(n) (x 1,..., x n ) = x i FUNZIONI RICORSIVE Caratterizzazione matematica delle funzioni computabili. Introdotta da Godel e Kleene negli annni 30, ha ispirato, ancora negli anni 50, modelli e linguaggi di programmazione funzionale

Dettagli

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,

Dettagli

Fondamenti. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione [010194] 7 mar, 2016

Fondamenti. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione [010194] 7 mar, 2016 Fondamenti Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 7 mar, 2016 Sommario Fondamenti 7 mar, 2016 2 / 1 Introduzione Limiti dei programmi

Dettagli

Corso di Laurea in Informatica. Linguaggi di Programmazione. Fondamenti e Calcolabilità Valeria Carofiglio. a.a

Corso di Laurea in Informatica. Linguaggi di Programmazione. Fondamenti e Calcolabilità Valeria Carofiglio. a.a Linguaggi di Programmazione Corso di Laurea in Informatica Fondamenti e Calcolabilità Valeria Carofiglio a.a. 2015-2016 (questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) Teoria

Dettagli

Problemi decidibili, semidecidibili, indecidibili

Problemi decidibili, semidecidibili, indecidibili Problemi decidibili, semidecidibili, indecidibili (Paragrafo 3.5 delle dispense) Il problema di determinare se una formula A della logica proposizionale sia valida o no può essere risolto mediante un procedimento

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 2 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2010 Controlli automatici

Dettagli

Introduzione alla Programmazione Funzionale

Introduzione alla Programmazione Funzionale Introduzione alla Programmazione Funzionale April 27, 2017 Paradigmi di Programmazione Programmi sviluppabili usando diversi paradigmi Imperativo: computazione come modifica di stato Funzionale: computazione

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 2 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 01 Marzo 2013 1 2 3 Obiettivo chiave dei LdP: fornire costrutti che riducano la

Dettagli

Da Turing a Böhm. Simona Ronchi Della Rocca Dipartimento di Informatica

Da Turing a Böhm. Simona Ronchi Della Rocca Dipartimento di Informatica Da Turing a Böhm Simona Ronchi Della Rocca 40-100 Dipartimento di Informatica I nostri due padri Alan Turing 1912-1954 Corrado Böhm 1923 - Alan Turing! Calcolabilità (1936): Formalizzazione del calcolo,

Dettagli

401 PREDICATI RICORSIVI PRIMITIVI

401 PREDICATI RICORSIVI PRIMITIVI 401 PREDICATI RICORSIVI PRIMITIVI Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini 1 Breve richiamo Un predicato su un insieme S è una funzione totale P su S tale che a S si ha: P(a) = VERO

Dettagli

(X (, Y, Y Z ) Z " Z Z

(X (, Y, Y Z ) Z  Z Z ARITMETICA E RICORSIONE Non esiste, in logica, alcun meccanismo per la valutazione di funzioni, operazione fondamentale in un linguaggio di programmazione I numeri interi possono essere rappresentati come

Dettagli

Problemi, algoritmi, calcolatore

Problemi, algoritmi, calcolatore Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione

Dettagli

TABELLA OPERATORI ARITMETICI

TABELLA OPERATORI ARITMETICI ARITMETICA E RICORSIONE Non esiste, in logica, alcun meccanismo per la valutazione di funzioni, operazione fondamentale in un linguaggio di programmazione I numeri interi possono essere rappresentati come

Dettagli

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 8

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 8 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 8 Alberto Carraro DAIS, Università Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Insiemi e predicati ricorsivi e ricorsivamente enumerabili

Dettagli

La tesi di Church-Turing

La tesi di Church-Turing ITLCC 2006/11/12 21:06 page 79 #3 Capitolo 5 La tesi di Church-Turing SOMMARIO Sebbene il concetto di algoritmo abbia avuto una lunga storia nel campo della matematica, il concetto formale di algoritmo

Dettagli

Limiti della calcolabilità

Limiti della calcolabilità Limiti della calcolabilità Argomenti della lezione Macchina di Turing universale Il problema della terminazione Altri problemi indecidibili Macchine di Turing in forma ridotta Per ogni MT M esiste una

Dettagli

CODIFICHE. Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini. venerdì 15 marzo 13

CODIFICHE. Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini. venerdì 15 marzo 13 Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini 1 Codifiche ricorsive primitive Presenteremo adesso due metodi di codifica ricorsivi primitivi due metodi di codifica ricorsivi primitivi.

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 19 Ricorsione A. Miola Marzo 2010 http://www.dia.uniroma3.it/~java/fondinf/ Ricorsione 1 Contenuti Funzioni e domini definiti induttivamente

Dettagli

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine RISOLUZIONE IN LOGICA PROPOSIZIONALE Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine 1. Risoluzione Definitione 1.1. Un letterale l è una variabile proposizionale (letterale

Dettagli

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl

Linguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare

Dettagli

Semantica operazionale e denotazionale

Semantica operazionale e denotazionale Semantica operazionale e denotazionale Abbiamo definito la semantica di tre linguaggi di programmazione in termini operazionali, cioé in termini di sequenze di computazione Abbiamo assegnato un algoritmo

Dettagli

Istituzioni di Logica Matematica

Istituzioni di Logica Matematica Istituzioni di Logica Matematica Sezione 9 del Capitolo 2 Alessandro Andretta Dipartimento di Matematica Università di Torino A. Andretta (Torino) Istituzioni di Logica Matematica AA 2013 2014 1 / 47 Funzioni

Dettagli

Programmazione II. Lezione 5. Daniele Sgandurra 2/11/2010.

Programmazione II. Lezione 5. Daniele Sgandurra 2/11/2010. Programmazione II Lezione 5 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 2/11/2010 1/35 Programmazione II Lezione 5 2/11/2010 Sommario 1 Fondamenti Problema della Fermata Macchina di Turing Indecidibilità

Dettagli

COMPITO di LOGICA PER INFORMATICA (fila 1) 24 giugno 2005

COMPITO di LOGICA PER INFORMATICA (fila 1) 24 giugno 2005 COMPITO di LOGICA PER INFORMATICA (fila ) 24 giugno 2005 Nome: Matricola: Esercizio. Si dimostri che la seguente regola logica è valida, vale a dire, si dimostri che se la premessa è vera in ogni struttura

Dettagli

LOGICA MATEMATICA PER INFORMATICA

LOGICA MATEMATICA PER INFORMATICA LOGICA MATEMATICA PER INFORMATICA A.A. 10/11, DISPENSA N. 2 Sommario. Assiomi dell identità, modelli normali. Forma normale negativa, forma normale prenessa, forma normale di Skolem. 1. L identità Esistono

Dettagli

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Linguaggi procedurali, Paolo Bison, FI08, 2008-09-29 p.1 Linguaggi procedurali classe

Dettagli

Correttezza (prima parte)

Correttezza (prima parte) Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di

Dettagli

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 10

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 10 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 10 Alberto Carraro DAIS, Università Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Teoremi fondamentali della Recursion Theory Theorem

Dettagli

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3 Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2007/08 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza

Lo sviluppo di un semplice programma e la dimostrazione della sua correttezza Il principio di induzione Consideriamo inizialmente solo il principio di induzione per i numeri non-negativi, detti anche numeri naturali. Sia P una proprietà (espressa da una frase o una formula che contiene

Dettagli

Fondamenti dell informatica

Fondamenti dell informatica Fondamenti dell informatica Macchine a registri Rosario Culmone rosario.culmone@unicam.it 9/4/2008 UNICAM - p. 1/24 Modello di calcolo basato sui calcolatori Le macchine a registri (RAM: Random Access

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi; Non si utilizza un linguaggio di programmazione specifico, ma è meglio utilizzare

Dettagli

Fondamenti dell informatica

Fondamenti dell informatica Fondamenti dell informatica LISP Rosario Culmone rosario.culmone@unicam.it 4/4/2008 UNICAM - p. 1/23 Il linguaggio di programmazione LISP Ispirato dalle funzioni ricorsive, dal lambda calcolo e dagli schemi

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova Pseudo codice, Paolo Bison, FI06, 2007-01-10 p.1 Pseudo codice linguaggio testuale mix di linguaggio naturale ed elementi

Dettagli

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 7

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 7 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 7 Alberto Carraro DAIS, Universitá Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Introduzione Nelle precedenti lezioni sono stati

Dettagli

Cenni di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B)

Cenni di programmazione ricorsiva. Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Cenni di programmazione ricorsiva Appunti per gli studenti di Programmazione I e Laboratorio (corsi A-B) Corso di Laurea in Informatica Università di Pisa A.A. 2009/10 R. Barbuti, P. Mancarella Indice

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 7 Semantica della Logica del Primo Ordine pag. 1 Esempio di Semantica: Alfabeto e Interpretazioni Consideriamo

Dettagli

Informatica teorica Lez. n 12 Introduzione al Lisp. Introduzione al Lisp. Prof. Giorgio Ausiello Università di Roma La Sapienza

Informatica teorica Lez. n 12 Introduzione al Lisp. Introduzione al Lisp. Prof. Giorgio Ausiello Università di Roma La Sapienza Introduzione al Lisp Argomenti della lezione Aspetti generali del Lisp S-espressioni Funzioni predefinite Definizione di funzioni e costrutti programmativi Lisp Ispirato da funzioni ricorsive e lambda

Dettagli

Scheme: struttura del programma e campo di azione

Scheme: struttura del programma e campo di azione «a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Scheme: struttura del programma e campo di azione Definizione e campo di azione...........................

Dettagli

Espressioni e Comandi

Espressioni e Comandi Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato

Dettagli

Fondamenti dell Informatica. Esercizi di preparazione al secondo compitino

Fondamenti dell Informatica. Esercizi di preparazione al secondo compitino Fondamenti dell Informatica (III anno Laurea Triennale) Esercizi di preparazione al secondo compitino a.a. 2016/17 Funzioni primitive ricorsive Si definiscano come primitive ricorsive le seguenti funzioni:

Dettagli

Teoria della Calcolabilità!

Teoria della Calcolabilità! Teoria della Calcolabilità Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo. L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici

Dettagli

Sommario Tesi di Church, di Turing, e di Church Turing G delizzazione. Limiti della Calcolabilità

Sommario Tesi di Church, di Turing, e di Church Turing G delizzazione. Limiti della Calcolabilità Sommario Tesi di Church, di Turing, e di Church Turing G delizzazione Macchina di Turing Universale Problema della fermata Altri problemi indecidibili 1 2 Tesi di Church Nel 1936 Church propone la seguente

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Teoria della Calcolabilità!

Teoria della Calcolabilità! Teoria della Calcolabilità!! Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo.!! L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici

Dettagli

T1: Logica, discorso e conoscenza. Logica classica

T1: Logica, discorso e conoscenza. Logica classica T1: Logica, discorso e conoscenza Primo modulo: Logica classica ovvero Deduzione formale vs verità: un introduzione ai teoremi limitativi Simone Martini Dipartimento di Scienze dell Informazione Alma mater

Dettagli

ESERCIZI DI LOGICA MATEMATICA A.A Alessandro Combi

ESERCIZI DI LOGICA MATEMATICA A.A Alessandro Combi ESERCIZI DI LOGICA MATEMATICA A.A. 2015-16 Alessandro Combi Esercizio 1.7 Per ogni formula A, dimostrare che ρ(a) = min{n A F n } Soluzione: Chiamo rank(a) = min{n A F n }. Bisogna provare che rank segue

Dettagli

Introduzione alla logica matematica. Logica matematica. Paolo Bison

Introduzione alla logica matematica. Logica matematica. Paolo Bison Introduzione alla logica matematica Paolo Bison Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09 Logica matematica formalizzazione dei meccanismi di ragionamento la logica

Dettagli

PARTE V TEORIA GENERALE DELLA CALCOLABILITA

PARTE V TEORIA GENERALE DELLA CALCOLABILITA PARTE V TEORIA GENERALE DELLA CALCOLABILITA Enumerazione delle funzioni calcolabili Funzioni non calcolabili Teoremi di Kleene e di Rice Insiemi decidibili e semidecidibili Gerarchia aritmetica 1 5.1 ENUMERAZIONE

Dettagli

ESAME di LOGICA PER INFORMATICA 24 giugno 2003

ESAME di LOGICA PER INFORMATICA 24 giugno 2003 ESAME di LOGICA PER INFORMATICA 24 giugno 2003 Compito 1 Esercizio 1. Siano Φ e Ψ due insiemi consistenti di formule. Dire, giustificando la risposta, se Φ Ψ e Φ Ψ sono consistenti. Soluzione. Se fosse

Dettagli

Logica proposizionale

Logica proposizionale Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Logica proposizionale Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università degli

Dettagli

Unità E1. Obiettivi. Non solo problemi matematici. Problema. Risoluzione di un problema. I dati

Unità E1. Obiettivi. Non solo problemi matematici. Problema. Risoluzione di un problema. I dati Obiettivi Unità E1 Dall analisi del problema alla definizione dell algoritmo Conoscere il concetto di algoritmo Conoscere le fasi di sviluppo di un algoritmo (analisi, progettazione, verifica) Conoscere

Dettagli

3/10/ Divisibilità e massimo comun divisore

3/10/ Divisibilità e massimo comun divisore MCD in N e Polinomi 3/10/2013 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore di due numeri naturali

Dettagli

LOGICA E ALGEBRA. 5 febbraio Parte di Logica

LOGICA E ALGEBRA. 5 febbraio Parte di Logica LOGICA E ALGEBRA 5 febbraio 2016 Parte di Logica In logica proposizionale siano A,B,C le formule di un opportuno linguaggio proposizionale che traducono le frasi Se Carlo ha vinto la gara, allora Mario

Dettagli

Dispensa su. Funzioni Booleane. Jianyi Lin Università degli Studi di Milano

Dispensa su. Funzioni Booleane. Jianyi Lin Università degli Studi di Milano Dispensa su Funzioni Booleane Jianyi Lin Università degli Studi di Milano jianyi.lin@unimi.it 18 novembre 2011 1 Operazioni booleane In questa sezione introduciamo il concetto di funzione booleana e accenniamo

Dettagli

Semantica operazionale dei linguaggi di Programmazione

Semantica operazionale dei linguaggi di Programmazione Semantica operazionale dei linguaggi di Programmazione Stato Rosario Culmone, Luca Tesei 19/12/2007 UNICAM - p. 1/?? Espressioni con variabili Espandiamo il sistema exp in modo da trattare il nuovo caso

Dettagli

Fondamenti dell Informatica

Fondamenti dell Informatica Fondamenti dell Informatica Compito scritto 28 settembre 2005 Cognome: Nome: Matricola: Note 1. Per i quiz a risposta multipla, fare una croce sulla/e lettera/e che identifica/no la/e risposta/e desiderata/e.

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.

Dettagli

DAI NUMERI NATURALI AI NUMERI RAZIONALI

DAI NUMERI NATURALI AI NUMERI RAZIONALI DAI NUMERI NATURALI AI NUMERI RAZIONALI 1. L insieme dei numeri naturali Nel sistema assiomatico ZF, l Assioma dell infinito stabilisce che: Esiste un insieme A, i cui elementi sono insiemi e tale che

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi FASE 1: Dare un nome al problema partendo dall analisi del problema FASE 2: Scrivere la specifica funzionale FASE 3: Scrittura dell algoritmo FASE 3.1: Introduzione delle variabili

Dettagli

04 - Numeri Complessi

04 - Numeri Complessi Università degli Studi di Palermo Facoltà di Economia CdS Statistica per l Analisi dei Dati Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2013/2014 M. Tumminello, V. Lacagnina e

Dettagli

Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica

Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica Alcune Tracce dei Precedenti Esami del Dottorato di Siena in Logica Matematica ed Informatica Teorica Raccolti e curati da Luca Spada Indice 1 Temi 1 1.1 Logica Matematica.......................... 1 1.2

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

1 PRELIMINARI 1.1 NOTAZIONI. denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A.

1 PRELIMINARI 1.1 NOTAZIONI. denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A. 1 PRELIMINARI 1.1 NOTAZIONI denota l insieme vuoto. a A si legge a appartiene a A oppure a è elemento di A. B A si legge B è un sottoinsieme di A e significa che ogni elemento di B è anche elemento di

Dettagli

04 - Numeri Complessi

04 - Numeri Complessi Università degli Studi di Palermo Scuola Politecnica Dipartimento di Scienze Economiche, Aziendali e Statistiche Appunti del corso di Matematica 04 - Numeri Complessi Anno Accademico 2015/2016 M. Tumminello,

Dettagli

Sommario Riepilogo nozioni matematiche di base Il concetto di funzione Funzioni e algoritmi Decidibilità Funzioni parziali e calcolabilità

Sommario Riepilogo nozioni matematiche di base Il concetto di funzione Funzioni e algoritmi Decidibilità Funzioni parziali e calcolabilità Sommario Riepilogo nozioni matematiche di base Il concetto di funzione Funzioni e Calcolabilità Funzioni e algoritmi Decidibilità Funzioni parziali e calcolabilità Funzioni e Calcolabilità 1 Funzioni e

Dettagli

Problemi senza soluzione

Problemi senza soluzione Problemi senza soluzione La Tesi di Church-Turing Nelle lezioni precedenti abbiamo visto il modello di calcolo delle macchine di Turing, caratterizzato da: assunzioni molto semplici operazioni di base

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione!paradigmi linguistici, costrutti!semantica!implementazione, strutture a tempo di esecuzione 1 Linguaggi di programmazione e astrazione! i linguaggi di programmazione ad alto

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Esercizi sul Calcolo Proposizionale

Esercizi sul Calcolo Proposizionale Esercizi sul Calcolo Proposizionale Francesco Sborgia Matricola: 459245 December 7, 2015 1 Esercizio 1 Per ogni formula A dimostrare che ρ(a) = min{n A F n } Definizione 1. Ricordiamo che, dato un linguaggio

Dettagli

Teoria della computabilità. Appunti tratti dal libro di testo M. Addomine, D. Pons INFORMATICA Zanichelli pag

Teoria della computabilità. Appunti tratti dal libro di testo M. Addomine, D. Pons INFORMATICA Zanichelli pag Teoria della computabilità Appunti tratti dal libro di testo M. Addomine, D. Pons INFORMATICA Zanichelli pag.120-129 Teoria della computabilità Si occupa dell esistenza o meno di algoritmi risolutivi di

Dettagli

Filosofia della Scienza Soluzioni Compito 2

Filosofia della Scienza Soluzioni Compito 2 Filosofia della Scienza 2010-11 Soluzioni Compito 2 Gianluigi Bellin 10 gennaio 2011 1 Domanda 1 - Teorema di Cantor Una funzione f : A B si dice iniettiva se per ogni x, y A, f(x) f(y) implica x y. Una

Dettagli

Matematica per l Economia, a.a Integrazione al libro di testo

Matematica per l Economia, a.a Integrazione al libro di testo Matematica per l Economia, a.a. 2016 2017 Integrazione al libro di testo Gianluca Amato 20 dicembre 2016 1 Note ed errata corrige Sezione 2.3, definizione di dominio. La definizione di dominio data dal

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché

Dettagli

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore

Giovanna Carnovale. October 18, Divisibilità e massimo comun divisore MCD in N e Polinomi Giovanna Carnovale October 18, 2011 1 Divisibilità e massimo comun divisore 1.1 Divisibilità in N In questa sezione introdurremo il concetto di divisibilità e di massimo comun divisore

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica per la Programmazione Lezione 2 Dimostrazione di Tautologie Tabelle di Verità Dimostrazioni per sostituzione Leggi del Calcolo Proposizionale A. Corradini e F.Levi Dip.to Informatica Logica per

Dettagli

Crittografia. Nozioni di Algebra. Corso di Laurea Specialistica. in Informatica

Crittografia. Nozioni di Algebra. Corso di Laurea Specialistica. in Informatica Crittografia Corso di Laurea Specialistica in Informatica Nozioni di Algebra Alberto Leporati Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi di Milano Bicocca e-mail:

Dettagli

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13)

LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) LOGICA MATEMATICA PER INFORMATICA (A.A. 12/13) DISPENSA N. 3 Sommario. Introduciamo il Calcolo dei Predicati del I ordine e ne dimostriamo le proprietà fondamentali. Discutiamo il trattamento dell identità

Dettagli

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio La suddivisione lezione/esercitazione è orientativa Martedì 11 13 Lezione Aula A4 Martedi 14 16 Esercitazione Aula A2 Mercoledì 11 13 Laboratorio Lab. 1 Mercoledì 14 16 Lezione Aula A3 Giovedì 14 16 Lezione

Dettagli

a cura di Luca Cabibbo e Walter Didimo

a cura di Luca Cabibbo e Walter Didimo a cura di Luca Cabibbo e Walter Didimo Esercizi di Informatica teorica - Luca Cabibbo e Walter Didimo 1 calcolabilità in vari contesti riduzioni e calcolabilità dimostrazioni di decidibilità di problemi

Dettagli

Appunti lezione Capitolo 13 Programmazione dinamica

Appunti lezione Capitolo 13 Programmazione dinamica Appunti lezione Capitolo 13 Programmazione dinamica Alberto Montresor 12 Novembre, 2015 1 Domanda: Fattore di crescita dei numeri catalani Vogliamo dimostrare che cresce almeno come 2 n. La nostra ipotesi

Dettagli

Valutazione Lazy. Prefazione alla lezione

Valutazione Lazy. Prefazione alla lezione Valutazione Lazy Aniello Murano Università degli Studi di Napoli Federico II 1 Prefazione alla lezione Nella lezione precedente abbiamo introdotto i linguaggi (funzionali) con tipi di ordine superiore.

Dettagli

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP

Informatica 3. LEZIONE 9: Introduzione ai linguaggi funzionali. Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 LEZIONE 9: Introduzione ai linguaggi funzionali Modulo 1: Introduzione ai linguaggi funzionali Modulo 2: LISP Informatica 3 Lezione 9 - Modulo 1 Introduzione ai linguaggi funzionali Linguaggi

Dettagli

Fondamenti d Informatica: Linguaggio While. Barbara Re, Phd

Fondamenti d Informatica: Linguaggio While. Barbara Re, Phd Fondamenti d Informatica: Linguaggio While Barbara Re, Phd Il linguaggio WHILE } La computabilità come supporto ai moderni linguaggi di programmazione } Si può generalizzare rispetto ad una vasta famiglia

Dettagli

Insiemi ed applicazioni

Insiemi ed applicazioni Insiemi ed applicazioni Giovanna Carnovale October 11, 2011 1 Insiemi Con il termine insieme denoteremo una collezione di oggetti. Gli oggetti di questa collezione saranno chiamati elementi dell insieme.

Dettagli

Logica Algoritmi Cognizione

Logica Algoritmi Cognizione Logica Algoritmi Cognizione Le nozioni di DECIDIBILITÀ e COMPUTABILITÀ e i loro limiti Formulazione della logica in termini di teorie formalizzate e di dimostrazioni (all interno di teorie formalizzate)

Dettagli

Ragionamento formalei. Ragionamento formale

Ragionamento formalei. Ragionamento formale Ragionamento formale La necessità e l importanza di comprendere le basi del ragionamento formale, utilizzato in matematica per dimostrare teoremi all interno di teorie, è in generale un argomento piuttosto

Dettagli

Struttura del calcolatore

Struttura del calcolatore Mondo esterno Dati di ingresso Calcolatore Dati di uscita Mondo esterno Il calcolatore elabora dei dati di ingresso per ottenere dati in uscita In linea di principio, ma non solo, il compito svolto da

Dettagli

Logica per la Programmazione

Logica per la Programmazione Logica del Primo Ordine: Motivazioni, Sintassi e Interpretazioni Logica per la Programmazione Lezione 8 Modelli, Formule Valide, Conseguenza Logica Proof Systems Regole di inferenza per Calcolo Proposizionale

Dettagli