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.