POLITECNICO DI BARI
1a Facoltà di Ingegneria
CORSO DI LAUREA IN INGEGNERIA INFORMATICA
Programma del corso di
Fondamenti di Informatica
anno accademico 2001-2002
Docente: Giacomo Piscitelli
OBIETTIVI
Il corso si propone di introdurre a: gli algoritmi, l’architettura di un calcolatore elettronico, la
codifica di programmi, il software di base dei sistemi informatici, le strutture di dati, i sistemi
distribuiti di trattamento dell’informazione. Il corso fornisce altresì elementi di gestione delle
risorse da parte del sistema operativo e dei dati da parte del data base management system.
PRE-REQUISITI
Buona conoscenza dell’Algebra e della Geometria. Conoscenza dei principali fenomeni
dell’Elettromagnetismo.
PROPEDEUTICITÀ
Aver superato l’esame di Geometria ed Algebra.
CONTENUTI
Algoritmi
Il concetto e le proprietà di un algoritmo. Esempi di algoritmi numerici e non numerici. La
soluzione algoritmica di problemi: specificazione del problema, analisi delle possibili soluzioni,
progetto della soluzione scelta. Le strutture fondamentali per la descrizione di algoritmi:
sequenza, diramazione, iterazione; teorema di Boehm-Jacopini. Prime tecniche di descrizione di
algoritmi: il linguaggio strutturato ed il diagramma di flusso.
Architettura dei calcolatori
Codifica binaria dell’informazione. Codifica dei numeri naturali, interi, razionali. Operazioni
aritmetiche binarie. Codifica dei caratteri. Codifica delle immagini.
Algebra di Boole ed operatori logici. Porte logiche e componibilità dei circuiti.
La macchina di Von Neumann. Unità di elaborazione, memoria, periferiche di ingresso/uscita,
bus. Estensioni della macchina di Von Neumann: canale di ingresso/uscita, parallelismo
intrinseco al processore, co-processore, cache. Cenni alle architetture a multiprocessore.
Caratteristiche e tecnologie delle periferiche: tastiera, video, stampanti, memorie secondarie
(CD-ROM, dischi magnetici, ecc.).
Il linguaggio di macchina: formato delle istruzioni; esecuzione di una istruzione; principali
istruzioni; esempi di programmi in linguaggio di macchina; modi di indirizzamento; cenni al
linguaggio Assembler.
pag. 1 di 3
Politecnico di Bari - CdL Ing. Informatica
Programmazione
I linguaggi procedurali (o imperativi) “orientati all’uomo” o di “alto livello”: la macchina
astratta. Struttura di un programma facente uso di un linguaggio di “alto livello”. Esempi di
programmi. I dati strutturati. L’approccio top-down alla scrittura di programmi.
Il linguaggio C: il lessico e la sintassi (o grammatica); la Backus-Naur Form (BNF) per la
descrizione formale di una grammatica. La semantica. La struttura di un programma scritto in C;
la parte dichiarativa e la parte operativa; esempi di programmi; i tipi di dati: i tipi predefiniti ed i
tipi definiti dall’utente; tipi semplici (int, float, double, char) e tipi strutturati tramite costruttore
(array, struct, pointer); strutture di controllo: diramazione semplice (if-else), diramazione
multipla (switch), iterazione a condizione iniziale (while), iterazione a condizione finale (dowhile), iterazione a contatore o enumerativa (for); istruzione di salto incondizionato (goto);
istruzione di uscita dalla iterazione o dalla diramazione multipla (break); istruzione di
interruzione della fase di iterazione corrente (continue). Funzioni e Procedure: passaggio dei
parametri “per valore” e “per indirizzo”; blocco; ambito di visibilità delle variabili; durata delle
variabili; la libreria delle procedure e funzioni predefinite del C.
Problemi e algoritmi ricorsivi: programmazione ricorsiva, esecuzione di sottoprogrammi
ricorsivi: lo stack di sistema.
L’utilizzo delle memorie secondarie. I file. Operazioni sui file: gestione, controllo errori,
lettura/scrittura. Accesso sequenziale ed accesso diretto.
Fasi e strumenti della programmazione. Redazione del modulo sorgente: l’editor. Verifica
lessicale, verifica sintattica e semantica, ottimizzazione e generazione del modulo oggetto: il
compilatore. Composizione di moduli oggetto nel modulo eseguibile: il linker. Caricamento e
rilocazione del modulo eseguibile: il loader. Cenni all’interprete.
Strutture di dati
Strutture astratte di dati: strutture lineari (lista, coda, doppia coda, pila) e non lineari (matrice,
tavola, grafo, albero); operazioni per la gestione delle principali strutture astratte di dati:
operazioni di carattere globale e di carattere locale. Tipiche modalità di attraversamento di alberi
binari (pre-ordinato, post-ordinato, in-ordine); notazione polacca.
Strutture concrete di memoria: struttura sequenziale, struttura a catena unidirezionale, struttura a
catena circolare, struttura a catena bidirezionale.
Memorizzazione delle strutture concrete: statica e dinamica. Algoritmi di gestione dinamica di
liste unidirezionali, liste bidirezionali, alberi e grafi.
Il sistema operativo
La funzione di un sistema operativo. Il modello a strati, la funzione dei vari strati. Processi e stati
dei processi. Lo strato di gestione a livello basso dei processi: interruzioni interne ed esterne,
sincronizzazione dei processi, semafori. Lo strato di gestione della memoria: rilocazione,
segmentazione, paginazione reale, paginazione su richiesta (memoria virtuale). Lo strato di
gestione a livello alto dei processi: creazione/distruzione dei processi, comunicazione tra
processi. Lo strato di gestione dei dispositivi. Lo strato di gestione dei file: organizzazione
gerarchica e gestione delle memorie secondarie: le directory, i file ed il file system. I comandi e
l’interprete dei comandi: interfaccia a carattere e interfaccia iconica. I sistemi operativi DOS,
WINDOWS.
Gli archivi e le basi di dati
Memorie secondarie magnetiche: nastri, dischi e dischetti. Organizzazione dei file: sequenziale,
ad accesso calcolato, a indice. Il significato di base di dati, il livello di astrazione, i modelli
Programma del Corso di “Fondamenti di Informatica” A.A. 2001/2002
pag. 2 di 3
Politecnico di Bari - CdL Ing. Informatica
(gerarchico, reticolare e relazionale) ed i linguaggi di gestione (DDL e DML), il Data Base
Management System.
I sistemi distribuiti e le reti di calcolatori
La trasmissione dei dati, i mezzi trasmissivi, la modulazione, i tipi di collegamento. Le reti:
topologia, messaggi, protocolli di comunicazione. Le reti geografiche (WAN) e le reti locali
(LAN). Reti a bus (Ethernet) e reti ad anello (token passing). Il modello ISO-OSI. Cenni al
protocollo CSMA/CD. Router, bridge, gateway. I servizi della rete Internet: posta elettronica,
trasferimento di file, consultazione dei siti WWW.
Introduzione all’analisi della complessità degli algoritmi
Algoritmi di ordinamento (selection sort, bubble-sort, merge-sort) e cenni alla complessità.
Algoritmi di ricerca (scansione, ricerca binaria) e cenni alla complessità.
Introduzione alla progettazione di basi di dati
Basi di dati relazionali. Il modello dei dati: relazione, attributi, chiave, cardinalità, grado, ecc.
La progettazione: il modello concettuale (E-R diagram) ed il modello logico (relation or table) di
un data base relazionale. La normalizzazione e le forme normali fino alla terza. Algebra
relazionale. Le operazioni: select, project, join, union, ecc. Interrogazioni.
TESTI CONSIGLIATI
(1)
(2)
(3)
(4)
S. Ceri, D. Mandrioli, L. Sbattella, Informatica istituzioni - linguaggio di riferimento
ansi C, McGraw-Hill, 1994
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, 1991
Un manuale o testo di C indicativamente: Deitel&Deitel, C: corso completo di
programmazione, Apogeo libri, 2001
Appunti di lezione e documentazione disponibile sul sito del docente.
PROCEDURA DI ACCERTAMENTO DELLA PREPARAZIONE DEGLI STUDENTI
La procedura di accertamento consiste in una prova scritta ed una prova orale, relativa ai contenuti del
programma ufficiale dell'anno accademico in corso. Si rimanda alle “Modalità esame” per il dettaglio.
Programma del Corso di “Fondamenti di Informatica” A.A. 2001/2002
pag. 3 di 3