09730 - FONDAMENTI DI INFORMATICA

Anno Accademico 2011/2012

  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Forli
  • Corso: Laurea in Ingegneria aerospaziale (cod. 8263)

Conoscenze e abilità da conseguire

Al termine del corso lo studente acquisisce nozioni sui principali circuiti logici, sulle macchine digitali e sull'architettura dei calcolatori. Inoltre, lo studente acquisisce i principali elementi utili alla progettazione di algoritmi e gli strumenti necessari alla loro implementazione, attraverso la realizzazione di programmi scritti con un linguaggio di alto livello.

Contenuti

Introduzione alle macchine digitali

Struttura e comportamento. Analisi e Sintesi. Segnali analogici e digitali. Reti di interruttori. Macchine combinatorie e sequenziali. Il concetto di elaboratore elettronico e computazione algoritmica.

Trattamento dell'informazione

Sistemi di numerazione posizionali. Numeri binari. Basi di conteggio decimale, binaria, ottale, esadecimale. Operazioni tra numeri binari. Conversione tra basi. Conversione tra base decimale a base qualunque e viceversa. Codici. Codifica dei numeri e codici binari. Codici con rilevazione di errori. Comunicazione dell'informazione: trasmissione, controllo, sincronizzazione. Protezione dell'informazione. Codici con correzione di errori. Il bit di parità. Il codice di Hamming.

Reti logiche combinatorie e sequenziali

Funzioni, espressioni e schemi logici. Variabili, Bit e configurazioni binarie. Funzioni booleane. Tabelle della verità. Funzioni di una o due variabili. Porte e operazioni logiche. Espressioni e funzioni. Espressioni e schemi logici. Algebra di Boole. Espressioni di funzioni incomplete. Espressioni canoniche. Applicazioni della logica combinatoria: selettore, encoder, decoder, half adder, full adder. Reti di costo minimo. Espressioni minime. Il metodo delle mappe di Karnaugh. Analisi e sintesi. Memorie binarie. Latch SR e CD. Flip flop D. Registri e contatori.

Calcolatori elettronici

Il modello di Von Neumann. I principi di funzionamento di un calcolatore. Rappresentazione astratta dell'hardware di un calcolatore. Sistemi a microprocessore. Il bus. Accesso a dati e istruzioni da parte della CPU.

La programmazione

Algoritmi e strutture dati. Lo pseudo-codice. Diagramma di flusso. Tecniche di progettazione algoritmica. Programmazione strutturata. I concetti di assegnamento, variabile e statement. Strutture dati. I costrutti nella programmazione strutturata. Programmazione procedurale. Cenni di complessità computazionale.

Il linguaggio C

Costrutti fondamentali. Strutture dati in C. Tipi di dato. Variabili globali e locali. Scopo di una variabile. Array e puntatori. Funzioni e prototipi. Input e Output. Espressioni logiche. Direttive di precompilazione e macro. Suddivisione dei programmi in moduli. Compilazione di programmi C.

Testi/Bibliografia

Dispense fornite dal docente.

Per la Programmazione:
TESTO
B.W. Kernighan, D.M. Ritchie
Il Linguaggio C
Pearson - Prentice Hall

TUTORIAL ON LINE
Brian Kernighan
Programming in C, a tutorial
http://www.lysator.liu.se/c/bwk-tutor.html

Metodi didattici

Lezioni frontali in cui ogni argomento verrà immediatamente accompagnato dallo studio di casi che ne mettano in luce applicazioni significative. Per far acquisire agli studenti padronanza e familiarità con gli argomenti trattati verranno inoltre proposte esercitazioni da svolgere a casa, con successiva correzione in aula.

Modalità di verifica e valutazione dell'apprendimento

Gli studenti saranno valutati in base allo svolgimento di una prova scritta e di un esame orale.

Strumenti a supporto della didattica

Nel sito del materiale didattico (link in alto a destra, in questa pagina) sono disponibili per il download le slide presentate a lezione.

Orario di ricevimento

Consulta il sito web di Alessandro Bevilacqua