Programma Definitivo
Programmazione + Laboratorio (Corso A) a.a. 2002/2003
Docente: Laura Caponetti
Risolvere problemi con il computer: dal problema all'algoritmo
Problem solving: algoritmi e programmi. Notazioni grafiche per esprimere
algoritmi: grafi di flusso.
Notazioni lineari per esprimere algoritmi: linguaggio naturale
strutturato. Programmazione strutturata.
Enunciato del teorema di Bohem-Jacopini. Decomposizione di problemi in
sottoproblemi: albero di
decomposizione funzionale.
[Testo 1, introduzione].
Dall'algoritmo al programma
Linguaggi di programmazione: basso ed alto livello. Linguaggi imperativi.
Cenni sulla loro evoluzione.
Linguaggi e grammatiche. Sintassi dei linguaggi di programmazione.
Diagrammi sintattici. Cenni sui
compilatori.
[Testo1, capitolo 1].
Linguaggi di programmazione: dati e controllo
Dati: tipi di dato e rappresentazioni. Tipi semplici. Compatibilità ed
equivalenza tra tipi di dato. Variabili ed
istruzione di assegnazione. Strutture di controllo di base. Astrazioni
funzionali, procedure e funzioni.
Dichiarazioni e campo di azione degli identificatori. Tecniche di legame
dei parametri. Effetti collaterali in
procedure e funzioni. Implementazione di procedure e funzioni. Ricorsione.
[Testo 1, capitolo 2].
Linguaggio Pascal
Alfabeto. Costanti, tipi,variabili, etichette. Dichiarazioni. Tipi
semplici: integer, real, boolean, char. Tipi
subrange ed enumerativo. Istruzione di assegnazione ed espressioni.
Operatori di relazione. Operatori
booleani. Selezione: istruzioni condizionali If, Case. Strutture
iterative: While, Repeat, For. Procedure e
funzioni: dichiarazione, parametri formali, attivazione e parametri
attuali. Array, array compattati, stringhe.
Prodotto cartesiano e record. File: operatori get, put, reset, rewrite.
Text file. Procedure di Input/Output:
Read, Readln, Write, Writeln.
[Testo 2].
Metodologie di programmazione
La qualità di un programma. Principi di progetto. Metodologie di progetto:
top-down e bottom-up. Criteri di
modularizzazione: coesione ed accoppiamento. Programmazione in grande e
programmazione in piccolo.
La documentazione. Una metodologia di progetto: Analisi dei requisiti,
scelta della strategia di soluzione,
definizione delle strutture dei dati, codifica in un linguaggio. Analisi
di programmi: correttezza,
classificazione degli errori. Test di un programma: metodi basati sulle
specifiche.
[Testo 1, capitoli 4,5].
Algoritmi fondamentali
Algoritmi elementari: scambio dei valori di due variabili, conteggio,
sommatoria di un insieme di numeri,
calcolo del fattoriale, conversione da caratteri a numeri in base 10,
massimo comun divisore di 2 interi,
calcolo di un numero di Fibonacci. Algoritmi su array: inversione
dell’ordine di un array, costruzione di
istogrammi mediante array, ricerca del valore massimo, rimozione di valori
duplicati, fusione di due array
ordinati, ordinamento per selezione e bubble sort, ricerca lineare e
binaria. Algoritmi su file di testo:
modifica della lunghezza delle linee, allineamento dei margini. Algoritmi
su file tipizzati: creazione di un file
di record, inserimento di un record, cancellazione di un record, ricerca
di un record, ordinamento secondo
un campo. Algoritmi ricorsivi: fattoriale, mergesort.
[Testi 1, 2].
Testi consigliati
1 C.Batini, L.Carlucci Aiello, M.Lenzerini, A.Marchetti-Spaccamela,
Fondamenti di programmazione dei
calcolatori elettronici, Franco Angeli Milano
2 J. Bishop, Pascal - Corso di Programmazione, Addison-Wesley
Riferimenti bibliografici
3 D.R.Dromey, Algoritmi Fondamentali, Gruppo Editoriale Jackson
4 Welsh, Elder, Introduction to Pascal, Prentice-Hall