Programma del Corso
--------------------------------------
Introduzione
Elaborazione automatica dell'informazione:
Algoritmi e programmi. Una notazione grafica per esprimere
algoritmi. Linguaggi di programmazione. Il progetto di programmi.
Rappresentazione dell'informazione: Sistemi numerici.
Conversione fra sistemi numerici. Sistema di numerazione binaria. Operazioni tra
numeri binari. Overflow e underflow. Rappresentazione dei numeri interi.
Rappresenzione dei numeri con segno. Rappresentazione in virgola fissa e virgola
mobile. Codici. Rappresentazione dei Caratteri. Algebra di Boole. Funzioni
logiche. Espressione logiche. Applicazioni dell'algebra booleana.
Struttura di un elaboratore e sistema di elaborazione:
Struttura di un elaboratore: memoria centrale, unita centrale, funzionamento
elementare dell'elaboratore. Sistema di elaborazione: unita' di memoria ausiliaria, unita' di ingresso uscita, interfacciamento di unita' periferiche, collegamenti di elaboratori in rete.
Sistema di elaborazione: software di base: Traduzione ed
esecuzione dei programmi, sistema operativo, ambiente di programmazione.
Linguaggi di programmazione: linguaggi imperativi, linguaggi funzionali,
linguaggi dichiarativi basati sulla logica. Compilatori. Linker.
Elementi fondamentali del linguaggio C: Sintassi del C.
Struttura di un programma C. Compilazione di un programma. Tipi di dato e
rappresentazioni. Tipi di dato principali. Identificatori. Variabili.
Modificatori di accesso. Specificatori di classe di memorizzazione. Costanti.
Operatori. Strutture di controllo. Istruzione di selezione. Istruzioni di
iterazione. Istruzioni di salto. Istruzioni di espressione. Istruzione blocco.
Array, stringhe e puntatori: Array monodimensionali.
Puntatori ad array. Array come argomento di una funzione. Stringhe. Array di
stringhe. Array multidimensionali. Variabili puntatore. Operatori ed espressioni
con puntatori. Puntatori ad array. Puntatori a funzioni. Allocazione dinamica.
Funzioni: Astrazioni funzionali: funzioni. Regole di visibilita'
delle funzioni. Argomenti delle funzioni. Argomenti di main. Istruzione return.
Valori restituiti da una funzione. Dichiarazioni e campo di azione degli
identificatori. Tecniche di legame dei parametri. Effetti collaterali ed
implementazione delle funzioni.
Strutture, unioni e tipi definiti dall'utente: Strutture. Array
di strutture. Strutture come argomenti di funzioni. Puntatori a strutture.
Array e strutture all'interno di altre strutture. Campi di bit. Unione.
Enumerazioni. Sizeof. Typedef.
I/O da console e da file: Lettura e scrittura di caratteri e
stringhe da consolle. I/O formattato da console. Canali. File.
Ricorsione
Allocazione dinamica della memoria
Complessita' Computazionale: Efficienza dei Programmi. Le
Notazioni O e W. Valutazione della Complessita' di un Programma. Relazioni di Ricorrenza.
Algoritmi di Ordinamento: Classi di algoritmi di ordinamento.
Valutazione degli algoritmi di ordinamento. Ordinamento per selezione (selection
sort). Algoritmi per inserzioni (insertion sort). Algoritmi per scambio bubble
sort, shall sort, quick sort. Ordinamento di file. Ordinamento di stringhe.
Tipi di dato astratto: Liste. Code. Pile. Alberi binari. Alberi
generali. Grafi.
Testo consigliato: Bellini, Guidi - Linguaggio C. Guida alla
programmazione (terza edizione), McGraw-Hill