| |
FONDAMENTI DI INFORMATICA
(Corsi di laurea in Ingegneria Elettronica ed Elettrica)
Prof. Antonio Chella
Gli argomenti del corso di Fondamenti di informatica riguardano i principi
della programmazione strutturata e delle moderne tecniche di progettazione
del software; le principali strutture dati del linguaggio di programmazione
C; i principali algoritmi ed i loro campi di utilizzo ed i metodi di confronto
e valutazione degli algoritmi. Sono introdotte le moderne tecniche di
programmazione orientata agli oggetti in linguaggio C++. Il corso non
richiede conoscenze pregresse.
Modalità di esame:
L'esame consiste in una prova scritta di programmazione in linguaggio
C/C++ ed in una prova orale.
PROGRAMMA DEL CORSO
Introduzione - Gli algoritmi, i linguaggi di programmazione, architettura
dei sistemi informatici, le applicazioni informatiche, cenni sull'architettura
di un calcolatore.
La programmazione - Primi elementi del linguaggio C, codifica degli algoritmi
mediante pseudocodice, 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,
struzioni 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 sottorpogrammi 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 ordine 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, visita dei grafi in ampiezza ed in
profondit, pile e code, aratteristiche 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, aratteristiche 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 sul linguaggio C++ - Introduzione, differenze con il linguaggio
C, tipi di dati, operatori, strutture di controllo, classi, oggetti, cenni
di programmazione orientata agli oggetti.
TESTI CONSIGLIATI
S. Ceri, D. Mandrioli, L. Sbattella: "Informatica istituzioni,
Linguaggio di riferimento Ansi C", McGraw-Hill Libri Italia, Milano,
1994.
M. Gori, P. Nesi, E. Pasca: "Pascal e C. Guida pratica alla programmazione",
McGraw Hill Libri Italia, 1994.
TESTO DI CONSULTAZIONE
B. W. Kernighan, D. M. Ritchie: "Linguaggio C. II ed.", Gruppo
Editoriale Jackson, Milano, 1989.
|
|