Informatica Generale
Marzia Buscemi
buscemi@di.unipi.it
Ricevimento: Giovedì ore 16.00-18.00,
Dipartimento di Informatica, stanza 306-PS
o per posta elettronica
Pagina web del corso:
http://www.di.unipi.it/~buscemi/IG07.htm
(sommario delle lezioni in fondo alla pagina)
1
Circuiti logici
permettono l’elaborazione dei dati in un calcolatore
(esecuzione di operazioni, etc.)
realizzano elettronicamente il comportamento delle
funzioni dell’algebra booleana
sono di due tipi:
circuiti combinatori (output solo in funzione
dell’input, non hanno memoria del passato)
circuiti sequenziali (output in funzione dell’input
e dello stato precedente, hanno memoria del
passato)
2
Circuiti combinatori
Circuiti combinatori: a partire da un input producono un certo output.
Più precisamente:
Input:
X = x1,...,xn variabili
N=2n sequenze
I={I1,...,IN}
Output:
Y= y1,...,ym variabili
M=2m sequenze
O={O1,...,OM}
Un circuito combinatorio realizza una funzione h : I O
X
n
Es.: 0100...0 1010...1
n
m
m
Y
3
Circuiti sequenziali
L’output è determinato non solo dall’input ma anche dallo stato del
circuito (che dipende dagli input che si sono verificati negli istanti
precedenti):
Input:
X=x1,...,xn variabili
N=2n sequenze I={I1,...,IN}
Output:
Y=y1,...,ym variabili M=2m sequenze O={O1,...,OM}
Stato:
Z=z1,...,zl variabili
L=2l sequenze S={S1,...,SL}
Un circuito sequenziale realizza le funzioni:
f: I x S S
f(Ih,Sk)=Shk
g:IxSO
g(Ii,Sj)=Oij
nuovo stato
output
4
Circuiti sequenziali 2
1. Diagramma di stato
I1/O1
S1
I2/O1
I1/O2
I3/O3
S3
I3/O2
S2
I2/ O2
2. Tavola di flusso
I1
I2
I3
S1
S1/O S2/O
S2
S1/O S2/O S3/O
S3
S2/O
1
2
1
2
2
3
stati instabili
sull’input I3
5
Circuiti sequenziali
asincroni: le transizioni tra gli stati avvengono
istantaneamente, cioè quando le condizioni sono verificate
(il circuito può essere instabile)
sincroni: le transizioni avvengono solo in certi istanti
(istanti di marcatura), segnalati da un segnale d’input p
(segnale di marcatura)
circ. seq. sincrono
stato S
X
m
n
l
p
Y
6
Circuiti sequenziali sincroni
Registro: circuito sequenziale sincrono basilare
valore dello stato è il valore d’input all’ultimo
istante di marcatura
valore dell’output uguale allo stato
X
Y
p
tutti i circuiti sequenziali sincroni si possono
scrivere usando registri
7
Circuiti sequenziali sincroni 2
Ogni circuito sequenziale sincrono si
può rappresentare così:
X
n
CC1
(funzione di
tranzione
degli stati f)
l S
l
R
CC2
(funzione
degli
output g)
m
Y
p
8
La Programmazione
9
La programmazione: gli
argomenti che tratteremo
Cos’è un programma
Com’è organizzata la memoria nel calcolatore (memoria centrale
e memoria di massa)
Linguaggi di programmazione
Linguaggio macchina e assembler
Linguaggi ad alto livello:
strutture di controllo (sequenza, selezione, ciclo,
...)
tipologie di programmazione (imperativa, a
oggetti)
linguaggi per ipertesti
Strutture dati (array, record)
Algoritmi (pseudocodice o diagramma di flusso)
Traduzione di linguaggi
10
Algoritmi e programmi
Dati di
input
Codificati
opportunamente
Elaborazione dei dati (esecuzione)
Dati di
output
Trasformazione dei dati di input e esecuzione
passi specificati da un opportuno algoritmo
Umano
(conosce l’algoritmo e
scrive il programma)
programma
Calcolatore
(esegue il programma)
11
Algoritmi e programmi 2
Algoritmo (def) :
una sequenza di azioni non ambigue che trasformi i dati
iniziali nel risultato finale utilizzando un insieme di
azioni elementari che possono essere eseguite da un
opportuno esecutore.
Programma (def)
specifica di un algoritmo utilizzando un linguaggio di
programmazione non ambiguo e direttamente
comprensibile dal computer
12
Tipi di memoria
Memoria centrale (RAM): formata da celle (o locazioni),
cioè elementi di un bit aggregati in gruppi di otto
(memorizzano un byte di memoria).
indirizzo
01
0000011
10
00000110
contenuto
Registri: particolari celle di memoria, che contengono i
dati che vengono elaborati
N.B. La RAM è volatile
13
Tipi di memoria 2
Memoria di massa (dischi): i dati sono
memorizzati in modo permanente
I byte in memoria di massa non sono
singolarmente indirizzabili e sono aggregati in
sequenza dette files.
00101011 10010000 01110001
bytes
14
Linguaggi di programmazione 1
Le istruzioni di un programma vengono codificate
(come i numeri, i caratteri, etc.)
Linguaggio macchina:
l’insieme dei valori binari che codificano tutte le
possibili istruzioni di un processore
specifico per ogni calcolatore
non è portabile (se cambia l’indirizzo di una
locazione bisogna cambiare il programma)
difficile per l’umano (gestire lunghe sequenze di bit)
15
Linguaggi di programmazione 2
Linguaggio assembler
versione simbolica del linguaggio macchina (operazioni,
dati indicati con nomi mnemonici).
Specifico per ogni calcolatore
I programmi vengono scritti come file di testo e
“tradotti” in linguaggio macchina da assemblatori
1. LOAD Y, R1;
2. ADD 2, R1;
3. STORE R1, X;
traduzione
(assemblatore )
00010100 11001011
00010110 00000010
00010111 11001111
indirizzo di y
indirizzo di x16
Linguaggi di programmazione 3
Linguaggi di alto livello
permettono di scrivere programmi senza usare linguaggio
macchina o assembler
sono più vicini all’uomo che alla macchina
sono portabili (i programmi vengono tradotti in linguaggio
macchina)
sono di vari tipi: imperativi (C, Pascal), funzionali (Lisp,
Haskell), orientati a oggetti (Java), etc.
x=y+2
linguaggio
di alto livello
1. LOAD Y, R1;
2. ADD 2, R1;
3. STORE R1, X;
linguaggio
assembler
00010100 11001011
00010110 00000010
00010111 11001111
linguaggio
macchina
17
Variabili e costanti
variabili:celle di memoria caratterizzate da
identificatore e valore (assunto mediante assegnamenti)
tipi di dato: indicano la gamma di valori che possono
assumere (determinano lo spazio in memoria,
prevengono errori di programmazione)
booleano (0,1),
intero (numero massimo di bit per evitare overflow
dal calcolatore)
reale (per rappresentare virgola mobile)
carattere (in C 1 byte: codice ASCII o numero)
costanti: valori fissi di ciascun programma
18