Programma Definitivo Programmazione + Laboratorio (Corso B) a.a. 2002/2003 Docente: Antonietta Lanza Modulo1 - Risolvere problemi con il computer: dal problema all'algoritmo Astrazione del processo di calcolo: algoritmo e sue caratteristiche. Riduzione di problemi complessi a sottoproblemi primitivi. Decomposizione di problemi attraverso sequenze, selezioni, relazioni di ricorrenza (iterazione e ricorsione). Principi della programmazione strutturata. Notazioni grafiche e lineari per rappresentare algoritmi. Teorema di BohmJacopini (enunciato). Modulo 2 - Dall'algoritmo al programma Delega della esecuzione di un procedimento di calcolo. Linguaggi a basso e ad alto livello. Linguaggi imperativi. Cenni sulla loro evoluzione. Linguaggi e grammatiche. Forma di Backus-Naur (BNF). Carte sintattiche. Cenni sui compilatori. Modulo 3 - Linguaggi di programmazione: dati e controllo Concetto di tipo di dato. Tipi semplici. Compatibilità ed equivalenza tra tipi di dato. Variabili ed istruzione di assegnazione. Strutture di controllo. Dichiarazioni e campo di azione degli identificatori. Astrazioni funzionali: procedure e funzioni. Tecniche di legame dei parametri. Effetti collaterali in procedure e funzioni. Attivazione dei sottoprogrammi. Ricorsione. Meccanismi di definizione di strutture di dati: trasformazioni finite (array), prodotto cartesiano (record), insieme potenza (set), sequenze (file). Modulo 4 - Linguaggio Pascal Alfabeto. Struttura di un programma. Sezioni dichiarative di costanti, tipi, variabili. Tipi standard: integer, real, boolean, char. Tipi definiti dall’utente. Istruzione di assegnazione ed espressioni. Istruzioni selettive: If, Case. Istruzioni iterative: While, Repeatuntil, For. Procedure e funzioni. Procedure di Input/Output. Array, record , set e file. Modulo 5 - Metodologie di progetto di programmi Metodologie di progetto di programmi. Le qualità di un programma. Approcci top-down, bottom-up, ibrido. Fasi del progetto. Analisi del problema. Scelta della strategia di soluzione. Definizione delle strutture dei dati. Codifica. Documentazione. Testing e debugging di un programma. Classi di equivalenza. Modulo 6 - Algoritmi fondamentali Algoritmi elementari: Scambio, Conteggio, Determinazione del massimo, Sommatoria. Algoritmi su array: Inizializzazione/Lettura/Stampa, Inversione dell’ordine di un array, Ricerca del massimo/minimo, Eliminazione dei doppi, Costruzione di istogramma, Partizionamento, Fusione, Ordinamento (selezione, a bolle, inserzione, Shell, Hoare, Quicksort ricorsivo), Ricerca (sequenziale, ottimizzata, binaria, Hash), Somma di matrici, Prodotto di matrici. Algoritmi ricorsivi. Algoritmi su file: Creazione, Copia, Confronto, Scansione sequenziale, Aggiornamento, Fusione, Conteggio delle linee, Fusione, Ordinamento per fusione naturale. Testi consigliati - C.Batini, L.Carlucci Aiello, M.Lenzerini, A.Marchetti-Spaccamela, Fondamenti di programmazione dei calcolatori elettronici, Franco Angeli Milano - N. Wirth - Principi di programmazione strutturata - ISEDI (UTET Libreria) - K. Jensen, N. Wirth - Pascal (Standard ISO) , Nuova ed. - Jackson Libri (1996) - A. Guidi, N. Renzoni, Pascal - guida alla programmazione, McGrawHill (1999) - D.R.Dromey, Algoritmi Fondamentali, Gruppo Editoriale Jackson, 1989. Modalità d'esame L’esame di Programmazione consiste in: - Prova scritta (*) - Discussione di un progetto, sviluppato in Pascal, su traccia concordata (il progetto varia ad ogni appello, mensilmente la traccia sarà affissa in bacheca al piano terra e sarà consultabile presso http://www.di.uniba.it/people/fanizzi.htm) (**) - Prova orale (***) Sono oggetto delle prove tutti gli argomenti trattati durante il corso. Il programma finale con l’elenco degli algoritmi e le modalità di esame sono consultabili in rete. Durante l’anno sono svolte tre prove in itinere. Le prime due prove si svolgono in aula. Possono accedere alla prima prova le matricole che afferiscono al corso B in base al cognome (dalla H alla R) e che non hanno presentato istanza di cambio per altri corsi e le matricole che hanno presentato istanza di ammissione al corso B. Possono accedere alla seconda prova gli studenti che hanno superato la prima prova. La terza prova si svolge in SILAD. L’accesso alla terza prova è disciplinato come per la prima prova. Il superamento delle prove ha validità durante l’intero anno accademico nel quale sono state svolte. (*) Non sono tenuti a sostenere la prova scritta gli studenti che hanno superato le prime due prove in itinere svolte durante il corso; in tal caso il voto di ammissione all’orale è dato dal voto finale conseguito nelle due prove. (**) Non sono tenuti a sviluppare e discutere il progetto gli studenti che hanno superato la terza prova in itinere svolta durante il corso. (***) Non sono tenuti a sostenere la prova orale gli studenti che hanno superato tutte le tre prove in itinere; in tal caso - Il voto di esame corrisponde alla media dei voti conseguiti nelle tre prove; - Se il voto finale alle due prove in aula è compreso fra 15 e 17 (ammessi con riserva), il voto di esame è 18; - E’ possibile migliorare il voto sostenendo l’orale a Febbraio 2003 oppure in un qualsiasi appello successivo (da Giugno in poi) PREVIA PRENOTAZIONE; - Registrazione dell’esame: 18 febbraio 2003 ore 10 V piano.