Fondamenti dell informatica
|
|
- Isidoro Basile
- 4 anni fa
- Visualizzazioni
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 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
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
DettagliCapitolo 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,
DettagliFondamenti. 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
DettagliCorso 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
DettagliProblemi 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
DettagliCorso 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
DettagliIntroduzione 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
DettagliIl 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
DettagliCorso 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
DettagliDa 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,
Dettagli401 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
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
DettagliProblemi, 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
DettagliTABELLA 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
DettagliNote 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
DettagliLa 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
DettagliLimiti 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
DettagliCODIFICHE. 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.
DettagliCorso 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
DettagliRISOLUZIONE 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
DettagliLinguaggi 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
DettagliSemantica 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
DettagliIstituzioni 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
DettagliProgrammazione 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à
DettagliCOMPITO 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
DettagliLOGICA 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
DettagliPaolo 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
DettagliCorrettezza (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
DettagliNote 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
DettagliPseudo 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
DettagliLo 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
DettagliFondamenti 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
DettagliDescrizione 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
DettagliFondamenti 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
DettagliPaolo 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
DettagliNote 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
DettagliCenni 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
DettagliLogica 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
DettagliInformatica 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
DettagliScheme: 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...........................
DettagliEspressioni 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
DettagliFondamenti 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:
DettagliTeoria 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
DettagliSommario 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
DettagliRisoluzione 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
DettagliTeoria 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
DettagliT1: 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
DettagliESERCIZI 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
DettagliIntroduzione 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
DettagliPARTE 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
DettagliESAME 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
DettagliLogica 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
DettagliUnità 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
Dettagli3/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
DettagliLOGICA 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
DettagliDispensa 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
DettagliSemantica 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
DettagliFondamenti 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.
DettagliLogica 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.
DettagliDAI 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
DettagliSviluppo 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
Dettagli04 - 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
DettagliAlcune 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
DettagliLaboratorio 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
Dettagli1 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
Dettagli04 - 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,
DettagliSommario 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
DettagliProblemi 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
DettagliLinguaggi 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
DettagliLogica 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,
DettagliEsercizi 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
DettagliTeoria 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
DettagliFilosofia 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
DettagliMatematica 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
DettagliLogica 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,
DettagliLinguaggi 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é
DettagliGiovanna 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
DettagliLogica 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
DettagliCrittografia. 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:
DettagliLOGICA 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à
DettagliLa 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
Dettaglia 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
DettagliAppunti 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
DettagliValutazione 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.
DettagliInformatica 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
DettagliFondamenti 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
DettagliInsiemi 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.
DettagliLogica 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)
DettagliRagionamento 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
DettagliStruttura 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
DettagliLogica 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