FONDAMENTI DI INFORMATICA
CONTENUTI DEL CORSO (aggiornato all'a.a. 1996/97)
Introduzione - Gli algoritmi - I linguaggi di programmazione - Architettura dei sistemi
informatici - Le applicazioni informatiche - Cenni sull'architettura di un calcolatore.
La programmazione - Elementi del MiniC - Codifica degli algoritmi mediante pseudocodice
MiniC - Costruzione incrementale dei programmi.
Introduzione al linguaggio C - Il formalismo BNF per la descrizione della sintassi dei
linguaggi - BNF estesa, notazione grafica ed a blocchi - Descrizione del linguaggio C mediante
BNF - Struttura dei programmi C - Parte dichiarativa e parte esecutiva.
Tipi di dati - Concetti ed esempi - Tipi semplici predefiniti e definiti dall'utente - Tipi strutturati
- Array- Puntatori ed aritmetica dei puntatori - Il C e la tipizzazione.
Strutture di controllo - Istruzioni di selezione - Istruzioni cicliche - Istruzioni di salto
incondizionato e condizionato.
Funzioni e procedure - Definizioni, chiamate e prototipi - Passaggio dei parametri per valore e
per indirizzo - Visibilita' delle variabili - Vita delle variabili - Effetti collaterali - Procedure e
funzioni predefinite.
Programmazione ricorsiva - Formulazione ricorsiva di problemi ed algoritmi - Esecuzione di
sottoprogrammi ricorsivi - Gestione a pila della memoria.
Gestione dei files - I files in linguaggio C - Gestione degli errori - Operazioni di lettura e
scrittura formattata - Operazioni di lettura e scrittura non formattata - Accesso diretto ai files.
Complessita' degli algoritmi - Notazione "Theta-grande" - Analisi della complessita' degli
algoritmi di ricerca ed ordinamento - Limiti inferiori alla complessita' - Problemi intrattabili.
Strutture dati - Gestione dinamica dei dati - Produzione di garbage e riferimenti fluttuanti Liste ed algoritmi per la loro gestione - Liste circolari e liste bidirezionali - Alberi e loro gestione Visita degli alberi in preordine, in inordine ed in postordine - Visita in profondita' ed in ampiezza Alberi binari di ricerca - Algoritmi di inserimento e cancellazione in alberi binari di ricerca - Alberi
non binari. - Grafi - Caratteristiche dei grafi - Rappresentazione di grafi mediante array Rappresentazione di grafi mediante puntatori - Rappresentazioni di grafi mediante plessi - Principali
applicazioni dei grafi - Pile e code - Caratteristiche delle pile e delle code - Rappresentazione di pile
e code mediante array - Rappresentazione di pile e code mediante puntatori - Principali applicazioni
delle pile e delle code - Tabelle - Caratteristiche delle tabelle - Modalita' di accesso - Gestione delle
collisioni.
Tecniche di progetto - Modularizzazione - Moduli interfaccia - Moduli implementazione Modularizzazione in C - Progettazione top-down e bottom-up - Cenni di progettazione orientata agli
oggetti.
BIBLIOGRAFIA
Libri di testo
S. Ceri, D. Mandrioli, L. Sbattella: Informatica istituzioni, Linguaggio di riferimento Ansi C.
McGraw-Hill Libri Italia, Milano, 1994.
Libri di consultazione
B. W. Kernighan, D. M. Ritchie: Linguaggio C. II ed. Gruppo Editoriale Jackson, Milano, 1989.