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