376/98 A.A. 1998/99 UNIVERSITA’ DEGLI STUDI DI TRIESTE _______________________________________________________________________________ CORSI DI LAUREA ING. CIVILE, EDILE, MECCANICA, NAVALE, AMBIENTE E TERRITORIO PROGRAMMA DEL CORSO DI FONDAMENTI DI INFORMATICA DOCENTE Claudio CHIARUTTINI FINALITÀ: Il corso ha lo scopo di consentire all'allievo di affrontare la soluzione algoritmica di problemi ingegneristici mediante l’uso di strumenti di programmazione strutturata. A tale scopo il corso copre argomenti relativi al concetto intuitivo di algoritmo ed ai principi di progettazione degli algoritmi. Si forniscono agli allievi le conoscenze fondamentali di un linguaggio di programmazione strutturato (Fortran 90) e dell'uso di un sistema di elaborazione, con riferimento al sistema operativo Windows. Il corso mette in particolare rilievo l’impiego delle nozioni trattate al fine di una ordinata progettazione degli algoritmi. PROGRAMMA: Teoria degli algoritmi: Concetti intuitivi di algoritmo, esecutore, linguaggio di programmazione, programma. Complessità di un algoritmo. Programmazione: Rappresentazione diagrammata degli algoritmi. Principi fondamentali della programmazione strutturata: le strutture di sequenza, selezione, iterazione e le regole di composizione. Descrizione di un linguaggio di programmazione strutturato (Fortran 90). Tipi di dati semplici e strutturati: array, record (o tipi derivati), file, puntatori. Strutture astratte di dati: liste, pile, code, matrici e loro rappresentazioni più comuni. Sottoprogrammi: meccanismi di passaggio dei parametri, ricorsione, variabili locali e globali. Metodologia di progettazione top-down. Preparazione ed esecuzione dei programmi: editor, interpreti, compilatori, linker, loader. Aspetti pratici del problema della correttezza dei programmi e metodi di verifica empirica. I principali algoritmi di ordinamento (per selezione, a bolle, per fusione, veloce) e la loro complessità. I sistemi di elaborazione: Rappresentazioni posizionali dei numeri naturali (binaria, decimale, esadecimale), conversione di base; rappresentazioni binarie dei numeri reali e dei caratteri. Aritmetica intera in complemento a due. Descrizione dell'architettura di un calcolatore dal punto di vista del modello di von Neumann. Analisi del funzionamento dei suoi componenti fondamentali: processore, gerarchia di memorie (di massa, principale, cache), bus, periferiche. Modalità di accesso alla memoria; ciclo del processore. Cenni sulla pipeline aritmetica e sulle architetture parallele con riferimento alla tassonomia di Flynn (SISD, SIMD, MIMD). Sistemi operativi: Descrizione introduttiva di un sistema operativo: gestione del processore, allocazione della memoria, file system, interrupt e gestione delle periferiche, multiprogrammazione, memoria virtuale. Questi argomenti sono illustrati per lo più con riferimento al sistema Windows. Esercitazioni: Sono previste esercitazioni guidate per l’introduzione all’uso dei sistemi Windows e DOS, nonché di alcuni compilatori Fortran 90; esempi di analisi di problemi e progettazione di programmi; assistenza nella progettazione e messa a punto di programmi sviluppati dagli allievi. Testi consigliati: C. Batini e altri, Fondamenti di Programmazione dei Calcolatori Elettronici, Franco Angeli. J.S. Morgan e J.L. Schonfelder, Programming in Fortran 90, Alfred Waller. L. Goldschlager e A. Lister, Introduzione all’informatica: algoritmi, strutture, sistemi, SEI.