Programmi 1 - Dipartimento di Informatica

Informatica Generale
Marzia Buscemi
[email protected]
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:IxSO
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