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

Lezioni ed esercitazioni svolte

LEZIONE 1: 24/04/2007 LEZIONE 1: 29/04/2008 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 Uso di Puntatori per scandire array. Puntatori restituiti da funzioni e usati come parametri (PRIMA.C).
LEZIONE 3: 03/05/2007 LEZIONE 3: 06/05/2008 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 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)
(1) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 08/05/2007 (1) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 09/05/2008 Prima esercitazione autoguidata.
LEZIONE 5: 10/05/2007 LEZIONE 5: 13/05/2008 lezione breve per cause di forza maggiore
  • 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
LEZIONE 6: 15/05/2008 LEZIONE 6: 11/05/2007
  • 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.
(2) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 15/05/2007 (2) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 16/05/2008 Seconda esercitazione autoguidata.
LEZIONE 7: 17/05/2007 LEZIONE 7: 20/05/2008
  • 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).
LEZIONE 8: 22/05/2008 Esercizio Gestione Voli (ea3).
(3) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 23/05/2008 (3) ESERCITAZIONE AUTOGUIDATA IN LABORATORIO: 22/05/2007 Esercitazione autoguidatata ea3 (gestione voli).
LEZIONE 9: 27/05/2008 LEZIONE 10: 26/05/2005, 01/06/2006 LEZIONE 8: 18/05/2007 Introduzione alle strutture di dati dinamiche con la rappresentazione dell'ADT LISTA;

(Da qui in poi si usa ANCHE il libro di Calvanese et.al)

  • rappresentazione mediante array (cenni);
  • rappresentazione mediante struct e puntatori);
  • operazioni fondamentali: testaLista(), testListaVuota(), cancellaPrimo(), restoLista();
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:
  • scansione (con stampa) di una lista.
  • inserimento in testa (insTestaLista());
  • costruzione di una lista di n nodi con inserimento in testa;
  • Tecnica del record generatore.
  • Costruzione di una lista mediante inserimento in coda.
slides lezione 10.
(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). (fino al 2006 era ea5).
LEZIONE 11: 3/06/2008 LEZIONE 12 03/06/05 08/06/2006 LEZIONE 10: 25/05/2007 Lezione su liste concatenate:
  • 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.
LEZIONE 12: 5/06/2008 LEZIONE 11: 31/05/2007 LEZIONE 13 07/06/2005 13/06/2006
  • Funzione di eliminazione di un elemento da una lista.
  • Tecnica di inserimento ordinato in lista.
  • Tecniche di scansione della lista con un solo puntatore (per eliminazione e inserimento ordinato)
(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 13: 10/06/2008 LEZIONE 12: 7/06/2007 LEZIONE 8: 25/05/2006
  • 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.

  • Richiami introduttivi sulla definizione di algoritmi ricorsivi.
  • Differenza tra algoritmi iterativi e algoritmi ricorsivi.
LEZIONE 14: 12/06/2008 LEZIONE 13: 8/06/2007 LEZIONE 9: 30/05/2006 Approfondimenti sulla definizione di 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 14
(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 15: 17/06/2008 LEZIONE 14: 14/06/2007, 09/06/2005 15/06/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 15
LEZIONE 16: 19/06/2008 LEZIONE 15: 15/06/2007, 10/06/05, 16/6/2004 22/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 16
(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 17: 24/06/2008 LEZIONE 16: 21/06/2007, 17/06/2005, 17/6/2004 27/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 18: 26/06/2008 LEZIONE 17: 22/06/2007, 29/06/2006, 23/06/05, 23/6/2004 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).
(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).

marteATdis.uniroma1.it