Insegnamento di Tecniche di Programmazione, (ingegneria dell'informazione)

Lezioni ed esercitazioni svolte

LEZIONE 1: 24/04/2007 LEZIONE 1: 29/04/2008 LEZIONE 1: 10/03/2009 Lezione introduttiva. Richiamo su puntatori, aritmetica dei puntatori e array.
Accesso ad array con la notazione [] e con i puntatori (PRIMA.C)
LEZIONE 2: 27/04/2007 LEZIONE 2: 2/05/2008 LEZIONE 2: 11/03/2009 Uso di Puntatori per scandire array. Puntatori restituiti da funzioni e usati come parametri (PRIMA.C).
slides della lezione nella directory delle lezioni.
LEZIONE 3: 03/05/2007 LEZIONE 3: 06/05/2008 LEZIONE 3: 17/03/2009 Breve richiamo sulle stringhe.
Uso di puntatori per gestire stringhe (esercizi conta-caratteri, copia, concatenazione). Allocazione statica e allocazione dinamica: malloc() e free().
Test sull'allocazione.
LEZIONE 4: 04/05/2007 LEZIONE 4: 08/05/2008 LEZIONE 4: 18/03/2009 Esercizio con blocco di double: da fare a casa e/o durante esercitazione autoguidata (ARDUBB.C) (ci e' stato piazzato un errore: bisogna usare il debugger per scoprirlo; la versione corretta e' in ARDOUBLE.C).
Allocazione "esatta" di stringhe. Array di stringhe. Riempimento di un array di stringhe "esatte". Ricerca in array di stringhe.
Gestione di un array di stringhe parzialmente riempito. Introduzione al programma di gestione di una tabella di stringhe, affrontato nella prima e.a. (STRMENU.C)
slides della lezione nella directory delle lezioni.
(1) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 08/05/2007 (1) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 09/05/2008 (1) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 24/03/2009 Prima esercitazione autoguidata.
LEZIONE 5: 25/03/2009 LEZIONE 5: 13/05/2008 LEZIONE 5: 10/05/2007
  • Variazioni sull'uso dei puntatori: array esatto di n double; Duplicazione di stringa con side effect.
  • concetto di tipo e uso di typedefper denominare nuovi tipi
  • Definizione di record mediante costrutto struct del C. Uso dei campi di un record (struttura). Inizializzazione di una struttura.
  • Esercizio sui punti geometrici colorati nel piano (PUNTO.C, PUNTO2.C).
  • Funzioni che ricevono strutture e funzioni che restituiscono strutture (PUNTO3.C).
  • Funzioni che provocano side-effect su struct (PUNTO4.C: passaggio dell'indirizzo di una struct).
  • Una funzione che restituisce un puntatore a struttura.
slides della lezione nella directory delle lezioni.
LEZIONE 6: 31/03/2009 LEZIONE 6: 15/05/2008 LEZIONE 6: 11/05/2007
  • Array di strutture. Esercizio (Quadrilateri (QUADRI.C)).
  • Specifica di strutture dati (cenni sulla rappresentazione astratta delle strutture dati da gestire in un programma; rappresentazione astratta di dati e funzioni e loro rappresentazione concreta in un linguaggio).
  • Una struttura di dati teorica: Concetto di Tabella.
  • Introduzione all'esercizio Gestione Voli: dalla rappresentazione astratta ad una concreta per la tabella di voli aerei (ea3).
(2) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 1/04/2009 (2) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 16/05/2008 (2) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 15/05/2007 Seconda esercitazione autoguidata.
LEZIONE 7: 07/03/2009 LEZIONE 7: 20/05/2008 LEZIONE 7: 17/05/2007
  • Discussione esercizio Gestione Voli (ea3).
  • Rappresentazione dinamica della struttura di dati TABELLA (esempio: tabella di voli);
  • Introduzione alle strutture di dati dinamiche con la rappresentazione dell'ADT LISTA; funzioni fondamentali.
  • (Da qui in poi si usa ANCHE il libro di Calvanese et.al)

(3) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 08/03/2009 (3) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 23/05/2008 (3) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 22/05/2007 Terza esercitazione autoguidatata.
LEZIONE 8: 15/04/2009 LEZIONE 8: 22/05/2008 svuotata LEZIONE 9: 27/05/2008 LEZIONE 8: 18/05/2007 LEZIONE 10: 26/05/2005, 01/06/2006 Rappresentazione concreta dell'ADT LISTA
  • rappresentazione mediante array (cenni);
  • rappresentazione mediante struct e puntatori);
  • scansione di una lista: stampa e ricerca
  • inserimento in testa (insTestaLista());
  • costruzione di una lista di n nodi con inserimento in testa;
slides lezione 8.
LEZIONE 9: 21/04/2009 LEZIONE 10: 29/05/2008 LEZIONE 11 27/05/2005 06/06/2006 LEZIONE 9: 24/05/2007 Strutture di dati dinamiche: liste concatenate rappresentate mediante strutture e puntatori:
  • Inserimento in lista con aggiunta in coda.
  • Tecnica del record generatore.
  • Costruzione di una lista mediante inserimento in coda.
slides lezione 9.
(4) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 22/04/2009 (4) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 30/05/2008 (4) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 29/05/2007 (ex 5) ESERCITAZIONE - 15/06/2004, 31/05/2005, 09/06/2006 esercitazione autoguidata ea4 (liste).
LEZIONE 10: 28/04/2009 LEZIONE 11: 3/06/2008 LEZIONE 12 03/06/05 08/06/2006 LEZIONE 10: 25/05/2007 Strutture di dati dinamiche: liste concatenate rappresentate mediante strutture e puntatori:
  • Funzione per la deallocazione di una lista.
  • Funzioni per la gestione di liste (per inserimento di un nuovo elemento in coda).
  • Eliminazione di un elemento da una lista.
  • Funzione di eliminazione di un elemento da una lista.
LEZIONE 11: 29/04/2009 LEZIONE 12: 5/06/2008 LEZIONE 11: 31/05/2007 LEZIONE 13 07/06/2005 13/06/2006
  • Tecnica di inserimento ordinato in lista.
  • Tecniche di scansione della lista con un solo puntatore (per eliminazione e inserimento ordinato); eliminazione senza usare Record Generatore
(5) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 5/05/2009 (5) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 6/06/2008 (5) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 5/06/2007 (ex 6) ESERCITAZIONE - 14/06/2005 16/06/2006 Esercitazione autoguidata ea5: gestione di liste concatenate rappresentate mediante record e puntatori.
LEZIONE 12: 6/05/2009 LEZIONE 13: 10/06/2008 LEZIONE 12: 7/06/2007 LEZIONE 8: 25/05/2006 Definizione di algoritmi ricorsivi.
  • Richiami introduttivi sulla definizione di algoritmi ricorsivi.
  • Differenza tra algoritmi iterativi e algoritmi ricorsivi.
  • Esercizi: fattoriale, inversione dell'input fornito da tastiera (discussione).
  • Tecniche di visualizzazione delle attivazioni ricorsive (visualizzazione logica, visualizzazione mediante record di attivazione.
  • Esercizio sulla palindromia.
  • Test di programmi:
    test a scatola nera; test a scatola trasparente. Test top down di programmi composti da varie funzioni.
slides lezione 12
LEZIONE 13: 12/05/2009 LEZIONE 14: 12/06/2008 LEZIONE 13: 8/06/2007 LEZIONE 9: 30/05/2006 Qualita' dei programmi. Corretteza di un programma e sua verifica mediante esecuzione di Test
  • Test di programmi con la tecnica "a scatola nera";
  • Test di programmi con la tecnica "a scatola trasparente";
  • Test top down di programmi composti da varie funzioni.
slides lezione 13
  • Richiami sul concetto di file: file testuali e loro gestione, in C, mediante I/O formattata
  • Introduzione ai file binari in C.
  • Alcuni approfondimenti su file binari: uso di fopen con modi "*b*", fwrite, fread, accesso random mediante fseek.
(6) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 13/05/2009 (6) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 13/06/2008 (6 - ex 4) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 12/06/2007, ex4-26/05/2006 ea6: ricorsione e file binari.
LEZIONE 14: 19/05/2009 LEZIONE 15: 17/06/2008 LEZIONE 14: 14/06/2007, 09/06/2005 15/06/2006
  • Interpretazione induttiva della struttura di lista;
  • Tecniche di gestione di lista mediante algoritmi ricorsivi;
  • Esercizi e tecniche su liste di elementi generici: liste di punti colorati;
  • Definizione di funzioni generali (per costruzione lista da file, gestione, deallocazione;
  • Definizione di funzioni di supporto a quelle generali, dedicate al tipo particolare dei dati memorizzati nella lista.
slides lezione 14
(7) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 20/05/2009 (7) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 20/06/2008 (7) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 19/06/2007, 21/06/2005 23/06/2006 Esercitazione autoguidata ea7: applicazione delle tecniche di gestione delle liste semplici: lite di punti colorati; liste di voli aerei.
LEZIONE 15: 26/05/2009 LEZIONE 16: 19/06/2008 LEZIONE 15: 15/06/2007, 10/06/05, 16/6/2004 22/06/2006 Strutture di dati dinamiche: Alberi binari.
  • Definizione di albero generalizzato e binario. Interpretazione induttiva della struttura di albero.
  • Forma parentetica per la rappresentazione testuale di un albero (caso binario).
  • Rappresentazione di alberi in C (alberi di interi).
  • Visita di un albero: algoritmi di visita in preordine, postordine e simmetrica.
  • Stampa di un albero con output in forma parentetica.
  • Stampa di un albero secondo i tre algoritmi di visita.
  • Introduzione alla costruzione di un albero con lettura da file della forma parentetica.
  • Algoritmodi ricerca in albero binario. Esercizio sul calcolo del numero di occorrenze di un elemento in un albero binario.
LEZIONE 16: 27/05/2009 LEZIONE 17: 24/06/2008 LEZIONE 16: 21/06/2007, 17/06/2005, 17/6/2004 27/06/2006 Approfondimenti sulla struttura dati di albero binario.
  • Costruzione di un albero in memoria a partire dalla rappresentazione parentetica memorizzata in un file.
  • Concetti di livello e di profondita' in una albero.
Alberi di ricerca.
  • Definizione di albero binario di ricerca.
  • Risultato della stampa simmetrica di un albero di ricerca.
  • Algoritmo di ricerca in albero binario di ricerca.
  • Verifica che un albero binario sia "di ricerca". (Funzione per il calcolo del massimo elemento in un albero).
LEZIONE 18: 26/06/2008 LEZIONE 17: 22/06/2007, 29/06/2006, 23/06/05, 23/6/2004
(8) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 03/06/2009 (8) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 27/06/2008 (8) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 26/06/2007, 30/06/2006, 29/6/2004, 28/06/05 esercitazione autoguidata (alberi) ea8 (alberi).
Appuntamento extra per svolgere ESERCITAZIONI AUTOGUIDATE: 09/06/2009
  • esperienza su esercizi tratti dalle ultime esercitazioni autoguidate;
  • uso del sistema BRIDGE per sottomettere il secondo e terzo esercizio obbligatorio
Appuntamento extra per svolgere ESERCITAZIONI AUTOGUIDATE: 10/06/2009
  • esperienza su esercizi tratti dalle ultime esercitazioni autoguidate;
  • uso del sistema BRIDGE per sottomettere il secondo e terzo esercizio obbligatorio

marteATdis.uniroma1.it