FONDAMENTI DI INFORMATICA
Prof. Giacomo Piscitelli
Il corso tratta i seguenti temi principali: struttura e funzionamento di un calcolatore, strutture astratte e concrete di dati, rappresentazione dell'informazione, operatori e funzioni logiche, algoritmi e loro descrizione, linguaggi simbolici e programmazione in PASCAL, interpreti e compilatori di programmi, sistemi operativi. Conoscenze pregresse necessarie sono quelle relative alle nozioni di analisi matematica e di fisica. Il Corso prevede, oltre alle lezioni teoriche, anche esercitazioni e prove di laboratorio. L'esame consiste in una prova scritta ed orale.
PROGRAMMA
1. STRUTTURA E MODALITÀ GENERALI DI FUNZIONAMENTO DI UN CALCOLATORE. Organizzazione e funzionamento di un sistema di elaborazione a programma memorizzato. Il processore: Central Processing Unit (CPU), Memoria, Dispositivi di I/O (dischi, nastri, stampanti, video/tastiera/mouse, linea di accesso a reti. Struttura di una istruzione e tipi di istruzioni. Architetture a multiprocessori e reti di calcolatori.
2. RAPPRESENTAZIONE DELL'INFORMAZIONE. Sistemi di numerazione e conversione fra vari sistemi. Aritmetica binaria. Aritmetica intera: rappresentazione in complemento alla base e operazioni. Aritmetica in virgola mobile e forma normalizzata. Codificazione e principali tipi di codificazione dei caratteri.
3. OPERATORI E FUNZIONI LOGICHE. Algebra di Boole e teoremi fondamentali dell'algebra booleana. Diagrammi di Venn; reti di interruttori e tavole di verità. Funzioni di variabili booleane: reti logiche e connettivi logici NOT, AND, OR.
4. STRUTTURE DI DATI. Strutture astratte lineari: liste (coda, dicoda, pila) e tipiche operazioni. Strutture astratte non lineari: matrici, tavole, grafi orientati ed alberi; tipiche modalità di attraversamento di alberi binari (pre-ordinato, post-ordinato, in-ordinato); cenni sulla notazione polacca. Strutture concrete di memoria: organizzazione sequenziale e concatenata. Memorizzazione delle strutture astratte.
5. LINGUAGGI DI PROGRAMMAZIONE. Alfabeto, vocabolario, grammatica. Processo di generazione e riconoscimento di frasi di un linguaggio L basato su una grammatica G. Dati: tipi di dati e rappresentazione; compatibilità ed equivalenza tra tipi; variabili semplici e strutturate, locali e globali. Istruzioni: di assegnazione, di controllo condizionato ed incondizionato; di ripetizione; di inizio e fine; di lettura e scrittura dei dati. Astrazioni funzionali: procedure e funzioni; dichiarazioni e campo d'azione degli identificatori; tecniche di legame dei parametri; effetti collaterali in procedure e funzioni; ricorsione. Analisi di programmi e complessità: il modello di costo; il comportamento asintotico, notazione O e *, istruzione dominante. Il problema dell'ordinamento dei dati: ordinamento per scambio o selezione (selection-sort); ordinamento a bolle (bubble-sort); ordinamento per fusione (merge-sort).
6. LINGUAGGIO DI PROGRAMMAZIONE PASCAL. Alfabeto. Costanti, tipi, variabili, etichette. Struttura di un programma. Istruzioni di assegnazione ed espressioni: operatori aritmetici, di relazione, booleani. Istruzioni predefinite di I/O: read, readln, write, writeln. Istruzioni di controllo: limite (BEGIN, END); trasferimento incondizionato (GO TO); trasferimento condizionato (a diramazione semplice: IF..THEN..ELSE; a diramazione multipla: CASE); iterazione (con condizione finale: REPEAT..UNTIL; con condizione iniziale: WHILE..DO; a contatore: FOR..DO). Procedure e funzioni: definizione e chiamata, gestione delle aree dei dati, chiamate ricorsive. Insiemi e tipi strutturati, strutture dinamiche.
7. TRADUZIONE ED ESECUZIONE DEI PROGRAMMI. Cenni sui compilatori ed interpreti: analisi lessicale, sintattica e semantica, codice intermedio, ottimizzazione e generazione del codice rilocabile. Correlatori (linker) e caricatori (loader). Sistema operativo: gestione delle risorse e interfaccia; file, dispositivi, CPU, memoria. Sistemi operativi con interfaccia a caratteri ed a icone; principali comandi del sistema operativo MS DOS. Caratteristiche dell'interfaccia ad icone Windows.
TESTI DI RIFERIMENTO
M. ITALIANI, G. SERAZZI: Elementi di Informatica, ETAS Libri, 1993
C. BATINI, L.CARLUCCI AIELLO, M. LENZERINI, A. MARCHETTI SPACCAMELA, A.
MIOLA: Fondamenti di Programmazione dei Calcolatori Elettronici, Franco Angeli, 1993
A. S. TANENBAUM: Architettura del Computer, Jackson, Milano, 1991.