Capitolo 6: Modelli di calcolo per linguaggi imperativi e funzionali
|
|
- Flavio Campo
- 7 anni fa
- Visualizzazioni
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 1 Modelli imperativi: le RAM (Random Access Machine) I modelli di calcolo imperativi sono direttamente collegati al modello Von Neumann,
DettagliPARTE 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
DettagliPARTE 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
DettagliPARTE 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
DettagliInformatica 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
DettagliMacchine 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
DettagliFondamenti dell informatica
Fondamenti dell informatica Macchine a registri Rosario Culmone rosario.culmone@unicam.it 9/4/2008 UNICAM - p. 1/24 Modello di calcolo basato sui calcolatori Le macchine a registri (RAM: Random Access
DettagliLa tesi di Church-Turing
ITLCC 2006/11/12 21:06 page 79 #3 Capitolo 5 La tesi di Church-Turing SOMMARIO Sebbene il concetto di algoritmo abbia avuto una lunga storia nel campo della matematica, il concetto formale di algoritmo
DettagliElaborazione 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
DettagliProblemi, algoritmi, calcolatore
Problemi, algoritmi, calcolatore Informatica e Programmazione Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin Problemi, algoritmi, calcolatori Introduzione
DettagliIstruzioni 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
DettagliLinguaggi di programmazione - Principi e paradigmi 2/ed Maurizio Gabbrielli, Simone Martini Copyright The McGraw-Hill Companies srl
Approfondimento 2.1 Non è questo il testo dove trattare esaurientemente queste tecniche semantiche. Ci accontenteremo di dare un semplice esempio delle tecniche basate sui sistemi di transizione per dare
DettagliIl concetto di calcolatore e di algoritmo
Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica
DettagliMacchine 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
DettagliArchitettura 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
DettagliArchitettura 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
DettagliLe 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):
DettagliNote 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
DettagliCapitolo 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á
DettagliIstruzioni, 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
DettagliLinguaggio 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
DettagliIntroduzione 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
DettagliStruttura del calcolatore
Mondo esterno Dati di ingresso Calcolatore Dati di uscita Mondo esterno Il calcolatore elabora dei dati di ingresso per ottenere dati in uscita In linea di principio, ma non solo, il compito svolto da
DettagliAlgoritmi, 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
DettagliCorso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 2 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 09 Marzo 2010 Controlli automatici
DettagliLa 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
DettagliCapitolo 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
DettagliELABORAZIONE 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
DettagliProblema: 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
DettagliDiagramma 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
Dettagli401 PREDICATI RICORSIVI PRIMITIVI
401 PREDICATI RICORSIVI PRIMITIVI Corso di Informatica Teorica - modulo 2 Prof. Settimo Termini 1 Breve richiamo Un predicato su un insieme S è una funzione totale P su S tale che a S si ha: P(a) = VERO
DettagliMacchine 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,
DettagliSTRUTTURA 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
DettagliPrincipio 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
DettagliFondamenti 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
DettagliLINGUAGGIO 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
DettagliLINGUAGGI 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
DettagliLa 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
DettagliCosa 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
DettagliAlgoritmi, 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
DettagliEsercizi 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
DettagliFondamenti 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
DettagliIl 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
DettagliLinguaggio 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
DettagliMacchine 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
DettagliComponenti 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
DettagliTempo 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
DettagliProgetto 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
DettagliInformatica 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
DettagliPROBLEMI 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
DettagliComponenti 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
DettagliMatlab. 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
DettagliDall 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
DettagliLinguaggi, 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
DettagliL 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
DettagliIL 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
DettagliFondamenti 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
DettagliLaboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra
DettagliNote del corso di Calcolabilità e Linguaggi Formali - Lezione 8
Note del corso di Calcolabilità e Linguaggi Formali - Lezione 8 Alberto Carraro DAIS, Università Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Insiemi e predicati ricorsivi e ricorsivamente enumerabili
DettagliMacchina 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
DettagliRappresentazione 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
DettagliSommario 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
DettagliDefinizione 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
DettagliIterazione (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
DettagliElementi 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
DettagliMacchine 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
DettagliTeoria della Calcolabilità!
Teoria della Calcolabilità!! Si occupa delle questioni fondamentali circa la potenza e le limitazioni dei sistemi di calcolo.!! L'origine risale alla prima metà del ventesimo secolo, quando i logici matematici
DettagliArchitettura 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
DettagliComponenti 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
DettagliLA 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
DettagliFondamenti 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
DettagliMa 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?
DettagliMarta 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
DettagliParte 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
DettagliSommario 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
DettagliArchitettura 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
DettagliRappresentazione 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
DettagliTABELLA OPERATORI ARITMETICI
ARITMETICA E RICORSIONE Non esiste, in logica, alcun meccanismo per la valutazione di funzioni, operazione fondamentale in un linguaggio di programmazione I numeri interi possono essere rappresentati come
DettagliLa 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
DettagliProgrammazione 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
DettagliIl 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
DettagliArchitettura 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
DettagliFondamenti 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
DettagliAlgoritmi 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
DettagliDAGLI 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
DettagliFondamenti d Informatica: Linguaggio While. Barbara Re, Phd
Fondamenti d Informatica: Linguaggio While Barbara Re, Phd Il linguaggio WHILE } La computabilità come supporto ai moderni linguaggi di programmazione } Si può generalizzare rispetto ad una vasta famiglia
DettagliArchitettura 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
DettagliLinguaggi 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
DettagliRichiami 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
DettagliLez. 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
DettagliL 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
DettagliConcetti 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
DettagliProgramma 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
DettagliAlgoritmi, 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)
DettagliLezione 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,
DettagliSistemi 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
DettagliProgrammazione 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
DettagliCapitolo 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!
DettagliScaletta. 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
DettagliAppunti 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