Informatica Generale Marzia Buscemi buscemidi unipi it Ricevimento
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/IG 07. htm (sommario delle lezioni in fondo alla pagina) 1
Circuiti logici n permettono l’elaborazione dei dati in un calcolatore (esecuzione di operazioni, etc. ) n realizzano elettronicamente il comportamento delle funzioni dell’algebra booleana n sono di due tipi: n n 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: a partire da un input producono un certo output. Più precisamente: n Input: X = x 1, . . . , xn variabili N=2 n sequenze I={I 1, . . . , IN} n Output: Y= y 1, . . . , ym variabili M=2 m sequenze O={O 1, . . . , OM} n Un circuito combinatorio realizza una funzione h : I O X n 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): n Input: X=x 1, . . . , xn variabili N=2 n sequenze I={I 1, . . . , IN} n Output: Y=y 1, . . . , ym variabili M=2 m sequenze O={O 1, . . . , OM} n Stato: Z=z 1, . . . , zl variabili L=2 l sequenze S={S 1, . . . , SL} n Un circuito sequenziale realizza le funzioni: n f: I x S S f(Ih, Sk)=Shk n g: Ix. S O g(Ii, Sj)=Oij nuovo stato output 4
Circuiti sequenziali 2 1. Diagramma di stato I 1/O 1 S 1 I 2/O 1 I 1/O 2 I 3/O 3 S 3 I 3/O 2 S 2 I 2/ O 2 2. Tavola di flusso I 1 I 2 I 3 S 1/O S 2/O S 3 S 2/O 1 2 2 3 stati instabili sull’input I 3 5
Circuiti sequenziali n asincroni: le transizioni tra gli stati avvengono istantaneamente, cioè quando le condizioni sono verificate (il circuito può essere instabile) n 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 n Registro: circuito sequenziale sincrono basilare n n valore dello stato è il valore d’input all’ultimo istante di marcatura valore dell’output uguale allo stato X Y p n tutti i circuiti sequenziali sincroni si possono scrivere usando registri 7
Circuiti sequenziali sincroni 2 n Ogni circuito sequenziale sincrono si può rappresentare così: X n CC 1 (funzione di tranzione degli stati f) l l R S CC 2 (funzione degli output g) m Y p 8
La Programmazione 9
La programmazione: gli argomenti che tratteremo n Cos’è un programma n Com’è organizzata la memoria nel calcolatore (memoria centrale e memoria di massa) n Linguaggi di programmazione n n Linguaggio macchina e assembler Linguaggi ad alto livello: strutture di controllo (sequenza, selezione, ciclo, . . . ) n tipologie di programmazione (imperativa, a oggetti) n linguaggi per ipertesti Strutture dati (array, record) Algoritmi (pseudocodice o diagramma di flusso) Traduzione di linguaggi n n 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 n 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. n 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 n Memoria di massa (dischi): i dati sono memorizzati in modo permanente n 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 n Le istruzioni di un programma vengono codificate (come i numeri, i caratteri, etc. ) n Linguaggio macchina: n n 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 n Linguaggio assembler n n n 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, R 1; 2. ADD 2, R 1; 3. STORE R 1, X; traduzione (assemblatore ) 00010100 11001011 00010110 00000010111 11001111 indirizzo di y indirizzo di x 16
Linguaggi di programmazione 3 n Linguaggi di alto livello n n 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, R 1; 2. ADD 2, R 1; 3. STORE R 1, X; linguaggio assembler 00010100 11001011 00010110 00000010111 11001111 linguaggio macchina 17
Variabili e costanti n variabili: celle di memoria caratterizzate da identificatore e valore (assunto mediante assegnamenti) n tipi di dato: indicano la gamma di valori che possono assumere (determinano lo spazio in memoria, prevengono errori di programmazione) n booleano (0, 1), n intero (numero massimo di bit per evitare overflow dal calcolatore) n reale (per rappresentare virgola mobile) n carattere (in C 1 byte: codice ASCII o numero) n costanti: valori fissi di ciascun programma 18
- Slides: 18