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: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