logo università milano

Laboratorio di Algoritmi e Strutture Dati (edizione diurna)
Corso di laurea in informatica - AA 2008/2009

Materiale didattico

In questa pagina sono raccolti materiali relativi agli argomenti trattati a lezione (appunti, lucidi, esempi, porzioni di codice) e le tracce degli esercizi assegnati in laboratorio. Tali materiali non possono che fornire informazioni parziali e non devono pertanto sostituire i libri di testo!

[01 - LAB] 1 ottobre 2008
Presentazione del corso. Introduzione all'uso del sistema operativo GNU/Linux.
lucidi
[02 - AULA] 2 ottobre 2008
Introduzione al linguaggio C: compilatore gcc, forma di un programma, variabili e assegnamento, operatori, strutture di controllo.
[03 - LAB] 8 ottobre 2008
Tipi numerici, caratteri, input/output formattati.
lucidi - traccia degli esercizi
[04 - AULA] 9 ottobre 2008
Dati aggregati: array, array multidimensionali, stringhe, strutture, enumerazioni.
lucidi
[05 - LAB] 15 ottobre 2008
Esercizi su dati aggregati.
traccia degli esercizi
[06 - AULA] 16 ottobre 2008
Funzioni: definizione, chiamata, dichiarazione, parametri-argomenti e variabili locali.
lucidi
[07 - LAB] 22 ottobre 2008
Funzioni ricorsive. Alcuni algoritmi di ordinamento (selectionsort e mergesort).
lucidi - traccia degli esercizi - file di libreria: lbpsgraph.h, libpsgraph.c
[08 - AULA] 23 ottobre 2008
Puntatori: dichiarazioni di variabili puntatore, operatori & e *, uso di puntatori nelle funzioni, aritmetica dei puntatori, puntatori e array.
[09 - LAB] 29 ottobre 2008
Stringhe e puntatori, array frastagliati di stringhe, argomenti da linea di comando.
lucidi - traccia degli esercizi
[10 - AULA] 30 ottobre 2008
Array frastagliati di stringhe e array bidimensionali: presentazione di alcuni esempi. Allocazione dinamica della memoria.
[11 - LAB] 5 novembre 2008
Esercizi su allocazione dinamica della memoria.
lucidi - traccia degli esercizi
[12 - AULA] 6 novembre 2008
Lezione di ripasso: presentazione di esercizi svolti:
  • su puntatori (assegnati il 29 ottobre)
  • su allocazione dinamica della memoria (assegnati il 5novembre)
    Errata corrige: nell'es. 1.3, la riga p = realloc( p, size * sizeof(int) ) va sostituita con p = my_realloc( p, size ) o equivalentemente con p = my_realloc( p, size * sizeof(char) )
NOTA: mi segnalano che con alcuni software gli schemi non vengono visualizzati correttamente: se vedete solo freccie e box ma non vedete testo, qualcosa non va!
[13 - AULA] 13 novembre 2008
Liste concatenate (inserimento in testa, ricerca, cancellazione, inserimento ordinato). Strutturazione di programmi su più file.
[14 - LAB] 19 novembre 2008
Rappresentazione di insiemi dinamici tramite liste concatenate. Suddivisione di programmi su più file.
traccia degli esercizi - programma justify da completare
[15 - AULA] 20 novembre 2008
Paradigma client-interfaccia-implementazione e ADT (tipi di dati astratti).
[16 - LAB] 26 novembre 2008
Tipi di dati astratti. Esempio: code.
traccia degli esercizi
[17 - AULA] 27 novembre 2008
Alberi binari e alberi di ricerca.
porzioni di codice illustrate
[18 - LAB] 3 dicembre 2008
Tabelle di simboli. Es: occorrenze di parole in un testo.
traccia degli esercizi - esempi di input per l'esercizio 2
[19 - AULA] 4 dicembre 2008
Code di priorità: implementazione con heap e applicazione agli algoritmi greedy (problema dello scheduling di intervalli).
Vi segnalo questi lucidi sul problema dello scheduling di intervalli (in inglese) del Prof. Dariusz Kowalski.
[20 - LAB] 10 dicembre 2008
Esercizi sull'uso delle code di priorità.
traccia degli esercizi
[21 - AULA] 11 dicembre 2008
Grafi: rappresentazione con matrice o liste di adiacenza, visite in ampiezza e in profondità.
[22 - LAB] 17 dicembre 2008
Esercizi su grafi non orientati.
traccia degli esercizi
[23 - AULA] 18 dicembre 2008
Complementi di C: puntatori a funzione e gestione dei file
Esempi e spiegazioni su puntatori a void, puntatori a funzione (e loro uso per costruire strutture dati con contenuto generico), qsort.
[24 - AULA] 8 gennaio 2009
Analisi del progetto ingranaggi.