Quaderni di Informatica. Macchine e Linguaggi. Luigino Calvi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Quaderni di Informatica. Macchine e Linguaggi. Luigino Calvi"

Transcript

1 Quaderni di Informatica Macchine e Linguaggi Luigino Calvi I.I.S. Negrelli-Forcellini - Feltre 2014

2 ii

3 Capitolo 1 Macchine di Turing Potrebbe essere deludente apprendere che, fondamentalmente, computer e matematici non sono altro che macchine di Turing camuffate. D altra parte potrebbe anche essere un fatto incoraggiante, dato che la macchina di Turing, in apparenza alquanto semplicistica, è in grado di risolvere qualsiasi tipo di problema di calcolo. La somiglianza teorica fra matematico e macchina vale non solo per problemi che essi sono in grado di risolvere ma anche per quelli che non sanno risolvere. P. Hoffman, La vendetta di Archimede Già agli inizi del ventesimo secolo si notò che la definizione informale di algoritmo risultava inadeguata quando si dovevano affrontare delle questioni delicate relative alla calcolabilità delle funzioni, alla logica matematica, alla potenziale risolubilità di alcuni problemi. Si avvertì allora l esigenza di disporre di rigorosi modelli di calcolo che eliminassero qualsiasi forma di ambiguità. Uno dei più noti e fortunati modelli di calcolo fu introdotto dal matematico e logico inglese Alan Turing nel 1936, ancora prima che i calcolatori elettronici fossero pensati e realizzati. In onore del suo ideatore, questo modello di calcolo è denominato macchina di Turing. Dal punto di vista delle sue potenzialità la macchina di Turing risulta essere la macchina più semplice possibile in grado di fare qualcosa che può fare qualsiasi altra macchina. 1

4 2 CAPITOLO 1. MACCHINE DI TURING 1.1 LE MACCHINE DI TURING Il termine macchina attribuito alle macchine di Turing (in seguito MdT) è derivato dal fatto che questo modello di calcolo si presta in modo naturale ad essere pensato e realizzato come un meccanismo fisico di calcolo. Una MdT, descritta nella figura 1.1, è costituita da un unità di controllo dotata di una memoria interna che può assumere uno stato fra un insieme finito e prefissato di stati, da un nastro suddiviso in celle ciascuna delle quali può contenere un carattere appartenente ad un alfabeto finito di simboli, da una testina di lettura/scrittura che permette di leggere e scrivere sul nastro un carattere alla volta. Il nastro deve essere ritenuto illimitato in entrambe le direzioni, nel senso che, all occorrenza, viene automaticamente allungato con delle celle vuote. Poiché in ogni istante solo una porzione del nastro è utilizzata, si assume la convenzione che la restante parte sia riempita con il carattere spazio, indicato con il simbolo. Si assume inoltre l ipotesi che tale carattere faccia sempre parte dell alfabeto della MdT, anche se non viene esplicitamente indicato. nastro * * * testina di lettura/scrittura stato unità di controllo Figura 1.1: Schema di una macchina di Turing. Ogni azione che viene intrapresa da una MdT risulta deterministicamente definita dalle seguenti informazioni: stato corrente dell unità di controllo simbolo corrente sul nastro Un azione di una MdT risulta composta dalle seguenti azioni parziali: cambiare lo stato dell unità di controllo scrivere un simbolo alla posizione attuale sul nastro

5 1.2. PROGRAMMI PER LE DELLE MDT 3 spostarsi a destra o a sinistra (o rimanere ferma) Si assume la convenzione che quando in una situazione non esista alcuna indicazione che precisi come proseguire, la MdT si fermi. Viene imposta inoltre la condizione che le MdT siano deterministiche, ossia che in una stessa condizione di stato interno e di simbolo osservato procedano in modo univoco. Nel seguito saranno tacitamente adottate queste convenzioni. 1.2 PROGRAMMI PER LE DELLE MdT Esistono diversi formalismi per descrivere il funzionamento di una MdT. Uno dei più semplici consiste nel precisare un azione elementare di una MdT mediante una quintupla di simboli; precisamente: una quintupla (p, x, q, y, m) va interpretata come descritto nell algoritmo 1. Algoritmo 1 - Interpretazione di una quintupla (p, x, q, y, m) di una MdT 1: if la MdT è nello stato p e legge il carattere x then 2: passa nello stato q 3: scrive sul nastro il carattere y 4: esegue il movimento m 5: end if Il movimento m può essere descritto mediante uno dei seguenti tre simboli: < : spostamento di un passo a sinistra > : spostamento di un passo a destra - : nessuno spostamento In base a queste premesse, un programma per una MdT risulta costituito da un insieme di quintuple. Per garantire la condizione di determinismo si impone la condizione che quintuple distinte non coincidano sulle prime due componenti. Con un altro formalismo, una quintupla (p, x, q, y, m) può essere descritta mediante una tabella a doppia entrata, detta matrice funzionale, scrivendo lo stato iniziale p ed il simbolo attuale x come entrate della tabella e la porzione

6 4 CAPITOLO 1. MACCHINE DI TURING di quintupla (q, y, m) all interno della tabella, in corrispondenza delle due entrate p e x. Per alcune argomentazioni risulta comodo rappresentare un programma per una MdT sotto forma di automa descritto mediante un grafo di transizione di stato; usando questa notazione, una quintupla (p, x, q, y, m) viene equivalentemente rappresentata come illustrato nella figura 1.2. Lo stato iniziale viene denotato mediante una freccia entrante e gli stati finali mediante un cerchio a doppia linea. p x, y, m q Figura 1.2: Grafo di transizione di stato che descrive la quintupla (p, x, q, y, m). Esempio 1. In questo esempio è descritta, mediante un insieme di quintuple (fig. 1.3), mediante un grafo di transizione degli stati (fig. 1.5), e mediante una matrice funzionale (fig. 1.4), una MdT che, partendo dallo stato iniziale 0 e posizionata sul primo carattere a sinistra di una sequenza di a e b, trasforma le a in b e viceversa e, alla fine, si riposiziona sul primo carattere a sinistra. Con _ si denota il carattere spazio. Figura 1.3: quintuple. 0,a,0,b,> 0,b,0,a,> 0,_,1,_,< 1,a,1,a,< 1,b,1,b,< 1,_,f,_,> Programma di una MdT espresso mediante un insieme di a b _ 0 0 b > 0 a > 1 _ < 1 1 a < 1 b < f _ > Figura 1.4: Programma di una MdT espresso mediante una matrice funzionale.

7 1.3. RISOLUZIONE DI PROBLEMI CON MDT 5 a b > a a < < 0 b a > > 1 b b < f Figura 1.5: Programma di una MdT espresso mediante un grafo di transizione di stato. Osservazione. L insieme di quintuple che descrive una MdT deve essere visto in modo dichiarativo e non in modo imperativo, nel senso che si tratta di un insieme di indicazioni di comportamento e non come una sequenza di istruzioni da eseguire. 1.3 RISOLUZIONE DI PROBLEMI CON MdT Nonostante una MdT non comprenda il significato di quanto c è scritto sul nastro iniziale e di quanto viene scritto sul nastro durante i passi della computazione, codificando opportunamente i dati sul nastro e decodificando opportunamente i risultati lasciati sul nastro alla fine della computazione, le MdT si prestano a risolvere tutte le forme di problemi finora visti (computazionali, decisionali, trasformazionali). La possibilità di scrivere sul nastro rende le MdT estremamente potenti dal punto di vista computazionale in quanto il nastro può essere utilizzato come una memoria sulla quale registrare dati e risultati intermedi prodotti nel corso dell elaborazione. Un altra informazione ricavabile dalla computazione di una MdT è rappresentata dallo stato di arresto finale; in questo modo una MdT, anche senza modificare il nastro, è in grado di risolvere dei problemi di tipo decisionale, ad esempio decidere se la stringa presente inizialmente sul nastro è un teorema di un dato sistema formale. Lo snodo logico e pratico cruciale riguardante l utilizzo delle MdT risiede nel seguente quesito: Come fa una MdT a risolvere un dato problema? Il meccanismo dell applicabilità di una MdT alla risoluzione di un dato problema è quello generale che sottostà all utilizzo di un generico esecutore: c è l esigenza di passare dallo spazio delle soluzioni, nel quale viene ricercata e sviluppata la

8 6 CAPITOLO 1. MACCHINE DI TURING soluzione del problema da parte del solutore, allo spazio delle computazioni, cioè all ambiente nel quale opera l esecutore; per il caso particolare in cui l esecutore sia costituito da una MdT il passaggio dallo spazio delle soluzioni allo spazio delle computazioni può essere descritto mediante lo schema riportato nella figura 1.6. spazio delle soluzioni dati algoritmo risultati codifica dei dati traduzione dell algoritmo in un insieme di quintuple decodifica dei risultati spazio delle computazioni nastro con i dati MdT nastro con i risultati Figura 1.6: Schema del processo di risoluzione di un problema mediante una macchina di Turing. Resta il dubbio se ogni algoritmo descritto in una qualsiasi notazione algoritmica sia traducibile in quintuple per una MdT: la risposta, affermativa, è fornita dalla Tesi di Church-Turing. 1.4 ESEMPI DI MACCHINE DI TURING Negli esempi che seguono viene utilizzato il formalismo delle quintuple; ogni riga contiene una quintupla; le righe che iniziano con un carattere # vengono intese come commenti e non hanno alcuna influenza sulla modalità di funzionamento della MdT. Con _ viene indicato il carattere spazio. Come si supporrà sempre nel seguito, la MdT inizia la computazione nello stato 0 e si trova posizionata sul primo carattere non-spazio a sinistra.

9 1.4. ESEMPI DI MACCHINE DI TURING 7 Esempio 2. In questo esempio viene calcolato il successivo di un numero espresso in notazione unaria, usando il carattere *: il numero zero viene rappresentato con *, il numero uno con **, il numero due con *** e cosí via. Il numero di cui si vuole calcolare il successivo si trova inizialmente codificato sul nastro; alla fine della computazione sul nastro si troverà il risultato (sempre espresso in notazione unaria). 0,*,0,*,> 0,_,1,*,> 1,*,1,*,< 1,_,f,_,< Osservazione. Bisogna notare la differenza fra il livello sintattico e livello semantico in quanto la MdT che incrementa un numero espresso in notazione binaria non conosce i concetti di numero, base di rappresentazione di un numero, operazione di incremento,...); la MdT opera al livello dei segni, indipendentemente dal significato che si voglia attribuire loro. Esempio 3. In questo altro esempio viene calcolato il successivo di un numero espresso in notazione binaria. # posizionamento sul carattere piu a destra 0,0,0,0,> 0,1,0,1,> 0,_,1,_,< # computazione del successivo 1,0,2,1,- 1,1,1,0,< 1,_,2,1,< # posizionamento sul carattere piu a sinistra 2,0,2,0,< 2,1,2,1,< 2,_,f,_,> Osservazione. Dal confronto fra questo esempio ed il precedente si nota che utilizzando un maggior numero di simboli per codificare i dati (per risolvere uno stesso problema) si ha un aumento del numero di quintuple necessario per descrivere la soluzione. Seguendo l obiettivo di massima semplicità si tende ad usare un numero molto ridotto di simboli del nastro. In tale modo la descrizione di una MdT risulta semplificata. Questa semplicità va ad appesantire l esecuzione, ma questo fatto risulta un problema marginale nelle questioni che coinvolgono le MdT.

10 8 CAPITOLO 1. MACCHINE DI TURING Esempio 4. Viene presentato a seguire un programma per una MdT in grado di calcolare, mediante l algoritmo di Euclide, il massimo comune divisore dei due numeri naturali presenti sul nastro, espressi in notazione unaria. Si lascia per esercizio la comprensione di come queste quintuple costituiscano la codifica dell algoritmo di Euclide. 0,_,0,_,> 3,_,4,_,> 6,_,6,_,< 9,_,2,_,> 0,1,1,1,< 3,1,3,1,> 6,1,1,1,< 9,1,1,1,< 1,_,2,1,> 4,_,4,_,> 7,_,7,_,< A,1,A,1,< 1,1,1,1,< 4,1,5,_,> 7,1,8,1,< A,_,f,_,> 2,_,A,_,> 5,_,7,_,< 8,_,9,_,< 2,1,3,_,> 5,1,6,1,< 8,1,8,1,< Osservazione. Come si vede in questi esempi, anche per la soluzione di semplici problemi (calcolo del successore di un numero naturale, calcolo del massimo comune divisore fra due numeri naturali), le MdT richiedono che venga precisato un consistente numero di quintuple; questa situazione era prevedibile in base al principio di complessità della soluzione. Ciò può risultare scoraggiante, specialmente quando si tratta di risolvere un problema di una certa complessità. Ma le MdT non vengono utilizzate per risolvere in pratica problemi significativi e complessi, quanto piuttosto come strumento teorico per indagare e decidere sulla potenziale risolvibilità di alcuni problemi. Osservazione. Dal punto di vista delle azioni svolte, le macchine di Turing sono degli esecutori estremamente semplici e rudimentali. La loro importanza non è dovuta al fatto che rappresentino dei modelli di calcolatori reali, ma alla loro estrema semplicità di descrizione e minimalità architetturale che ben si presta a molteplici utilizzi nell analisi di diverse questioni relative alla computabilità e per indagare sulla risolvibilità teorica dei problemi. D altra parte, si ritiene che tale semplicità non costituisca una limitazione alla risolvibilità dei problemi, in quanto, da varie argomentazioni, è plausibile ritenere che ciò che può essere calcolato da qualsiasi calcolatore esistente o immaginabile, possa essere calcolato anche da una macchina di Turing; viceversa, per ogni problema risolvibile, esiste una macchina di Turing che lo risolve. 1.5 TRASFORMAZIONI DI STRINGHE Nella sua forma più generale, com è stata descritta nei paragrafi precedenti, una MdT T può essere pensata come un trasformatore di stringhe: la stringa s presente come dato scritto sul nastro all inizio della computazione viene trasformata in un altra stringa s = T (s) presente sul nastro alla fine della

11 1.5. TRASFORMAZIONI DI STRINGHE 9 computazione (nel caso la MdT si fermi), secondo lo schema di trasformazione illustrato nella figura 1.7. s T s Figura 1.7: Processo di trasformazione di una stringa s in una stringa s mediante una MdT T. Esistono moltissimi ed interessanti problemi che possono essere inquadrati e risolti mediante un processo di trasformazione di stringhe. Ad esempio, rovesciare una stringa. Questa accezione di MdT come trasformatore di stringhe non è comunque limitante in quanto qualsiasi dato di altra natura (numero, sequenza di numeri, espressione simbolica,...) può essere trasformato in stringa e successivamente la stringa finale lasciata sul nastro alla fine della computazione può essere interpretata e riconvertita. Nel seguito saremo spesso interessati a funzioni della forma N k N che potranno essere calcolate mediante una MdT che parte con il nastro iniziale sul quale è impressa la codifica di k numeri naturali spaziati, ad esempio, mediante un carattere spazio. Il processo di trasformazione di stringhe mediante le MdT può essere descritto in modo funzionale, assimilando la MdT T ad una funzione parziale: s s Questa modalità di interpretazione suggerisce che più MdT T 1, T 2,..., T n (possibilmente diverse) possano essere fatte agire in sequenza, ognuna agente sul nastro lasciato scritto dalla MdT precedente; il risultato finale, presente sul nastro alla fine dell elaborazione della MdT T n, sarà uguale a T n (T n 1 (... T 2 (T 1 (s)))) ottenuto dalla catena di trasformazioni s 0 s 1 s n, indicando con s 0 la stringa presente sul nastro all inizio della computazione e con s i la stringa lasciata scritta sul nastro dalla MdT T i. Per rendere univoca l attivazione in sequenza di più MdT, si assume l ipotesi che ogni MdT termini la propria fase di elaborazione fermandosi sul primo carattere non-spazio a sinistra. L idea della concatenazione di MdT viene utilizzata anche nei moderni linguaggi di programmazione e trova concretizzazione nello strumento dei sottoprogrammi.

12 10 CAPITOLO 1. MACCHINE DI TURING 1.6 LA MdT UNIVERSALE Da quanto è stato esposto nei precedenti paragrafi si possono definire molte MdT, ciascuna caratterizzata da uno specifico insieme di quintuple e quindi in grado di risolvere una specifica classe di problemi. Una generalizzazione di queste macchine si fonda sull idea di considerare un unica MdT programmabile, in grado di simulare e svolgere il compito di una generica MdT, leggendo dal nastro, come input, le quintuple, consultando il nastro durante il processo di computazione per scegliere la quintupla da eseguire man mano che procede il processo di computazione). Tale MdT viene detta macchina di Turing universale. Al di là della difficoltà di realizzazione pratica, una tale MdT è facilmente immaginabile; tale idea di generalizzazione ha avuto importanti ricadute pratiche ed ha dato il via allo sviluppo dei calcolatori attuali secondo l architettura di von Newman. Tale architettura, caratterizzata dall avere in memoria sia il programma che i dati che vengono elaborati, caratterizza la stragrande maggioranza degli attuali calcolatori. 1.7 ESERCIZI 1. Molto spesso si usano con lo stesso significato le seguenti due locuzioni: (a) La MdT descritta dall insieme di quintuple X (b) Il programma per una MdT costituito dall insieme di quintuple X Dire quale delle due forme sopra è preferibile. possono essere accettate entrambe le forme. Dire perché, comunque, 2. Spiegare perché le MdT costituiscono una conferma del principio di complessità della soluzione. 3. Il nastro di una MdT contiene un solo asterisco. Individuare una strategia per portarsi sull asterisco trovandosi su uno spazio e non sapendo da quale parte rispetto all asterisco. Scrivere un programma per una MdT corrispondente alla strategia individuata. 4. Decidere se un nastro è completamente vuoto. Si noti che, in questo caso, la MdT potrebbe non fermarsi. Nota. Nei seguenti esercizi si richiede di scrivere dei programmi per una MdT, assumendo l ipotesi che la macchina parta dallo stato iniziale 0 e che sia posta sul primo carattere non-spazio a sinistra. Descrivere il

13 1.7. ESERCIZI 11 procedimento dapprima a parole e successivamente codificarlo mediante un formalismo per le MdT. 5. Spostare a destra di una posizione una sequenza di asterischi presenti inizialmente sul nastro. 6. Spostare a destra di una posizione una sequenza compatta di 0 e 1 presenti inizialmente sul nastro. 7. Spostare alla fine il carattere iniziale di una posizione una sequenza compatta di 0 e 1 presenti inizialmente sul nastro. 8. Calcolare in successione tutti i successivi del numero presente inizialmente sul nastro, senza fermarsi. Si risolva l esercizio adottando le seguenti notazioni di codifica dei numeri: unaria, binaria e decimale. 9. Realizzare le seguenti funzioni sui numeri naturali, codificati in notazione unaria, in notazione binaria ed in notazione decimale: successivo: n n + 1 precedente: n 0 se n = 0; n 1 altrimenti doppio: n n 2 metà: n n/2 logaritmo: n log 2 n 10. Eseguire l addizione fra due numeri espressi in notazione binaria; ad esempio: nastro prima della computazione: nastro alla fine della computazione: Convertire un numero dalla notazione binaria a quella decimale. 12. Assumendo come alfabeto del nastro l insieme A = {0, 1}, risolvere i seguenti problemi: (a) Eliminare tutti i simboli del nastro. (b) Eliminare tutti gli 0 e compattare gli 1 verso sinistra. (c) Decidere se una stringa è formata da un numero pari di 0. (d) Decidere se una stringa rappresenta un numero pari (in notazione binaria).

14 12 CAPITOLO 1. MACCHINE DI TURING (e) Decidere se una stringa è formata da simboli alternati; ad esempio: 0, 10, (f) Decidere se una stringa è composta da un uguale numero di 0 ed Decidere se un numero naturale in rappresentazione unaria ed in rappresentazione binaria è pari o dispari. La MdT deve lasciare sul nastro la stringa com era all inizio della computazione fermandosi sullo stato Y se la stringa è composta da un numero pari di asterischi, nello stato N altrimenti. Spiegare perché in questo caso risulta più semplice operare con una rappresentazione binaria che con una unaria. 14. Decidere se una stringa di + e - è palindroma, ossia se si legge indifferentemente da sinistra a destra e da destra a sinistra. La MdT deve lasciare sul nastro la stringa com era all inizio della computazione; deve fermarsi sullo stato Y se la stringa è palindroma, nello stato N altrimenti. 15. Il nastro di una MdT contiene una sequenza contigua composta da + e -. Decidere se la sequenza è composta da almeno due caratteri consecutivi uguali. 16. Decidere se il nastro contiene un numero pari di simboli +; la MdT deve cancellare dal nastro di input tutti i simboli + se essi sono in numero pari, deve lasciare sul nastro un solo simbolo + se il nastro di input contiene un numero dispari di simboli Decidere se una data stringa è formata da caratteri a e b alternati. Ad esempio, devono essere riconosciute le seguenti stringhe: a, ba, ababa, babababa. 18. Decidere se una data stringa è formata da una successione di a seguite da una successione di b, in uguale numero. Ad esempio, devono essere riconosciute le seguenti stringhe: ab, aabb, aaabbb. 19. Usando 3 stati (oltre allo stato finale) ed il solo simbolo *, descrivere una MdT che, partendo da un nastro vuoto, scriva il maggior numero possibile di asterischi e poi si fermi. Una MdT come quella appena descritta viene detta castoro a 3 stati. Un castoro massimale che genera il maggior numero di asterischi viene detto alacre castoro. 20. Approfondire e discutere la seguente architettura (di von Neuman) di macchina di Turing (macchina di Turing Universale):

15 1.7. ESERCIZI 13 La MdT opera secondo un prefissato programma (non modificabile); la particolarizzazione del procedimento (per adattarsi alla soluzione di diverse classi di problemi) avviene precisando (come dato di input) sul nastro sia l insieme delle quintuple (che permettono di risolvere i problemi di una classe di problemi) che (come succede per le MdT viste finora) i dati di input per risolvere una particolare istanza di problema (della classe considerata). 21. Date le seguenti tre MdT: M 1 che trasforma un numero da notazione unaria a notazione decimale M 2 che trasforma un numero da notazione decimale a notazione unaria M 3 che calcola il massimo comune divisore fra due numeri naturali espressi in notazione unaria comporle opportunamente in modo da ottenere una MdT M che calcola il massimo comune divisore fra due numeri naturali espressi in notazione decimale. 22. Oltre alle macchine di Turing sono stati ideati altri meccanismi di calcolo. La macchina UMR (ideata nel 1963 da Shepherdson e Sturgis e successivamente modificata da Cutland nel 1980) è composta da un numero illimitato di registri, indicati con R 1, R 2,.... Ogni registro, in un dato istante, contiene un numero naturale. Il contenuto dei vari registri può essere modificato mediante le seguenti istruzioni: Istruzione di azzeramento Z(n) : viene posto uguale a zero il contenuto del registro R n Istruzione di successivo S(n) : viene aumentato di uno il contenuto del registro R n Istruzione di trasferimento T(m,n) : viene sostituito il valore del registro R m con il valore del registro R n Istruzione di salto J(m,n,p) : se il contenuto del registro R m è uguale a quello del registro R n la macchina va alla p-esima istruzione del programma Discutere comparativamente i livelli di proceduralità delle MdT e delle macchine URM. Scrivere programma per una macchina URM che esegua il prodotto fra due numeri naturali memorizzati nei registri R 1 ed R 2 ; il risultato deve essere memorizzato nel registro R 3.

16 14 CAPITOLO 1. MACCHINE DI TURING

17 Capitolo 2 Computabilità La tesi di Church-Turing [...] è certamente uno dei concetti più importanti della filosofia della matematica, del cervello e della mente. D. R. Hofstadter, Gödel, Escher, Bach Il fatto che la ricerca scientifica sia riuscita a riconoscere in modo preciso i limiti delle sue possibilità, ci sembra una prestazione dello spirito umano, più grande della tecnicizzazione del nostro mondo, tanto spesso ammirata. H. Meschkowsky, Mutamenti nel pensiero matematico [...] è molto importante il fatto che si possa dimostrare in modo puramente matematico che i sostituti proposti per il concetto di algoritmo mediante vari concetti matematici rigorosi (che hanno origine da punti di partenza differenti) risultano equivalenti. H. Hermes, Enumerabilità, decidibilità, computabilità Il concetto di computabilità, che sarà appena sfiorato nelle poche pagine che seguiranno, è un argomento che coinvolge varie discipline: informatica, tecnologia, matematica, filosofia, epistemologia, ed altre ancora. L argomento si presta, quindi, ad essere indagato e trattato, dall interno di ciascuna disciplina, in modi diversi e con diversi accenti. La teoria della computabilità permette di tracciare una linea di demarcazione fra ciò che è computabile e ciò che non lo è, ossia fra i problemi che (almeno in linea teorica) sono risolvibili e problemi che non lo sono. Tutto il capitolo è impostato sulla presentazione di risultati in negativo che segnano una sorta di ideale confine invalicabile dai metodi e dagli strumenti della scienza. 15

18 16 CAPITOLO 2. COMPUTABILITÀ 2.1 LA TESI DI CHURCH-TURING Esistono moltissimi problemi per i quali è stata fornita una rigorosa dimostrazione del fatto che essi non sono risolvibili. Tale limitazione non è comunque dovuta all incapacità del solutore nel formulare un adeguato algoritmo, ma alla natura intrinseca della logica, della matematica e del linguaggio. Nella dimostrazione di non risolvibilità di questi problemi gioca un ruolo fondamentale la seguente ipotesi, formulata da Church e Turing nel 1937, che, da varie argomentazioni, è plausibile ritenere che sia vera, cosicché si è meritata l appellativo di tesi. TEOREMA 1 (Tesi di Church-Turing). Tutti i meccanismi di calcolo (MdT, personal computer, mainframe, calcolatori paralleli,...) 1. finora realizzati (dato di fatto dimostrato) e 2. realizzabili in futuro (ipotesi plausibile) sono equivalenti, cioè possono risolvere gli stessi problemi. Dalla tesi di Church-Turing discende il seguente corollario. TEOREMA 2 (Corollario della tesi di Church-Turing). Ogni problema è risolvibile se e solo se esiste una MdT che lo risolve. In base a questo risultato si può parlare di problemi risolvibili e problemi non risolvibili senza fare alcun riferimento all esecutore. Operativamente, si dimostra che un problema è non risolvibile dimostrando che non esiste alcuna MdT (e quindi nessun altra macchina, per la tesi di Church-Turing) che lo risolve. 2.2 IL TEOREMA DI INCOMPLETEZZA Uno dei primi problemi che è stato dimostrato essere non risolvibile è noto con il nome di teorema di incompletezza di Gödel, dimostrato nel 1931 dal logico e matematico austriaco Kurt Gödel. Questo teorema tratta degli enunciati sui numeri naturali; sono esempi di enunciati i seguenti: E 1 per ogni x N si ha x x > 0 (falso) E 2 esiste x N tale che x + 2 = 0 (falso) E 3 esistono x, y N, x > 1, y > 1, tali che x y = (vero) E 4 non esistono x, y, z, n N, n > 2, tali che x n + y n = z n (vero)

19 2.3. IL PROBLEMA DELLA FERMATA 17 Da questo breve elenco di enunciati sembrerebbe che per ogni enunciato si possa stabilire, con più o meno difficoltà, se esso sia vero o falso; nei casi più complicati può rimanere il dubbio. Ma la situazione è ancora più paradossale: esistono degli enunciati che risultano intrinsecamente indecidibili; questo fatto è stabilito dal TEOREMA 3 (Teorema di incompletezza di Gödel). Non è possibile stabilire se un generico enunciato sui numeri naturali sia vero o falso. Naturalmente, esistono moltissimi ed interessanti enunciati che sono decidibili, ossia enunciati per i quali è possibile stabilire se sono veri o falsi; ma ce ne sono molti altri che si sottraggono a questa classificazione. I risultati di Godel del 1931, sintetizzati nel suo teorema di icompletezza, mandarono in frantumi le speranze di Hilbert di dare un fondamento assoluto alla matematica. 2.3 IL PROBLEMA DELLA FERMATA Un altro famoso problema, considerato inizialmente da Turing e per il quale lo stesso Turing ha fornita una dimostrazione di non decidibilità, è il seguente, noto come Problema della fermata : Dato un generico programma P (insieme di quintuple di una MdT, programma scritto in un qualche linguaggio di programmazione o altro differente formalismo) ed un insieme di dati di input I, stabilire se il programma P, avendo come input I, si fermerà o no. La soluzione di questo problema è l oggetto del seguente teorema. TEOREMA 4. Il problema della fermata è indecidibile, ossia non esiste alcun procedimento in base al quale, dato un programma P ed un insieme di dati di input I sui quali opera il programma P, si possa decidere se il programma P si fermerà se viene fatto partire sul nastro sul quale vi siano codificati i dati di input I. Il problema della fermata acquista particolare rilevanza nell ambito della teoria della programmazione in quanto viene ad affermare che è impossibile stabilire se un generico programma giungerà o no alla fine dell esecuzione o continuerà all infinito, senza mai fermarsi; esistono comunque dei programmi abbastanza semplici per i quali si riesce a dimostrare la terminazione o la non terminazione. La non risolvibilità del problema della fermata acquista anche

20 18 CAPITOLO 2. COMPUTABILITÀ una valenza strumentale per la soluzione di altre classi di problemi; infatti, esistono varie classi di problemi che si dimostrano essere non risolvibili seguendo una linea di ragionamento come la seguente: si dimostra che tali classi di problemi sono riconducibili al problema della fermata e pertanto se ammettessero soluzione, di conseguenza risulterebbe risolvibile anche il problema della fermata. Da questa contraddizione si deduce che queste classi di problemi sono non risolvibili. Ad esempio, si dimostra in questo modo che la decisione se due programmi risultino equivalenti è non risolvibile. Osservazione. Il quadro avvilente, presentato nei precedenti paragrafi, riguardante la risolvibilità di importanti classi di problemi, viene in parte riscattato dal fatto che spesso si considerano particolari sottoinsiemi di queste classi di problemi e, per questi sottoinsiemi, si riesce a trovare un adeguata soluzione e si è in grado di dimostrare che l esecuzione giungerà al termine per ogni possibile istanziazione dei dati di input. 2.4 FUNZIONI COMPUTABILI Una funzione dicesi computabile o calcolabile se esiste un procedimento meccanico (algoritmo) che permette di determinare il valore della funzione per ogni possibile valore degli argomenti. Nel caso in cui il processo di calcolo, per qualche valore dei dati di input, non termini si parla di funzioni parzialmente computabili. Per le considerazioni che seguiranno ci limiteremo a considerare funzioni sui numeri naturali. Esempio 5. Sono esempi di funzioni computabili le seguenti: n 2 n (m, n) massimo comune divisore fra m ed n n n-esima cifra decimale di 2 La distinzione fra funzioni computabili e non computabili non avrebbe ragione d esistere fintantochè non si sia dimostrato che esistono funzioni non computabili oppure non si sia prodotto un esempio di funzione non computabile. Dimostriamo subito che esistono funzioni non computabili. Ogni MdT è descritta mediante il suo programma (insieme di quintuple); tale programma può essere convertito in una stringa (ad esempio concatenando le stringhe che codificano ciascuna quintupla). Le stringhe che codificano le MdT possono essere enumerate in sequenza, ad esempio in ordine alfabetico. Le funzioni fra

21 2.5. COMPUTABILITÀ DEI NUMERI REALI 19 numeri naturali (della forma N N) non sono numerabili. Quindi esistono funzioni non computabili. Da questa dimostrazione abbiamo ottenuto un risultato più forte di quanto ci eravamo prefissi: le funzioni non computabili sono la stragrande maggioranza fra tutte le funzioni ossia, in altri termini, quasi tutte le funzioni fra numeri naturali sono non computabili. Il fatto che questa conclusione contrasti con l opinione comune che le funzioni siano tutte computabili dipende dal fatto che le funzioni che si incontrano spontaneamente e che si costruiscono sono definite apposta per essere computabili. Esibire degli esempi di funzioni non computabili non è facile e serve un po di inventiva. Un classico esempio di funzione non computabile 1 è rappresentato dalla funzione f N N definita come segue: f(n) = 1 se nella rappresentazione decimale di π c è una successione di n cifre 7 consecutive 0 altrimenti Esssendo che un algoritmo è concettualmente assimilabile ad una funzione, si può parlare indifferentemente di problemi risolvibili e funzioni computabili. 2.5 COMPUTABILITÀ DEI NUMERI REALI Un apparente limite di cui sembrano soffrire gli elaboratori consiste nella difficoltà di gestire in modo numerico (e non solamente simbolico) i numeri reali irrazionali. Ciò dipende dal fatto che la rappresentazione dei numeri avviene in modo finito mentre i numeri irrazionali richiedono un espansione numerica decimale non finita. In questi casi, come avviene in molti algoritmi numerici, si approssima l infinito attuale con un infinito potenziale, secondo l idea descritta nella seguente definizione. DEFINIZIONE 1. Un numero reale x si dice computabile se esiste un algoritmo A N {0, 1,..., 9} tale che A(n) sia l n-esima cifra decimale di x, assumendo che A(0) = x ; in altri termini deve essere calcolabile (mediante un procedimento effettivo) la seguente funzione: f(n) = { x se n = 0 n-esima cifra decimale di x se n > 0 1 Riportato in N. Cutland, Computability, Cambridge Univ. Press, 1980.

22 20 CAPITOLO 2. COMPUTABILITÀ Equivalentemente, la computabilità di un numero reale x può essere basata sulla calcolabilità della seguente funzione: g(n) = { x se n = 0 numero formato dalle prime n cifre decimali di x se n > 0 Risulta abbastanza evidente e facile da dimostrare che tutti i numeri razionali sono computabili. La computabilità effettiva dei numeri reali con espansione decimale illimitata e non periodica richiede invece che venga fornito un procedimento algoritmico che genera una successione convergente. Esempio 6. I seguenti due risultati stabiliscono che i due numeri reali 2 e π sono computabili: la successione a 0 = 1, a n = 1 2 (1 + 1 a n 1 ) converge a 2 la serie 4 ( 1) k+1 1 k=1 k = 4 ( ) converge a π 7 Esistono però numeri irrazionali con computabili. 2.6 ESERCIZI 1. Dimostrare che tutti i numeri razionali sono computabili. 2. Dimostrare che esistono numeri reali non computabili. Suggerimento: utilizzare un procedimento diagonale analogo a quello utilizzato per dimostrare che l insieme dei numeri reali non è numerabile. 3. Dimostrare che, per ogni x R +, x è computabile. 4. Si analizzi e si commenti la seguente frase del filosofo Ernst Cassirer (1937) nel contesto della computabilità. Non è lecito pensare al limite come semplice ostacolo a cui noi ci si debba sottrarre non appena e per quanto possibile: esso piuttosto delimita il solo campo in cui il nostro pensiero e il nostro conoscere si compiono - quello in cui essi ottengono il loro significato.

23 Capitolo 3 Blocchi Ci fu un tempo, prima che i nostri traguardi diventassero più ambiziosi, in cui trovavamo strano e meraviglioso riuscire a fare una torre o una casa coi blocchetti delle costruzioni. Eppure, benché tutti gli adulti sappiano fare queste cose, nessuno ancora ha capito come s impari a farle! M. Minsky, La società della mente Per dominare la complessità, sia dal punto di vista concettuale che dal punto di vista operativo, l uomo fa spesso ricorso al principio di astrazione. Si tratta di un meccanismo fondamentale per l informatica ma è trasversale ed è di supporto a tutte le altre scienze. Una applicazione del principio dell astrazione è rappresentata dal concetto di blocco. La nozione di blocco permette di definire un utile dicotomia fra il fuori ed il dentro, fra il progetto e la realizzazione, fra il cosa fa un oggetto verso l esterno e come è fatto un oggetto al suo interno. Questo concetto si evidenzia sia a livello progettuale, quando si definisce l interfaccia di un blocco e si demanda a tempi successivi la sua implementazione, sia a livello implementativo, quando si delimita un sistema di componenti considerandoli come un tutt uno. I blocchi facilitano la comprensione e gestione della realtà in quanto consentono di trascurare i dettagli di come il blocco è fatto al suo interno. Inoltre offrono il vantaggio operativo fondato sulla possibilità di clonare un blocco al fine di utilizzarli nella costruzione di altri blocchi. 21

24 22 CAPITOLO 3. BLOCCHI 3.1 BLOCCHI Un blocco, considerandolo solamente dal punto di vista di come interagisce con l esterno, può essere pensato come una scatola nera, e può essere utilizzato senza riferirsi ad alcun dettaglio relativo alla sua costituzione interna. Indipendentemente dalla sua funzionalità, un blocco viene generalmente descritto mediante una forma rettangolare come descritto nella figura 3.1. blocco Figura 3.1: Schema grafico per denotare un blocco. Il concetto di blocco può assumere diversi significati a seconda del contesto in cui si colloca, assumendo di volta in volta delle diverse denominazioni, come descritto dalla lista che segue: problema: blocco vuoto in cui sono esplicitati solamente gli ingressi (dati del problema), le uscite (risultati del problema) ed i vincoli fra gli ingressi e le uscite algoritmo: è un blocco in cui si vuole evidenziare la descrizione del procedimento di elaborazione interna; in pratica il blocco algoritmo costituisce l implementazione del blocco problema macchina: blocco caratterizzato da un meccanismo di elaborazione automatico interno che produce delle uscite in conseguenza di certi ingressi; altri termini sinonimi: automa, robot. funzione: blocco in cui si vuole evidenziare il legame funzionale fra gli ingressi e le uscite operazione: blocco che genera un risultato mediante un operazione sugli ingressi oggetto: blocco dotato di uno stato interno componente: blocco costituente un elemento di un sistema sistema: blocco composto da più oggetti fra loro interagenti rete: blocco in cui si evidenziano le mutue interrelazioni fra le componenti costitutive struttura: blocco composto da una struttura di dati

25 3.2. FUNZIONE DI UN BLOCCO FUNZIONE DI UN BLOCCO Un blocco, per essere efficace, deve interagire con l ambiente circostante. L interazione di un blocco con l ambiente esterno ad esso può essere scissa in due componenti: ingressi e uscite. In questo modo un blocco risulta caratterizzato da una funzione di trasformazione F che lega gli ingressi x e le uscite y, secondo lo schema generale descritto nella figura 3.2. Si evidenzia così una perfetta analogia fra blocco e funzione: un blocco rappresenta la percezione fisica e la versione ingegneristica del concetto matematico di funzione. x F y Figura 3.2: Schema funzionale di un blocco avente funzione di trasformazione F, ingressi x ed uscite y. Per un dato blocco F, coerentemente con lo schema generale presentato nella figura 3.2, vale l uguaglianza y = F[x] Questa relazione funzionale evidenzia che le uscite y si ottengono mediante la trasformazione F che agisce sugli ingressi x. Due blocchi aventi funzioni di trasformazione F 1 e F 2 si dicono equivalenti se, con ingressi uguali, forniscono uguali uscite. Matematicamente significa che F 1 [x] = F 2 [x] per ogni ingresso x Quando si vuole esplicitare i singoli ingressi, x 2,..., x m e le singole uscite y 1, y 2,..., y n viene solitamente usata la seguente notazione lineare: [y 1, y 2,..., y n ] = F[, x 2,..., x m ] L equivalente notazione grafica è descritta nella figura 3.3. In questo caso F è una funzione vettoriale costituita da una sequenza di funzioni [f 1, f 2,..., f n ]; in dettaglio, per ciascuna componente per ciascuna componente dell uscita si ha: y 1 = f 1 [, x 2,..., x m ] y 2 = f 2 [, x 2,..., x m ] y n = f n [, x 2,..., x m ]

26 24 CAPITOLO 3. BLOCCHI x 2 x m F y 1 y 2 y n Figura 3.3: Blocco avente funzione di trasformazione F, avente ingressi, x 2,..., x m ed uscite y 1, y 2,..., y n. Il legame funzionale fra gli ingressi e le uscite può essere descritto in diversi modi: mediante una descrizione di tipo dichiarativo Esempio 7. Un blocco che determina il massimo comune divisore fra due numeri naturali può essere descritto come segue: ingressi: numeri naturali m, n uscite: massimo numero naturale che è divisore di m e di n mediante un espressione Esempio 8. Un blocco che determina la potenza di un numero reale elevato ad un esponente intero può essere descritto come segue: ingressi: numero naturale reale x, numero intero k uscite: numero reale x k mediante un insieme di vincoli Esempio 9. Un blocco che ordina due numeri può essere descritto come segue: ingressi: numeri reali, x 2 uscite: numeri reali y 1, y 2 tali che (y 1 y 2 ) ({, x 2 } = {y 1, y 2 })

27 3.3. CLASSIFICAZIONE DEI BLOCCHI CLASSIFICAZIONE DEI BLOCCHI I blocchi possono essere classificati in base alla loro funzione di trasformazione. Alcuni linguaggi di programmazione (Scratch, Snap!) adottano la seguente classificazione: blocchi comando: blocco che non fornisce alcun risultato in uscita; il risultato viene automaticamente indirizzato su un oggetto (ad esempio, assegnazione di un valore ad una variabile) oppure producendo un effetto su un dispositivo di output (visualizzazione di una scritta, disegno di una figura, produzione di un suono) blocchi reporter: blocco che, in funzione degli ingressi, produce un uscita blocchi predicato: è un caso particolare di blocco reporter che fornisce in uscita un valore di tipo booleano comando reporter predicato Figura 3.4: Le varie tipologie dei blocchi. 3.4 COSTRUZIONE DEI BLOCCHI Un blocco viene costruito connettendo fra loro i blocchi elementari che realizzano le operazioni di base (+,,, /,... ); Nella costruzione dei blocchi, in molte situazioni insorge l esigenza di duplicare un ingresso; in questi casi viene utilizzato un particolare operatore duplicatore che duplica l ingresso: come descritto nella figura 3.5. x dup x x Figura 3.5: Specifica del blocco che duplica l ingresso x.

28 26 CAPITOLO 3. BLOCCHI Solitamente, l operatore dup viene sottinteso e viene sostituito da una semplice biforcazione, evidenziata con un pallino, del ramo di ingresso, come descritto nella figura 3.6. x x x Figura 3.6: Schema del blocco che duplica l ingresso x. Il seguente esempio illustra le tre fasi della realizzazione di un blocco. Esempio 10. Supponiamo di avere a disposizione gli operatori aritmetici di base e l operatore condizionale if; supponiamo inoltre che sugli ingressi di un blocco sia definita una relazione d ordine. Vogliamo costruire l operatore min che determina il minimo fra due ingressi e x 2 secondo la specifica funzionale descritta nella figura 3.7. x 2 min minimo fra ed x 2 Figura 3.7: Specifica del blocco che determina il minimo fra e x 2. L operatore min può essere realizzato come descritto nella figura 3.8. min x 2 < if minimo fra ed x 2 Figura 3.8: Struttura del blocco che determina il minimo fra i due ingressi e x 2.

29 3.4. COSTRUZIONE DEI BLOCCHI 27 In modalità testuale il blocco min può essere definito dalla scrittura min[, x 2 ] if[ < x 2,, x 2 ] L operatore min può essere usato in vari contesti: per risolvere una specifica istanza di problema, ad esempio per determinare il minimo fra due elementi a e b e depositare il risultato nella variabile r, scrivendo, in modalità testuale: r min[a, b] oppure per costruire altri blocchi, ad esempio per determinare il minimo fra tre elementi, come illustrato dal diagramma riportato nella figura 3.9. In modalità testuale questo blocco viene definito dalla scrittura min[, x 2, x 3 ] min[min[, x 2 ], x 3 ] x 2 x 3 min min minimo fra, x 2, x 3 Figura 3.9: Struttura del blocco min per determinare il minimo fra tre elementi, x 2 ed x 3. La costituzione interna di un blocco può essere descritta mediante un algoritmo sequenziale, dove possono essere usate delle variabili locali interne al blocco per memorizzare dei risultati parziali oppure per realizzare i blocchi duplicatori. Esempio 11. La struttura interna del blocco descritto nella figura 3.8 può essere descritta mediante la seguente porzione di algoritmo: [, x 2 ] t < x 2 y if[t,, x 2 ] y

30 28 CAPITOLO 3. BLOCCHI 3.5 BLOCCHI E PROBLEM SOLVING I blocchi costituiscono un importante strumento per concretizzare le metodologie top-down e bottom-up nella soluzione dei problemi. Per costruire un blocco (ma, in generale, per risolvere un problema) si possono adottare due strategie: comporre gli operatori che già si hanno a disposizione (operatori di base o operatori precedentemente costruiti) oppure usare, pensandoli già disponibili, dei blocchi che verranno costruiti in un secondo momento. La prima strategia corrisponde alla metodologia bottom-up mentre la seconda alla metodologia top-down. Spesso queste due strategie dimostrano la loro massima efficacia se vengono utilizzate in modo combinato. Esempio 12. La rete combinatoria riportata nella figura 3.10 valuta il valore di un binomio della forma ax + b. a x b bin + ax + b Figura 3.10: Blocco per il calcolo del binomio ax + b. Il blocco bin può essere usato per costruire un blocco tri per valutare il valore del trinomio ax 2 + bx + c, componendo due istanze del blocco bin, basandosi sull identità ax 2 + bx + c = (ax + b)x + c = bin[bin[a, x, b], x, c] 3.6 COMPLESSITÀ DEI BLOCCHI Nel caso di blocchi equivalenti risulta importante analizzare e decidere quale sia il migliore, dove con tale termine si intende che usa la minor quantità di risorse. Nel caso dei blocchi combinatori, come quelli precedentemente esaminati, la complessità di un blocco viene definita come il numero dei suoi componenti elementari.

31 3.6. COMPLESSITÀ DEI BLOCCHI 29 tri a x b c bin bin ax 2 + bx + c Figura 3.11: Rete combinatoria per il calcolo del trinomio ax 2 + bx + c. Per tempo di esecuzione di un blocco si intende il numero di unità di tempo impiegate per l elaborazione del blocco. Un approssimazione plausibile, benché semplificativa, consiste nel ritenere che il tempo dell operatore di duplicazione sia trascurabile mentre tutti gli altri operatori impieghino una stessa quantità di tempo unitaria. Bisogna comunque distinguere i seguenti due casi: esecuzione sequenziale: in ogni istante è operativo un solo componente esecuzione parallela: i componenti, i cui ingressi ed uscite non sono interdipendenti, operano contemporaneamente Questa distinzione è descritta nell esempio che segue. Esempio 13. I seguenti due blocchi sono equivalenti (entrambi determinano la somma dei quattro numeri in ingresso). La dimostrazione di equivalenza si può fondare sulla proprietà associativa dell operazione di addizione. add 4 x 2 x 3 x x 2 + x 3 + x 4

32 30 CAPITOLO 3. BLOCCHI add 4 x x 2 + x 3 + x 4 2 x 3 x + 4 Questi due blocchi hanno la stessa complessità strutturale ma il secondo è più efficiente del primo in caso di esecuzione parallela, in quanto impiega due unità di tempo (al posto delle tre unità di tempo impiegate dal primo). Essi corrispondono a due diverse parentizzazioni descritte dalle seguenti due espressioni: (( + x 2 ) + x 3 ) + x 4 ( + x 2 ) + (x 3 + x 4 ) 3.7 BLOCCHI CON CONTROLLI Un sistema di blocchi ha delle potenzialità molto limitate; ad esempio, dati in ingresso due numeri x ed n non si riesce a costruire un sistema di blocchi in grado di calcolare il valore della potenza x n, usando i quattro operatori aritmetici di base +,,, /. Questa limitazione è dovuta al fatto che un sistema di blocchi è equivalente alla valutazione di un espressione che, in sostanza, corrisponde all applicazione di una formula. D altra parte moltissimi problemi, anche limitandosi ai problemi numerici (ad esempio il calcolo del massimo comune divisore fra due generici numeri naturali), non sono risolvibili mediante una formula, ma richiedono procedimenti più articolati. Nei casi in cui la soluzione di un problema richieda delle elaborazioni condizionali e cicliche, nella costruzione di un blocco si fa ricorso ai controlli della programmazione strutturata. Esempio 14. Il calcolo del massimo comune divisore fra due numeri naturali m ed n è realizzabile mediante un blocco avente la seguente interfaccia: m n mcd massimo comune divisore fra m ed n L implementazione di questo blocco può essere basata sull algoritmo di Euclide.

33 3.8. ESERCIZI ESERCIZI 1. Dimostrare che il seguente blocco produce sempre il valore di verità vero. x 2 < if y 2. Stabilire cosa produce il seguente blocco, essendo ed x 2 ingressi numerici: x 2 + y 1 y 2 Dare una dimostrazione di quanto stabilito. 3. Usando gli operatori binari +, e max, costruire un blocco per determinare il minimo fra due numeri. 4. Usando gli operatori aritmetici, l operatore if e gli operatori min e max, costruire un blocco per determinare la somma dei due valori più piccoli fra tre valori. 5. Costruire un blocco per decidere se tre dati valori possono costituire le misure dei lati di un triangolo. 6. Usando i soli operatori di confronto binari = e, costruire un blocco equivalente alla porta logica not. 7. Usando gli operatori di confronto =,, <, >,, e l operatore if, costruire un blocco per determinare il massimo fra 2 valori. Utilizzando tale blocco come componente elementare, costruire un blocco per determinare il massimo fra 3 elementi ed il massimo fra 4 elementi. 8. Realizzare dei blocchi che svolgono le seguenti funzioni:

34 32 CAPITOLO 3. BLOCCHI (a) valutazione di un binomio della forma a x + b (b) valutazione di un trinomio della forma a x 2 + b x + c (c) decidere se x è soluzione dell equazione a x 2 + b x + c = 0 9. Componendo il blocco bin, costruire un blocco quad per valutare il quadrinomio ax 3 + bx 2 + cx + d. Generalizzare al caso di un polinomio di grado n prefissato. 10. Usando l operatore tri che valuta un trinomio della forma ax 2 + bx + c costruire un blocco per decidere se un punto del piano cartesiano di coordinate (x, y) appartiene alla parabola di equazione y = ax 2 + bx + c. 11. Costruire un blocco con ingresso x ed uscita x Costruire un blocco ad un unico ingresso x e con le uscite x, x 2, x 3, x 4, x 5,. 13. Il calcolo di x 8 può essere svolto usando solo 3 operatori moltiplicativi, sfruttando la relazione x 8 = ((x 2 ) 2 ) 2 ; il calcolo di x 9 richiede l uso di 4 operatori moltiplicativi sfruttando la relazione x 9 = x x 8. A partire da questi casi particolari, generalizzare e stabilire in funzione del numero naturale n quanti operatori moltiplicativi sono necessari per calcolare x n. 14. Costruire due blocchi aventi funzioni di trasformazione corrispondenti alle seguenti definizioni di funzione: x = minimo numero intero x x = massimo numero intero x essendo x un numero decimale. Spiegare perchè, per ogni numero naturale n, vale la relazione n/2 + n/2 = n. 15. Usando gli operatori aritmetici binari +,,, / che operano sui numeri naturali, costruire un blocco che calcoli il quoziente ed il resto della divisione intera fra due dati numeri naturali m ed n. Descrivere un algoritmo sequenziale equivalente alla rete combinatoria che si è descritta.

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Fasi di creazione di un programma

Fasi di creazione di un programma Fasi di creazione di un programma 1. Studio Preliminare 2. Analisi del Sistema 6. Manutenzione e Test 3. Progettazione 5. Implementazione 4. Sviluppo 41 Sviluppo di programmi Per la costruzione di un programma

Dettagli

Le Macchine di Turing

Le Macchine di Turing Le Macchine di Turing Come è fatta una MdT? Una MdT è definita da: un nastro una testina uno stato interno un programma uno stato iniziale Il nastro Il nastro è infinito suddiviso in celle In una cella

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico Processo di risoluzione di un problema ingegneristico 1. Capire l essenza del problema. 2. Raccogliere le informazioni disponibili. Alcune potrebbero essere disponibili in un secondo momento. 3. Determinare

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Elementi di Informatica e Programmazione Il concetto di Algoritmo e di Calcolatore Corsi di Laurea in: Ingegneria Civile Ingegneria per l Ambiente e il Territorio Università degli Studi di Brescia Cos

Dettagli

Esponenziali elogaritmi

Esponenziali elogaritmi Esponenziali elogaritmi Potenze ad esponente reale Ricordiamo che per un qualsiasi numero razionale m n prendere n>0) si pone a m n = n a m (in cui si può sempre a patto che a sia un numero reale positivo.

Dettagli

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente

Funzioni funzione dominio codominio legge argomento variabile indipendente variabile dipendente Funzioni In matematica, una funzione f da X in Y consiste in: 1. un insieme X detto dominio di f 2. un insieme Y detto codominio di f 3. una legge che ad ogni elemento x in X associa uno ed un solo elemento

Dettagli

CONCETTO DI LIMITE DI UNA FUNZIONE REALE

CONCETTO DI LIMITE DI UNA FUNZIONE REALE CONCETTO DI LIMITE DI UNA FUNZIONE REALE Il limite di una funzione è uno dei concetti fondamentali dell'analisi matematica. Tramite questo concetto viene formalizzata la nozione di funzione continua e

Dettagli

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio Il Concetto Intuitivo di Calcolatore Fondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini I Problemi e la loro Soluzione Problema: classe

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Algoritmi e Complessità

Algoritmi e Complessità Algoritmi e Complessità Università di Camerino Corso di Laurea in Informatica (tecnologie informatiche) III periodo didattico Docente: Emanuela Merelli Email:emanuela.merelli@unicam.it Lezione 2 Teoria

Dettagli

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi.

Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. E. Calabrese: Fondamenti di Informatica Problemi-1 Il sapere tende oggi a caratterizzarsi non più come un insieme di contenuti ma come un insieme di metodi e di strategie per risolvere problemi. L'informatica

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

ALGEBRA DELLE PROPOSIZIONI

ALGEBRA DELLE PROPOSIZIONI Università di Salerno Fondamenti di Informatica Corso di Laurea Ingegneria Corso B Docente: Ing. Giovanni Secondulfo Anno Accademico 2010-2011 ALGEBRA DELLE PROPOSIZIONI Fondamenti di Informatica Algebra

Dettagli

Matematica generale CTF

Matematica generale CTF Successioni numeriche 19 agosto 2015 Definizione di successione Monotonìa e limitatezza Forme indeterminate Successioni infinitesime Comportamento asintotico Criterio del rapporto per le successioni Definizione

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

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

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Alberto Carraro 30 novembre DAIS, Universitá Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Funzioni Turing-calcolabili Finora abbiamo

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile Problemi connessi all utilizzo di un numero di bit limitato Abbiamo visto quali sono i vantaggi dell utilizzo della rappresentazione in complemento alla base: corrispondenza biunivoca fra rappresentazione

Dettagli

Tipologie di macchine di Turing

Tipologie di macchine di Turing Tipologie di macchine di Turing - Macchina di Turing standard - Macchina di Turing con un nastro illimitato in una sola direzione - Macchina di Turing multinastro - Macchina di Turing non deterministica

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Dettagli

STUDIO DI UNA FUNZIONE

STUDIO DI UNA FUNZIONE STUDIO DI UNA FUNZIONE OBIETTIVO: Data l equazione Y = f(x) di una funzione a variabili reali (X R e Y R), studiare l andamento del suo grafico. PROCEDIMENTO 1. STUDIO DEL DOMINIO (CAMPO DI ESISTENZA)

Dettagli

Dispense di Informatica per l ITG Valadier

Dispense di Informatica per l ITG Valadier La notazione binaria Dispense di Informatica per l ITG Valadier Le informazioni dentro il computer All interno di un calcolatore tutte le informazioni sono memorizzate sottoforma di lunghe sequenze di

Dettagli

Origini e caratteristiche dei calcolatori elettronici

Origini e caratteristiche dei calcolatori elettronici Origini e caratteristiche dei calcolatori elettronici Lunedì, 09 ottobre 2006 Supercomputer, mainframe 1 Server, workstation, desktop, notebook, palmare Un po di storia 1642 Biagio Pascal 1671 Leibniz

Dettagli

Raccomandazione del Parlamento europeo 18/12/2006 CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE. Operare con i numeri

Raccomandazione del Parlamento europeo 18/12/2006 CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE. Operare con i numeri COMPETENZA CHIAVE MATEMATICA Fonte di legittimazione Raccomandazione del Parlamento europeo 18/12/2006 CLASSE PRIMA COMPETENZE ABILITÀ CONOSCENZE L alunno utilizza il calcolo scritto e mentale con i numeri

Dettagli

Cos è un Calcolatore?

Cos è un Calcolatore? Cos è un Calcolatore? Definizione A computer is a machine that manipulates data according to a (well-ordered) collection of instructions. 24/105 Riassumendo... Un problema è una qualsiasi situazione per

Dettagli

( x) ( x) 0. Equazioni irrazionali

( x) ( x) 0. Equazioni irrazionali Equazioni irrazionali Definizione: si definisce equazione irrazionale un equazione in cui compaiono uno o più radicali contenenti l incognita. Esempio 7 Ricordiamo quanto visto sulle condizioni di esistenza

Dettagli

I sistemi di numerazione

I sistemi di numerazione I sistemi di numerazione 01-INFORMAZIONE E SUA RAPPRESENTAZIONE Sia dato un insieme finito di caratteri distinti, che chiameremo alfabeto. Utilizzando anche ripetutamente caratteri di un alfabeto, si possono

Dettagli

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26 Indice L attività di recupero 6 Funzioni Teoria in sintesi 0 Obiettivo Ricerca del dominio e del codominio di funzioni note Obiettivo Ricerca del dominio di funzioni algebriche; scrittura del dominio Obiettivo

Dettagli

II.f. Altre attività sull euro

II.f. Altre attività sull euro Altre attività sull euro II.f È consigliabile costruire modelli in carta o cartoncino di monete e banconote, e farli usare ai bambini in varie attività di classe fin dal primo o al più dal secondo anno.

Dettagli

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti 4. Insiemi numerici 4.1 Insiemi numerici Insieme dei numeri naturali = {0,1,,3,,} Insieme dei numeri interi relativi = {..., 3,, 1,0, + 1, +, + 3, } Insieme dei numeri razionali n 1 1 1 1 = : n, m \{0}

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

Capitolo 25: Lo scambio nel mercato delle assicurazioni

Capitolo 25: Lo scambio nel mercato delle assicurazioni Capitolo 25: Lo scambio nel mercato delle assicurazioni 25.1: Introduzione In questo capitolo la teoria economica discussa nei capitoli 23 e 24 viene applicata all analisi dello scambio del rischio nel

Dettagli

Descrizione di un algoritmo

Descrizione di un algoritmo Descrizione di un algoritmo Un algoritmo descrive due tipi fondamentali di oper: calcoli ottenibili tramite le oper primitive su tipi di dato (valutazione di espressioni) che consistono nella modifica

Dettagli

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it

Automazione Industriale (scheduling+mms) scheduling+mms. adacher@dia.uniroma3.it Automazione Industriale (scheduling+mms) scheduling+mms adacher@dia.uniroma3.it Introduzione Sistemi e Modelli Lo studio e l analisi di sistemi tramite una rappresentazione astratta o una sua formalizzazione

Dettagli

Gli algoritmi: definizioni e proprietà

Gli algoritmi: definizioni e proprietà Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Gli algoritmi: definizioni e proprietà La presente dispensa e da

Dettagli

La macchina universale

La macchina universale La macchina universale Una immediata conseguenza della dimostrazione è la seguente Corollario il linguaggio L H = {M (w) M rappresenta una macchina di Turing che si ferma con input w} sull alfabeto {0,1}*

Dettagli

Mete e coerenze formative. Dalla scuola dell infanzia al biennio della scuola secondaria di II grado

Mete e coerenze formative. Dalla scuola dell infanzia al biennio della scuola secondaria di II grado Mete e coerenze formative Dalla scuola dell infanzia al biennio della scuola secondaria di II grado Area disciplinare: Area Matematica Finalità Educativa Acquisire gli alfabeti di base della cultura Disciplina

Dettagli

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria).

Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Politecnico di Milano. Facoltà di Ingegneria Industriale. Corso di Analisi e Geometria 2. Sezione D-G. (Docente: Federico Lastaria). Aprile 20 Indice Serie numeriche. Serie convergenti, divergenti, indeterminate.....................

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Fondamenti di Informatica per Meccanici Energetici - Biomedici 1 Sistemi di Numerazione Sistemi di Numerazione I sistemi di numerazione sono abitualmente posizionali. Gli elementi costitutivi di un sistema

Dettagli

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Testi di Esercizi e Quesiti 1

Testi di Esercizi e Quesiti 1 Architettura degli Elaboratori, 2009-2010 Testi di Esercizi e Quesiti 1 1. Una rete logica ha quattro variabili booleane di ingresso a 0, a 1, b 0, b 1 e due variabili booleane di uscita z 0, z 1. La specifica

Dettagli

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

Rappresentazione dei numeri in un calcolatore

Rappresentazione dei numeri in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri in un calcolatore Lezione 2 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione dei numeri

Dettagli

SISTEMI DI NUMERAZIONE E CODICI

SISTEMI DI NUMERAZIONE E CODICI SISTEMI DI NUMERAZIONE E CODICI Il Sistema di Numerazione Decimale Il sistema decimale o sistema di numerazione a base dieci usa dieci cifre, dette cifre decimali, da O a 9. Il sistema decimale è un sistema

Dettagli

1 Serie di Taylor di una funzione

1 Serie di Taylor di una funzione Analisi Matematica 2 CORSO DI STUDI IN SMID CORSO DI ANALISI MATEMATICA 2 CAPITOLO 7 SERIE E POLINOMI DI TAYLOR Serie di Taylor di una funzione. Definizione di serie di Taylor Sia f(x) una funzione definita

Dettagli

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Architettura del Calcolatore Macchina di von Neumann Il calcolatore moderno è basato su un architettura

Dettagli

Le funzioni continue. A. Pisani Liceo Classico Dante Alighieri A.S. 2002-03. A. Pisani, appunti di Matematica 1

Le funzioni continue. A. Pisani Liceo Classico Dante Alighieri A.S. 2002-03. A. Pisani, appunti di Matematica 1 Le funzioni continue A. Pisani Liceo Classico Dante Alighieri A.S. -3 A. Pisani, appunti di Matematica 1 Nota bene Questi appunti sono da intendere come guida allo studio e come riassunto di quanto illustrato

Dettagli

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale Radicali 1. Radice n-esima Terminologia Il simbolo è detto radicale. Il numero è detto radicando. Il numero è detto indice del radicale. Il numero è detto coefficiente del radicale. Definizione Sia un

Dettagli

Capitolo 7: Teoria generale della calcolabilitá

Capitolo 7: Teoria generale della calcolabilitá Capitolo 7: Teoria generale della calcolabilitá 1 Differenti nozioni di calcolabilitá (che seguono da differenti modelli di calcolo) portano a definire la stessa classe di funzioni. Le tecniche di simulazione

Dettagli

Fondamenti dei linguaggi di programmazione

Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di programmazione Aniello Murano Università degli Studi di Napoli Federico II 1 Riassunto delle lezioni precedenti Prima Lezione: Introduzione e motivazioni del corso; Sintassi

Dettagli

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere;

un nastro di carta prolungabile a piacere e suddiviso in celle vuote o contenenti al più un unico carattere; Algoritmi 3 3.5 Capacità di calcolo Il matematico inglese Alan Turing (1912-1954) descrisse nel 1936 un tipo di automi, oggi detti macchine di Turing, e fornì una della prime definizioni rigorose di esecuzione

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

Informatica. Rappresentazione dei numeri Numerazione binaria

Informatica. Rappresentazione dei numeri Numerazione binaria Informatica Rappresentazione dei numeri Numerazione binaria Sistemi di numerazione Non posizionali: numerazione romana Posizionali: viene associato un peso a ciascuna posizione all interno della rappresentazione

Dettagli

Nozione di algoritmo. Gabriella Trucco

Nozione di algoritmo. Gabriella Trucco Nozione di algoritmo Gabriella Trucco Programmazione Attività con cui si predispone l'elaboratore ad eseguire un particolare insieme di azioni su particolari informazioni (dati), allo scopo di risolvere

Dettagli

Informazione analogica e digitale

Informazione analogica e digitale L informazione L informazione si può: rappresentare elaborare gestire trasmettere reperire L informatica offre la possibilità di effettuare queste operazioni in modo automatico. Informazione analogica

Dettagli

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010

MATEMATICA DEL DISCRETO elementi di teoria dei grafi. anno acc. 2009/2010 elementi di teoria dei grafi anno acc. 2009/2010 Grafi semplici Un grafo semplice G è una coppia ordinata (V(G), L(G)), ove V(G) è un insieme finito e non vuoto di elementi detti vertici o nodi di G, mentre

Dettagli

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente. Algoritmo Formalmente, per algoritmo si intende una successione finita di passi o istruzioni che definiscono le operazioni da eseguire su dei dati (=istanza del problema): in generale un algoritmo è definito

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

CALCOLO COMBINATORIO

CALCOLO COMBINATORIO CALCOLO COMBINATORIO 1 Modi di formare gruppi di k oggetti presi da n dati 11 disposizioni semplici, permutazioni Dati n oggetti distinti a 1,, a n si chiamano disposizioni semplici di questi oggetti,

Dettagli

LA CONOSCENZA DEL MONDO SCUOLA DELL INFANZIA. OBIETTIVI DI APPRENDIMENTO 3 anni 4 anni 5 anni

LA CONOSCENZA DEL MONDO SCUOLA DELL INFANZIA. OBIETTIVI DI APPRENDIMENTO 3 anni 4 anni 5 anni SCUOLA DELL INFANZIA INDICATORI LA CONOSCENZA DEL MONDO OBIETTIVI DI APPRENDIMENTO 3 anni 4 anni 5 anni Riconoscere la quantità. Ordinare piccole quantità. Riconoscere la quantità. Operare e ordinare piccole

Dettagli

CURRICOLO DI MATEMATICA SCUOLA PRIMARIA MATEMATICA SEZIONE A : Traguardi formativi

CURRICOLO DI MATEMATICA SCUOLA PRIMARIA MATEMATICA SEZIONE A : Traguardi formativi CURRICOLO DI MATEMATICA SCUOLA PRIMARIA MATEMATICA SEZIONE A : Traguardi formativi FINE CLASSE TERZA SCUOLA PRIMARIA FINE SCUOLA PRIMARIA COMPETENZE SPECIFICHE ABILITÀ CONOSCENZE ABILITÀ CONOSCENZE Utilizzare

Dettagli

Corso di Calcolo Numerico

Corso di Calcolo Numerico Corso di Calcolo Numerico Dott.ssa M.C. De Bonis Università degli Studi della Basilicata, Potenza Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica Sistemi di Numerazione Sistema decimale La

Dettagli

Introduzione. Informatica B. Daniele Loiacono

Introduzione. Informatica B. Daniele Loiacono Introduzione Informatica B Perchè studiare l informatica? Perchè ha a che fare con quasi tutto quello con cui abbiamo a che fare ogni giorno Perché è uno strumento fondamentale per progettare l innovazione

Dettagli

Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011

Fondamenti di Informatica. Computabilità e Macchine di Turing. Prof. Franco Zambonelli Gennaio 2011 Fondamenti di Informatica Computabilità e Macchine di Turing Prof. Franco Zambonelli Gennaio 2011 Letture Consigliate: Roger Penrose, La Mente Nuova dell Imperatore, Sansoni Editrice. Martin Davis, Il

Dettagli

Lezione 9: Cambio di base

Lezione 9: Cambio di base Lezione 9: Cambio di base In questa lezione vogliamo affrontare uno degli argomenti piu ostici per lo studente e cioè il cambio di base all interno di uno spazio vettoriale, inoltre cercheremo di capire

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

I PROBLEMI ALGEBRICI

I PROBLEMI ALGEBRICI I PROBLEMI ALGEBRICI La risoluzione di problemi è una delle attività fondamentali della matematica. Una grande quantità di problemi è risolubile mediante un modello algebrico costituito da equazioni e

Dettagli

3 GRAFICI DI FUNZIONI

3 GRAFICI DI FUNZIONI 3 GRAFICI DI FUNZIONI Particolari sottoinsiemi di R che noi studieremo sono i grafici di funzioni. Il grafico di una funzione f (se non è specificato il dominio di definizione) è dato da {(x, y) : x dom

Dettagli

Logica e codifica binaria dell informazione

Logica e codifica binaria dell informazione Politecnico di Milano Corsi di Laurea in Ingegneria Matematica e Ingegneria Fisica Dipartimento di Elettronica ed Informazione Logica e codifica binaria dell informazione Anno Accademico 2002 2003 L. Muttoni

Dettagli

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta Anche se spesso si afferma che il sistema binario, o in base 2, fu inventato in

Dettagli

Anno 3. Funzioni: dominio, codominio e campo di esistenza

Anno 3. Funzioni: dominio, codominio e campo di esistenza Anno 3 Funzioni: dominio, codominio e campo di esistenza 1 Introduzione In questa lezione parleremo delle funzioni. Ne daremo una definizione e impareremo a studiarne il dominio in relazione alle diverse

Dettagli

la scienza della rappresentazione e della elaborazione dell informazione

la scienza della rappresentazione e della elaborazione dell informazione Sistema binario Sommario informatica rappresentare informazioni la differenza Analogico/Digitale i sistemi di numerazione posizionali il sistema binario Informatica Definizione la scienza della rappresentazione

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Università Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi.

Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. PROGETTO SeT Il ciclo dell informazione Alla ricerca dell algoritmo. Scoprire e formalizzare algoritmi. Scuola media Istituto comprensivo di Fagagna (Udine) Insegnanti referenti: Guerra Annalja, Gianquinto

Dettagli

Le parole dell informatica: modello di calcolo, complessità e trattabilità

Le parole dell informatica: modello di calcolo, complessità e trattabilità Le parole dell informatica: modello di calcolo, complessità e trattabilità Angelo Montanari Dipartimento di Matematica e Informatica Università degli Studi di Udine Ciclo di seminari su un Vocabolario

Dettagli

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1 I CODICI 1 IL CODICE BCD 1 Somma in BCD 2 Sottrazione BCD 5 IL CODICE ECCESSO 3 20 La trasmissione delle informazioni Quarta Parte I codici Il codice BCD

Dettagli

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X.

Algebra Di Boole. Definiamo ora che esiste un segnale avente valore opposto di quello assunto dalla variabile X. Algebra Di Boole L algebra di Boole è un ramo della matematica basato sul calcolo logico a due valori di verità (vero, falso). Con alcune leggi particolari consente di operare su proposizioni allo stesso

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Abbiamo informazioni (numeri, caratteri, immagini, suoni, video... ) che vogliamo rappresentare (e poter elaborare) in un calcolatore. Per motivi tecnologici un calcolatore

Dettagli

Fondamenti di Informatica. Allievi Automatici A.A. 2014-15 Nozioni di Base

Fondamenti di Informatica. Allievi Automatici A.A. 2014-15 Nozioni di Base Fondamenti di Informatica Allievi Automatici A.A. 2014-15 Nozioni di Base Perché studiare informatica? Perché l informatica è uno dei maggiori settori industriali, e ha importanza strategica Perché, oltre

Dettagli

CPU. Maurizio Palesi

CPU. Maurizio Palesi CPU Central Processing Unit 1 Organizzazione Tipica CPU Dispositivi di I/O Unità di controllo Unità aritmetico logica (ALU) Terminale Stampante Registri CPU Memoria centrale Unità disco Bus 2 L'Esecutore

Dettagli

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO

ISTITUTO COMPRENSIVO MONTEGROTTO TERME SCUOLA PRIMARIA DISCIPLINA: MATEMATICA - CLASSE PRIMA OBIETTIVI DI APPRENDIMENTO PRIMA DELLA DISCIPLINA: MATEMATICA - CLASSE PRIMA L alunno si muove con sicurezza nel calcolo scritto e mentale con i numeri naturali. Legge e comprende testi che coinvolgono aspetti logici e matematici.

Dettagli

Errori più comuni. nelle prove scritte

Errori più comuni. nelle prove scritte Errori più comuni nelle prove scritte Gli errori più frequenti, e reiterati da chi sostiene diverse prove, sono innanzi tutto meta-errori, cioè errori che non riguardano tanto l applicazione delle tecniche,

Dettagli

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO SISTEMI DI NUMERAZIONE DECIMALE E BINARIO Il sistema di numerazione decimale (o base dieci) possiede dieci possibili valori (0, 1, 2, 3, 4, 5, 6, 7, 8 o 9) utili a rappresentare i numeri. Le cifre possiedono

Dettagli