Programma di Calcolatori Elettronici Corso di Laurea in Ingegneria Elettronica A.A. 2008 - 2009 Docente Ing. Filippo Vella Reti Logiche Rappresentazione dell'informazione Sistemi Numerici, Numerazione Binaria, Numerazione ottale e esadecimale; Operazioni Aritmetiche, conversione dalla base 10 alle altre basi, Codici binario decimali, Addizione BCD, Codici alfanumerici, il codice ASCII, Parità, Codici di Gray, Codice di Hamming 7,4 Algebra di Boole Logica binaria, Algebra booleana: identità e teoremi dell’algebra booleana; Manipolazione algebriche; Funzioni in forma complementata; Rappresentazione delle funzioni sulle mappe di Karnaugh, Mintermini e Maxtermini, Forme canoniche : somma di prodotti, prodotto di somme; Semplificazione con Mappe di Karnaugh: Mappa a due variabili, mappa a tre variabili, mappa a quattro variabili; Porte NAND, NOR, XOR, XNOR, buffer a 3 stati Circuiti combinatori Analisi dei circuiti combinatori; Sintesi dei circuiti combinatori; Rilevazione di alee; Decoder, Multiplexer, Sommatori/Sottrattori binari, Moltiplicatore binario, Sintesi con Multiplexer, Sintesi con decoder, Sintesi con il metodo di Quine e McCluskey Circuiti sequenziali Definizioni, Macchina a stati finiti, concetto di stato, equivalenza degli stati, latch S’R’, latch SR, latch D, flip-flop JK, flip-flop T, flip-flop sensibili alle transizioni, tabella caratteristica, equazione caratteristica, tabelle di pilotaggio, Analisi dei circuiti sequenziali sincroni, Sintesi di circuiti sequenziali sincroni, cenni sui circuiti sequenziali asincroni, Esempi di circuiti sequenziali: registri, contatori Dispositivi logici programmabili Linguaggio C Struttura di un programma in C. Sequenze di escape. Variabili. Dati, tipi di dato, domini ed operatori. Tipi di dato intero (short int, int, long int), reale (float, double), carattere (char), booleano (bool). Istruzioni condizionali if e if-else. Operatori relazionali e di uguaglianza. Operatore ternario ?. Operatore di assegnamento. Istruzioni iterative: while, dowhile e for. Istruzione di selezione switch. clausole case e default. Istruzioni break, continue e goto. Operazioni di cast. Tipi di dato enumerati (enum). costanti (const). Array mondimensionali e multidimensionali. Uso degli array. Funzioni. Prototipi di funzione. Funzione main. Tipo restituito e istruzione return. Argomenti delle funzioni. Passaggi di parametri per valore e riferimento. Funzioni e array. Argomenti della riga di comando (argc e argv). Ricorsione. Visibilità delle variabili. File di intestazione della libreria standard e funzioni di libreria d’uso comune. Informazioni di memorizzazione: auto, register, extern e static. Operatore typedef. Direttiva al preprocessore #include. Direttiva al preprocessore #define Caratteri e stringhe. Principali funzioni di manipolazione delle stringhe. Puntatori. Operatore d’indirizzo(&) e di deferenza(*). Costante NULL. Array e puntatori. Aritmetica dei puntatori. Tecniche d’uso dei Puntatori. Passaggio di parametri con puntatori. Struct. Accesso agli elementi. Operatori punto e freccia. Algoritmi di Ordinamento: Bubble-sort, Ordinamento per Inserzione, Ordinamento per Selezione, Quick-sort. Analisi della complessità asintotica degli algoritmi. Funzioni di input ed output. printf, scanf , getchar, putchar. Operatori su bit, &, |, ^, ~, << e >>. File. Modalità di accesso ai files. Lettura e scrittura file in modalità sequenziale e non. (fopen, fclose, fprintf, fscanf, fputs, fgets, fseek, ftell) Allocazione e deallocazione di memoria. Istruzioni malloc, calloc, free, sizeof. Implementazione della struttura dati Lista e della struttura dati Albero binario tramite puntatori.