Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali"

Transcript

1 Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali 1

2 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann, e caratterizzano il linguaggio macchina, i linguaggi assemblativi e gran parte dei linguaggi di programmazione ad alto livello dei calcolatori reali. Nel modello di calcolo imperativo un algoritmo é descritto tramite un programma (una sequenza finita di istruzioni), che agisce sui dati contenuti nella memoria (un insieme finito di celle). Il calcolo é realizzato da una macchina che esegue sequenzialmente le istruzioni, modificando il contenuto della memoria. Tipiche istruzioni sono la lettura dei dati, il trasferimento, le operazioni aritmeticho-logiche elementari. 2

3 In questo modello é fondamentale il concetto di stato, cioé il contenuto della memoria in un determinato istante. L esecuzione di una istruzione comporta il passaggio da uno stato al successivo, e l intera computazione si rappresenta attraverso una sequenza di stati. La memoria di una RAM consiste in un numero finito di registri, ognuno dei quali contiene un intero grande a piacere, accessibili attraverso il loro numero d ordine. L accumulatore contiene, durante la computazione, uno degli operandi su cui agiscono le istruzioni della macchina. Il contatore delle istruzioni (CI) contiene il numero d ordine della prossima istruzione da eseguire. 3

4 Il nastro di ingresso (nastro di uscita) consiste in una sequenza di celle, ciascuna capace di contenere un intero grande a piacere. L unitá centrale esegue le istruzioni del linguaggio che governa la macchina. Il programma per RAM consiste in un insieme di istruzioni, che agiscono su operandi contenuti nei registri, con le seguenti convenzioni: 3 indica il contenuto del registro 3. (3) indica il contenuto del registro indirizzato dal registro 3 (indirizzamento indiretto). 3 indica che l operando é il numero 3. 4

5 <programma> ::= <istruzione> {<istruzione>} <istruzione> ::= LOAD [ ]<operando> (<operando>) STORE <operando> (<operando>) ADD [ ]<operando> (<operando>) SUB [ ]<operando> (<operando>) MULT [ ]<operando> (<operando>) DIV [ ]<operando> (<operando>) READ <operando> (<operando>) WRITE [ ]<operando> (<operando>) JUMP <etichetta> JGTZ <etichetta> JZERO <etichetta> HALT <operando> ::= <intero> <etichetta> ::= <intero> 5

6 Le istruzioni di trasferimento (LOAD e STORE) trasferiscono il contenuto di un registro nell accumulatore, e viceversa. Le istruzioni aritmetiche (ADD, SUB, MULT, DIV) eseguono le operazioni tra il contenuto dell accumulatore e quello di un registro. Le istruzioni sono eseguite sequenzialmente tranne nei casi in cui si presenti una instruzione di controllo (HALT o salto). Le istruzioni di salto sono salti incondizionati (JUMP) o condizionati dal contenuto dell accumulatore (JGTZ, JZERO); l operando di una istruzione di salto é il numero d ordine dell istruzione alla quale si effettua il salto. 6

7 Le istruzioni di I/O (READ e WRITE) leggono un numero intero dal nastro di input e lo trasferiscono in un registro o scrivono il contenuto di un registro sul nastro di uscita, rispettivamente. Definizione formale di alcune istruzioni: indichiamo con R[i] il contenuto del registro i-esimo, con R[0] il contenuto dell accumulatore, con CI il contenuto del contatore delle istruzioni e con n un intero non negativo. LOAD n ADD(n) R[0] := n CI := CI + 1 R[0] := R[0] + R[R[n]] CI := CI + 1 JZEROn if R[0] = 0 then CI := n else CI := CI + 1

8 Che funzione é calcolata dal seguente programma? READ 1 READ 2 LOAD 1 STORE 3 5 LOAD 2 JZERO 14 LOAD 1 MULT 3 STORE 3 LOAD 2 SUB 1 STORE 2 JUMP 5 14 WRITE 3 HALT 7

9 Esercizio: definire il programma che calcola le funzioni somma di tre numeri, sottrazione cut-off, resto, fattoriale. Determinare (vedi paragrafo successivo) il costo di esecuzione dei programmi, con i due modelli di costo. 8

10 Modelli di costo per i programmi RAM: un metodo semplice Come si valuta il costo di esecuzione di un programma RAM? Nel modello a costi uniformi, ogni istruzione ha un costo unitario, quindi basta contare quante volte le istruzioni sono eseguite (in funzione dell input del programma). Nell esempio precedente, ci sono tre parti: lettura dell input e inizializzazione (costo 4) esecuzione del ciclo (costo 9y+2) terminazione (costo 2). In totale, il costo di computazione é 9y + 8 O(y). 9

11 Due ipotesi troppo generali nel modello a costi uniformi: 1. il costo di esecuzione é indipendente dalla lunghezza degli operandi; 2. l accesso a un registro ha costo unitario a prescindere dal numero di registri accessibili. Modelli di costo: un metodo piú raffinato Realisticamente, il costo di esecuzione delle istruzioni deve dipendere dalla lunghezza degli operandi. Se si opera su un intero n (contenuto in un registro), si paga un costo dell ordine di log n. Inoltre, il costo di accesso alla memoria deve dipendere dalla quantitá di memoria indirizzabile. Sia l(n) = if n = 0 then 1 else log 2 n + 1. Nel modello a costi logaritmici, elaborare un operando n ha costo l(n); accedere a un registro i ha costo l(i). 10

12 I costi delle istruzioni sono in tabella: LOAD op c(op) STORE op c (op) + l(r[0]) ADD op c(op) + l(r[0]) SUB op c(op) + l(r[0]) MULT op c(op) + l(r[0]) DIV op c(op) + l(r[0]) READ op c (op) + l(input) WRITE op c(op) JGTZ et l(r[0]) JZERO et l(r[0]) JUMP et 1 HALT 1 dove c(op) e c (op) dipendono dall operando op; infatti: 11

13 c( n) = l(n), c(i) = l(i) + l(r[i]), c((i)) = l(i) + l(r[i]) + l(r[r[i]]); c (i) = l(i), c ((i)) = l(i) + l(r[i]). Valutiamo il programma dell esempio (ultima colonna=numero di volte che l istruzione é eseguita): 12

14 READ 1 l(1) + l(x) O(log x) 1 READ 2 l(2) + l(y) O(log y) 1 LOAD 1 l(1) O(1) 1 STORE 3 l(3) + l(1) O(1) 1 5 LOAD 2 l(2) + l(y) O(log y) y + 1 JZERO 14 l(y) O(log y) y + 1 LOAD 1 l(1) + l(x) O(log x) y MULT 3 l(3) + l(x) + l(x y ) O(log x + y log x) y STORE 3 l(3) + l(x y ) O(y log x) y LOAD 2 l(2) + l(y) O(log y) y SUB 1 l(1) + l(y) O(log y) y STORE 2 l(2) + l(y) O(log y) y JUMP 5 1 O(1) y 14 WRITE 3 l(3) + l(x y ) O(y log x) 1 HALT 1 O(1) 1 In totale, O(y 2 log x) é il costo del programma. 13

15 Macchine a registri e Macchine di Turing Le macchine a registri possono calcolare funzioni numeriche? Definizione 1 Una funzione f : N n N é calcolabile con macchine a registri se esiste un programma P per RAM tale che, se f(x 1,..., x n ) = y allora il programma, inizializzato con x 1,..., x n sul nastro di input, termina con y sul nastro di output; se f(x 1,..., x n ) non é definita allora il prgramma non termina. Quali sono le funzioni calcolabili da una macchina a registri, e che rapporto c é con le funzioni calcolabili da una macchina di Turing?? 14

16 Teorema 2 Data un macchina di Turing M con nastro semiinfinito e con alfabeto di nastro Γ = {0, 1}, esiste una macchina a registri con programma P tale che se M realizza la transizione dalla configurazione iniziale q 0 x alla configurazione finale q F y e se la RAM é inizializzata con la stringa x nei registri 2,..., x +1, alla fine della computazione la RAM avrá nei registri 2,..., y +1 la stringa y. Se la macchina M opera in tempo T, allora la RAM opera in tempo O(T log T ) (nel modello a costi logaritmici). Quindi le RAM possono calcolare (via simulazione) tutte le funzioni calcolabili secondo Turing. 15

17 Teorema 3 Data una macchina a registri con programma P che calcola la funzione f, esiste una macchina di Turing M tale che se f(x 1,..., x n ) = y e sul nastro di input sono memorizzati in binario gli interi x 1,..., x n, la macchina M termina con la raappresentazione binaria di y sul nastro di output; se f(x 1,..., x n ) non é definita la macchina M non termina in una configurazione finale. Se la RAM ha costo T (nel modello a costi logaritmici), allora M opera in tempo O(T 2 ). Quindi le macchine di Turing possono simulare il comportamento delle RAM. 16

18 I due teoremi dimostrano che ogni funzioni calcolabile secondo Turing é anche calcolabile tramite macchine a registri, e viceversa (Church-Turing). Un problema é ritenuto trattabile se é risolubile in tempo polinomiale. Abbiamo visto che M DT e RAM a costi logaritmici si possono reciprocamente simulare con costi polinomiali. Allora i due modelli sono interscambiabili per determinare se un problema é trattabile. Cosa accade se usiamo RAM a costi uniformi? 17

19 Macchine a registri e linguaggi imperativi Il liguaggio delle macchine a registri é basato su istruzioni fondamentali in qualsiasi linguaggio imperativo. I risultati validi per le RAM si estendono a macchine astratte programmate con linguaggi piú complessi. Ad esempio, le istruzioni del linguaggio Assembler INTEL (con istruzioni a due indirizzi) sono del tipo: trasferimento tra registri e memoria o tra registri di interfaccia e memoria (MOV <locazione><registro>, IN <porta><registro>,...); aritmetiche (ADD <locazione><registro>, SUB <locazione><registro logiche (AND <locazione><registro>) o di rotazione (ADL <registro>); di controllo; 18

20 Possiamo definire le funzioni calcolabili con questo linguaggio, e sembra chiaro che esse sono tutte calcolabili con macchine a registri. Se consideriamo linguaggi ad alto livello (Pascal, Fortran,...) possiamo definire le funzioni da essi calcolabili; i compilatori garantiscono che possiamo tradurre un programma ad alto livello in assembler. Quindi tutte le funzioni calcolabili ad alto livello lo sono anche con le RAM (Church-Turing). 19

21 Macchina a registri elementare (M REL) La memoria di una MREL consiste in un numero finito di registri, ognuno dei quali contiene un intero grande a piacere, accessibili attraverso il loro numero d ordine. Il contatore delle istruzioni (CI) contiene il numero d ordine della prossima istruzione da eseguire. La macchina non prevede accumulatore e nastri di ingresso e uscita. 20

22 I valori degli argomenti della funzione da calcolare x 1,..., x n sono forniti nei registri R 1,..., R n. Il valore della funzione calcolato da programma f(x 1,..., x n ) é in R 1. Tutti gli altri registri contengono il valore 0 all inizio dell esecuzione del programma. Il programma per RAM consiste in un insieme di istruzioni, che agiscono su operandi contenuti nei registri; tre soli tipi: incremento, decremento, salto condizionato. 21

23 <programma> <istruzione> <etichetta> ::= <istruzione> {<istruzione>} ::= R<intero positivo>:= R <intero positivo>+1 ::= R<intero positivo>:= R <intero positivo> 1 ::= IF R<intero positivo>= 0 THEN GOTO <etiche ::=< intero> Esercizio: definire la MREL per il calcolo della somma di due interi. 22

24 Funzioni ricorsive Le macchine di Turing e le macchine a registri caratterizzano le funzioni calcolabili. Una caratterizzazione matematica delle stesse funzioni é rappresentata dalle funzioni ricorsive. Lambda-notation: permette di specificare l insieme delle variabili su cui la funzione é definita. Una funzione di n variabili x 1,..., x n, associata ad un espressione algebrica f(x 1,..., x n ) in forma chiusa, é descritta come λx 1 λx 2... λx n.f(x 1,..., x n ). Ad esempio, la corrispondenza che ad ogni coppia di valori associa la somma si indica con λx 1 λx 2.x 1 + x 2. 23

25 F = {f f : N n N, n 0} é l insieme di tutte le funzioni intere. f (n) indica che la funzione f ha n argomenti. n = 0 = f é una costante. In F individuiamo la classe di funzioni che corrispondono al concetto di calcolabile, nel modo seguente: definiamo funzioni di base ovviamente calcolabili e degli operatori (dei costrutti) con i quali definire nuove funzioni a partire da quelle giá disponibili. Definizione 4 Le funzioni base sono le seguenti: 1. 0 (n) = λx 1,... λx n.0, con n 0 (funzioni zero); 2. S = λx.x + 1 (funzione successore); 3. U (n) i = λx 1,... λx n.x i (funzioni selettrici o identitá). 24

26 Definizione 5 La classe delle funzioni ricorsive primitive P é la piú piccola classe che contiene le funzioni base e inoltre: 1. se le funzioni h (m), g (n) 1,..., g(n) m sono ricorsive primitive allora anche la funzione f (n) definita per composizione: f(x 1,..., x n ) = h(g 1 (x 1,..., x n ),..., g n (x 1,..., x n )) é ricorsiva primitiva; 2. se le funzioni h (n+2), g (n) sono ricorsive primitive allora anche la funzione f (n+1) definita per ricorsione primitiva: f(x 1,..., x n, 0) = g 1 (x 1,..., x n ), f(x 1,..., x n, y + 1) = h(x 1,..., x n, y, f(x 1,..., x n, y)) é ricorsiva primitiva. 25

27 Esempio 6 Le seguenti funzioni sono ricorsive primitive: incr2 = λxλy.x + 2. Tale funzione si esprime utilizzando le funzioni base e la composizione come incr2 = S(S(U 2 1 )). somma = λxλy.x + y. Tale funzione si esprime utilizzando la ricorsione primitiva come somma(x, 0) = x somma(x, y + 1) = somma(x, y) + 1. La funzione g coincide con la selettrice U1 1 ; la funzione h ha tre argomenti ed é λx 1 λx 2 λx 3.S(U3 3(x 1, x 2, x 3 )). 26

28 Esempio 7 Se p é ricorsiva primitiva con valori 0 e 1, e g e h sono ricorsive primitive, la funzione f(x) = é ricorsiva primitiva. se p(x) = 1 allora g(x) altrimenti h(x). λxλy.x y é ricorsiva primitiva. λx.x 1 é ricorsiva primitiva. λx.x! é ricorsiva primitiva. λx.2 x é ricorsiva primitiva. 27

29 La definizione di una funzione ricorsiva ha spesso una struttura piú semplice basata sul seguente schema: f(0) = c f(x + 1) = h(g(x), f(x)). dove le funzioni g e h sono ricorsive primitive, e c é una costante (questa asserzione é da dimostrare). Esistono funzioni definite ricorsivamente, ma che non rientrano nella classe P? Un esempio é la funzione di tre argomenti cosí definita: 28

30 f(x, y, 0) = x + y f(x, y, 1) = x y f(x, y, 0) = x y e, per n 2, f(x, y, n + 1) = 1 se y = 0, f(x, f(x,..., f(x, 0, n),..., n), n) altrimenti. }{{} oppure, in termini finiti: f(x, 0, 0) = x f(x, y + 1, 0) = f(x, y, 0) + 1 f(x, 0, 1) = 0 f(x, 0, n + 2) = 1 f(x, y + 1, n + 1) = f(x, f(x, y, n + 1), n). La funzione sopra definita (funzione di Ackermann), non é ricorsiva primitiva, pur essendo definita in termini ricorsivi. 29

31 Introduciamo un nuovo operatore per estendere la classe delle funzioni ricorsive primitive (e il concetto di calcolabilitá). Definizione 8 Data una funzione g (n+1), la funzione f (n) si dice definita mediante l operatore di minimalizzazione µ se f(x 1,..., x n ) assume come valore il minimo t tale che g(x 1,..., x n, t) = 0; se g(x 1,..., x n, t) 0 per tutti i valori di t, allora la funzione f(x 1,..., x n ) é indefinita. Indichiamo f con la notazione f = λx 1,..., λx n.µt(g(x 1,..., x n, t) = 0). 30

32 Definizione 9 La classe delle funzioni ricorsive (dette anche ricorsive generali o ricorsive parziali) R é la piú piccola classe che contiene le funzioni base, ed é chiusa rispetto a composizione, ricorsione primitiva e minimalizzazione. Esempio 10 La funzione λn. n é ricorsiva in quanto definibile come n = µt((n + 1) (t + 1) (t + 1) = 0) 31

33 Funzioni ricorsive e linguaggi imperativi Le funzioni ricorsive sono calcolabili con i modelli di calcolo giá visti. Ad esempio, appare banale dimostrare che il linguaggio C calcola le funzioni ricorsive e, quindi, le RAM calcolano le funzioni ricorsive. Viceversa, ogni funzione calcolata da una RAM é ricorsiva? Se questo é vero, le funzioni calcolabili con macchine a registri e i linguaggi di programmazione imperativi coincidono con le funzioni ricorsive. 32

34 P n = λx 1,..., λx n [2 x 1... p x n n ], dove p n é l n-esimo numero primo (p 1 = 2). K i = λz[ esponenente di p i in z]. M(t) = if t = 0 then 0 else max{n p n divide t}. Notazione: P n (x 1,..., x n ) x 1,..., x n ); K i (z) (z) i. 33

35 Teorema 11 Uno stato di una macchina a registri elementare con programma π, che utilizza m registri ed é costituito da l istruzioni, é rappresentato da un intero: s = i, r 1,..., r m dove i (0 i l) é il numro d ordine dell istruzione da eseguire, e r 1,..., r m sno gli interi contenuti nei registri. Teorema 12 Sia s 1,..., s t una computazione finita eseguita da una macchina a registri elementare con programma π. Tale computazione puó essere codificata tramite un intero c = 2 s 1 3 s 2... p s t t. Teorema 13 Data una macchina a registri elementare con programma π, la funzione λx 1,... λx n.f(x 1,... x n ) calcolata da π é una funzione ricorsiva parziale. 34

36 Funzioni ricorsive e linguaggi funzionali La teoria delle funzioni ricorsive ha avuto un impatto notevole sulla definizione e lo sviluppo del paradigma di programmazione funzionale. I linguaggi funzionali permettono di definire funzioni senza far riferimento al modello di macchina che le calcola (come per le funzioni ricorsive). valutazione di una espressione, invece che esecuzione di una computazione. 35

37 Un semplice linguaggio funzionale (formalismo di McCarthy) X = {x 1, x 2,...} insieme di simboli di variabile; B = {b 1, b 2,...} insieme di simboli di funzione base; F = {F 1, F 2,...} insieme di simboli di variabile funzione; a : N + N aritá delle funzioni in B; A : N + N + aritá delle funzioni in F. 36

38 Definizione 14 Un termine su < X, B, F > é definito induttivamente come segue: 1. se x X allora x é un termine; 2. se b j B, con aritá a(j) = n 0, e t 1,..., t n sono termini, allora b(t 1,..., t n ) é un termine; 3. se F i F, con aritá A(i) = m > 0, e t 1,..., t n sono termini, allora F i (t 1,..., t n ) é un termine. 4. se la aritá di una funzione base b k () é 0, allora la funzione é detta costante, e viene rappresentata come b k. 37

39 Definizione 15 Dati tre insiemi X, B, F, uno schema di programma sulla terna < X, B, F > é costituito da una sequenza finita di coppie di termini del tipo F i (x 1,..., x n ) = t j dove F i F e t j é un generico termine su < X, B, F >, seguita da un temine del tipo F h (b 1,..., b m ), dove F h F e A(h) = m e b 1,..., b m sono costanti. sono termini, allora F i (t 1,..., t n ) é un termine. L interpretazione di uno schema di programma vede la sequenza di coppie come una sequenza di dichiarazioni di funzioni, e il termine contenente la costante b é la richiesta di determinare il valore di F h sugli argomenti b 1,..., b m. 38

40 Se un insieme di funzioni base é messo in corrispondenza con i simboli di B, allora otteniamo il linguaggio SLF, per la definizione di funzioni intere. B = N {S, P, if then else}. Teorema 16 Il linguaggio SLF consente la definizione di tutte le funzioni ricorsive. 39

Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali

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

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 3.1 MACCHINE A REGISTRI 1 (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

PARTE III MACCHINE A REGISTRI

PARTE III MACCHINE A REGISTRI PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson

Dettagli

Informatica Teorica. Macchine a registri

Informatica Teorica. Macchine a registri Informatica Teorica Macchine a registri 1 Macchine a registri RAM (Random Access Machine) astrazione ragionevole di un calcolatore nastro di ingresso nastro di uscita unità centrale in grado di eseguire

Dettagli

Macchine a registri RAM (Random Access Machines)

Macchine a registri RAM (Random Access Machines) Macchine a registri RAM (Random Access Machines) Introdotte da Shepherdson e Sturgis nel 1963 per sviluppare la teoria della calcolabilità con un modello astratto di un reale calcolatore (macchina di von

Dettagli

Fondamenti dell informatica

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

Dettagli

La tesi di Church-Turing

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

Dettagli

Elaborazione dell informazione

Elaborazione dell informazione Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione

Dettagli

Problemi, algoritmi, calcolatore

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

Dettagli

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni

Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da

Dettagli

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

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

Dettagli

Il concetto di calcolatore e di algoritmo

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

Dettagli

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD

Macchine RAM. API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD Macchine RAM API a.a. 2013/2014 Gennaio 27, 2014 Flavio Mutti, PhD 2 Macchina RAM 3 Esercizio Si consideri il linguaggio definito da: L = wcw R w a, b } 1. Codificare un programma RAM per il riconoscimento

Dettagli

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione

Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Linguaggio macchina e assembler (caso di studio: processore MIPS) slide a cura di Salvatore Orlando, Marta Simeoni, Andrea Torsello Architettura degli Elaboratori 1 1 Istruzioni

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Note aggiuntive al corso di Informatica Teorica a.a

Note aggiuntive al corso di Informatica Teorica a.a Note aggiuntive al corso di Informatica Teorica a.a. 2008-2009 Giorgio Gambosi 1 Equivalenza tra MT multinastro e MT ad un nastro Le macchine di Turing multinastro hanno lo stesso potere computazionale

Dettagli

Capitolo 8: Teoria della complessitá

Capitolo 8: Teoria della complessitá Capitolo 8: Teoria della complessitá 1 La Teoria della calcolabilitá considera aspetti qualitativi della soluzione di problemi. Distingue il calcolabile dal non calcolabile. La Teoria della complessitá

Dettagli

Istruzioni, algoritmi, linguaggi

Istruzioni, algoritmi, linguaggi Istruzioni, algoritmi, linguaggi 1 Algoritmo per il calcolo delle radici reali di un equazione di 2 o grado Data l equazione ax 2 +bx+c=0, quali sono i valori di x per cui l equazione è soddisfatta? 2

Dettagli

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche

Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche 3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

Struttura del calcolatore

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

Dettagli

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo Algoritmi, linguaggi e programmi Emilio Di Giacomo e Walter Didimo Risolvere i problemi Il calcolatore permette di risolvere molti problemi, ma sfortunatamente non tutti Il concetto di algoritmo consente

Dettagli

Corso di Linguaggi di Programmazione

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

Dettagli

La Macchina RAM Shepherdson e Sturgis (1963)

La Macchina RAM Shepherdson e Sturgis (1963) La Macchina RAM Shepherdson e Sturgis (963) Nastro di ingresso.......... PROGRAM COUNTER Nastro di uscita PROGRAMMA ACCUMULATORE UNITA' ARITMETICA............... 2 3 4 M E M O R I A Formato delle Istruzioni

Dettagli

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing

Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing Capitolo 5: Macchine di Turing e calcolabilitá secondo Turing 1 Macchina di Turing (MDT ) Un dispositivo che accede a un nastro (potenzialmente) illimitato diviso in celle contenenti ciascuna un simbolo

Dettagli

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) 1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

401 PREDICATI RICORSIVI PRIMITIVI

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

Dettagli

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29

Macchine di Turing. Francesco Paoli. Istituzioni di logica, Francesco Paoli (Istituzioni di logica, ) Macchine di Turing 1 / 29 Macchine di Turing Francesco Paoli Istituzioni di logica, 2016-17 Francesco Paoli (Istituzioni di logica, 2016-17) Macchine di Turing 1 / 29 Alan M. Turing (1912-1954) Francesco Paoli (Istituzioni di logica,

Dettagli

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER

STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER 1 STRUTTURA E LOGICA DI FUNZIONAMENTO DEL COMPUTER Un computer e una macchina che riceve in ingresso delle informazioni, le elabora secondo un determinato procedimento e produce dei risultati che vengono

Dettagli

Principio di composizione delle MT

Principio di composizione delle MT Principio di composizione delle MT La definizioni date fanno riferimento a situazioni in cui la macchina sia capace di risolvere problemi singoli. E possibile far sì che macchine progettate per problemi

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA

LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA LINGUAGGIO MACCHINA e ASSEMBLER Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA Nel computer non vengono memorizzati soltanto i dati da elaborare ma anche il programma

Dettagli

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo

Dettagli

La codifica digitale

La codifica digitale La codifica digitale Codifica digitale Il computer e il sistema binario Il computer elabora esclusivamente numeri. Ogni immagine, ogni suono, ogni informazione per essere compresa e rielaborata dal calcolatore

Dettagli

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo Algoritmi, linguaggi e programmi Emilio Di Giacomo e Walter Didimo Problemi e algoritmi Il calcolatore permette di risolvere in maniera automatica diversi problemi "di calcolo". Es: calcolo della media

Dettagli

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma

Dettagli

Fondamenti di Algoritmi

Fondamenti di Algoritmi Fondamenti di Algoritmi Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione roveri@elet.polimi.it Indice Algoritmi: Definizione Diagrammi di Flusso Esempi ed esercizi

Dettagli

Il linguaggio macchina

Il linguaggio macchina Università degli Studi di Palermo Facoltà di Ingegneria Il linguaggio macchina Edoardo Ardizzone & Ignazio Infantino Appunti per il corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Informatica

Dettagli

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS)

Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Linguaggio assembler e linguaggio macchina (caso di studio: processore MIPS) Salvatore Orlando Arch. Elab. - S. Orlando 1 Livelli di astrazione Scendendo di livello, diventiamo più concreti e scopriamo

Dettagli

Macchine di Turing: somma di due numeri

Macchine di Turing: somma di due numeri Informatica Teorica 2/2 M.Di Ianni Macchine di Turing: somma di due numeri Vogliamo definire una macchina di Turing che, presi in input due numeri n e m espressi in notazione binaria, calcola il valore

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Tempo e spazio di calcolo

Tempo e spazio di calcolo Tempo e spazio di calcolo Modelli di calcolo e metodologie di analisi F. Damiani - Alg. & Lab. 04/05 (da M. Zacchi - Alg. & Lab. 03/04) In quale modo stimiamo il tempo di calcolo? Possiamo considerare

Dettagli

Progetto e analisi di algoritmi

Progetto e analisi di algoritmi Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento

Dettagli

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza

Informatica teorica Lez. n 7 Macchine di Turing. Macchine di Turing. Prof. Giorgio Ausiello Università di Roma La Sapienza Macchine di Turing Argomenti della lezione Definizione della macchina di Turing Riconoscimento e accettazione di linguaggi Macchine a più nastri La macchina di Turing èun è automa che può leggere e scrivere

Dettagli

PROBLEMI ALGORITMI E PROGRAMMAZIONE

PROBLEMI ALGORITMI E PROGRAMMAZIONE PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

Matlab. Istruzioni condizionali, cicli for e cicli while.

Matlab. Istruzioni condizionali, cicli for e cicli while. Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

L AUTOMA ESECUTORE L AUTOMA ESECUTORE

L AUTOMA ESECUTORE L AUTOMA ESECUTORE L AUTOMA ESECUTORE Metodo Risolutivo (algoritmo) Un automa capace di ricevere dall esterno una descrizione dello algoritmo richiesto DATI Esecutore RISULTATI cioè capace di interpretare un linguaggio (linguaggio

Dettagli

IL TEOREMA DI BOEHM-JACOPINI

IL TEOREMA DI BOEHM-JACOPINI IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: Sequenza Diramazione Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Prima prova intermedia - 11 Novembre 2009 Si risolvano i seguenti esercizi. Il compitino prevede un punteggio massimo di 15/14-esimi, cui andranno sommati i punti ottenuti nel

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

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

Dettagli

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

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

Dettagli

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni.

Macchina RAM. Modelli di calcolo e metodologie di analisi. Linguaggio di una macchina RAM. Algoritmi e Strutture Dati. Istruzioni. Algoritmi e Strutture Dati Macchina RAM Nastro di ingresso Modelli di calcolo e metodologie di analisi Contatore istruzioni Programm a Accumulatore Unità centrale M[0] M[1] Nastro di uscita Basato su materiale

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

Sommario Codifica dei dati Macchina Astratta Definizioni Esempi

Sommario Codifica dei dati Macchina Astratta Definizioni Esempi Sommario Codifica dei dati Macchina Astratta Definizioni Esempi 1 2 Codifica dei dati È possibile introdurre la teoria della computabilità facendo riferimento ad algoritmi che elaborano numeri naturali

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Iterazione (introduzione)

Iterazione (introduzione) Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale

Dettagli

Elementi di Complessità Computazionale

Elementi di Complessità Computazionale Elementi di Complessità Computazionale Ultima modifica 23.06.2004 Il problema Esiste una misura oggettiva per valutare l'efficienza di un algoritmo? In che relazione sono gli input di un algoritmo con

Dettagli

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016 Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione

Dettagli

Teoria della Calcolabilità!

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

Dettagli

Architettura di una CPU

Architettura di una CPU Massimo VIOLANTE Politecnico di Torino Dipartimento di Automatica e Informatica Sommario Organizzazione di un processore Linguaggio macchina Modi di indirizzamento Tipi di istruzioni 2 M. Violante 1.1

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a.

Fondamenti di Informatica. Algoritmo. Algoritmo funzionale. Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. Fondamenti di Informatica Prof.ssa Enrica Gentile Informatica e Comunicazione Digitale a.a. 2011-2012 Algoritmo L algoritmo è una sequenza finita di istruzioni, mediante le quali un qualunque operatore

Dettagli

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione

Ma il programma in Fig. 8.2 del libro? Stampa hello, world, dato un input n se e solo se l equazione Problemi che i calcolatori non possono risolvere E importante sapere se un programma e corretto, cioe fa uello che ci aspettiamo. E facile vedere che il programma Ma il programma in Fig. 8.2 del libro?

Dettagli

Marta Capiluppi Dipartimento di Informatica Università di Verona

Marta Capiluppi Dipartimento di Informatica Università di Verona Marta Capiluppi marta.capiluppi@univr.it Dipartimento di Informatica Università di Verona I Dati Ogni variabile è caratterizzata da Nome Valori Tipo Numeri naturali o interi o reali (1, -2, 0.34) Caratteri

Dettagli

Parte I.5 Cenni alla computazione

Parte I.5 Cenni alla computazione Parte I.5 Cenni alla computazione Elisabetta Ronchieri Università di Ferrara Dipartimento di Economia e Management Insegnamento di Informatica Dicembre 14, 2015 Elisabetta Elisabetta Ronchieri I Concetti

Dettagli

Sommario FONDAMENTI DI INFORMATICA. Architettura di Von Neumann. Algoritmi e programmi ESERCITAZIONE PYTHON ARCHITETTURA DEI CALCOLATORI

Sommario FONDAMENTI DI INFORMATICA. Architettura di Von Neumann. Algoritmi e programmi ESERCITAZIONE PYTHON ARCHITETTURA DEI CALCOLATORI Università degli Studi di Cagliari Corsi di Laurea in Ingegneria Chimica e Ingegneria Meccanica FONDAMENTI DI INFORMATICA http://www.diee.unica.it/~marcialis/fi A.A. 016/017 Sommario Funzionamento del

Dettagli

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Architettura di Von Neumann. Architettura di Von Neumann. Architettura di Von Neumann INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Computer elaboratore di informazione riceve informazione in ingresso (input) elabora questa informazione restituisce informazione ottenuta elaborando

Dettagli

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica

Dettagli

TABELLA OPERATORI ARITMETICI

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

Dettagli

La principale modalità di calcolo è l applicazione di funzioni

La principale modalità di calcolo è l applicazione di funzioni 1 La principale modalità di calcolo è l applicazione di funzioni Nei linguaggi funzionali puri non esistono strutture di controllo predefinite per la realizzazione di cicli quali for, while, repeat Un

Dettagli

Programmazione strutturata

Programmazione strutturata Corso di Fondamenti di Informatica Corso di Laurea in Ingegneria Gestionale (L-Z) 3. (testo di riferimento: Bellini-Guidi) Ing. Michele Ruta 1di 29 Linguaggi di programmazione Un programma è un algoritmo

Dettagli

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio) Il Concetto Intuitivo di Calcolatore Elementi di Informatica e Programmazione Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Variabile di uscita Classe di domande

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Fondamenti di Informatica Programma dettagliato del corso e appunti integrativi del libro di testo consigliato Anno Accademico

Fondamenti di Informatica Programma dettagliato del corso e appunti integrativi del libro di testo consigliato Anno Accademico acoltà di ngegneria Università di irenze Corso di Laurea in ngegneria Meccanica ondamenti di nformatica Programma dettagliato del corso e appunti integrativi del libro di testo consigliato Anno Accademico

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio

Dettagli

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di

Dettagli

Fondamenti d Informatica: Linguaggio While. Barbara Re, Phd

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

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore Architettura di un calcolatore Corso di Informatica A Vito Perrone Indice La macchina di Von Neumann Memoria CPU Bus Interfacce Esempio L algoritmo Il programma Fasi di esecuzione di un istruzione 2 1

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni

Dettagli

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica.

Richiami di Matematica. 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Richiami di Matematica 1. Insiemi, relazioni, funzioni. 2. Cardinalitá degli insiemi infiniti e numerabilitá. 3. Notazione asintotica. Insiemi Definizioni di base Dato un insieme A: x A: elemento x appartenente

Dettagli

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

L AUTOMA ESECUTORE L AUTOMA ESECUTORE

L AUTOMA ESECUTORE L AUTOMA ESECUTORE L AUTOMA ESECUTORE DATI Esecutore Metodo Risolutivo (algoritmo) RISULTATI Un automa capace di ricevere dall esterno una descrizione dello algoritmo richiesto cioè capace di interpretare un linguaggio (linguaggio

Dettagli

Concetti di base sugli automi e sui linguaggi formali

Concetti di base sugli automi e sui linguaggi formali Concetti di base sugli automi e sui linguaggi formali Andrea Burattin 18 marzo 2005 Sommario Piccolo insieme di concetti sul funzionamento degli automi (a stati finiti, a pila,...), delle grammatiche libere

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli

Dettagli

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale Programmazione A.A. 2002-03 I Architettura dei Calcolatori ( Lezione V ) Componenti hardware e loro schema funzionale Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica

Dettagli

Capitolo 19. Ricorsione

Capitolo 19. Ricorsione Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!

Dettagli

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1 Scaletta Cenni di computabilità Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 23 27 novembre 2013

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo

Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 3 Modelli di calcolo Marco Liverani (liverani@mat.uniroma3.it)

Dettagli