Programma del corso di Programmazione
Docente: Dott.ssa S. Mantaci
A.A.2006-2007

La nozione di Algoritmo. Differenze tra Algoritmo e Programma. Valutazione della
“bonta’” di un algoritmo mediante la sua analisi. Esempi Classici. L’algoritmo di Euclide.

Una breve storia dei linguaggi di programmazione. I Paradigmi di Programmazione. Il
paradigma dichiarativo (programmazione logica, programmazione funzionale) e il
paradigma imperativo (programmazione strutturata e programmazione ad oggetti). La
programmazione strutturata. Il teorema di Boem-Jacopini: I costrutti di sequenza, selezione
e iterazione. Equivalenza dei costrutti iterativi.

Struttura di un programma in Pascal. Intestazione, sezione dichiarativa e corpo del
programma. Identificatori. Programmi di output. Le costanti e le variabili. Assegnamento di
un valore a una variabile. Programmi di input e output.

Il tipo Integer. Il sistema binario. Rappresentazione degli interi positivi nel sistema binario.
Conversione di un numero da binario a decimale e viceversa. Operazioni, funzioni e
operatori di confronto fra interi. Programmi con immissione di dati.

Il tipo boolean. Connettivi logici. Il costrutto di selezione if…then… else.

Il tipo char. Rappresentazione binaria di caratteri.Il codice ASCII, EBCDIC, UNICODE.

Il tipo real. Rappresentazione di un numero reale.

Il costrutto di selezione a più vie: case..of. Il costrutto di iterazione con contatore: il ciclo
for. Applicazioni. I costrutti di iterazione While e repeat-until.

Array a una dimensione. Gestione degli array. Ricerca lineare. Il problema
dell’ordinamento.

Gli algoritmi di sorting. Il selection-sort. Analisi del selection-sort. Il bubblesort. Analisi del
bubblesort. Ricerca binaria su un vettore ordinato. Algoritmi di sorting stabili. Il counting
sort. Le matrici. Applicazioni.

Il tipo sting. Operazioni su stringhe.

Sottoprogrammi, procedure. Parametri formali e parametri attuali. Passaggio di parametri
per valore e per indirizzo. Esempi di procedure. . Funzioni in Pascal.

La ricorsione e il principio di induzione. Funzioni e procedure ricorsive. Le funzioni
fattoriale, esponenziale e Fibonacci. Esempi classici di procedure ricorsive. Il problema
delle Torri di Hanoi. Complessità del problema. Un algoritmo di ordinamento ottimale:il
Mergesort. Complessità del mergesort. Un altro algoritmo di ordinamento ricorsivo: il
Quicksort.

Tipi definiti dal programmatore: Record, tipo enumerativo, tipo subrange. Utilizzo ed
esempi. Il tipo puntatore. Le liste concatenate. Operazioni di dizionario su liste. Pile e code.
Implementazione di pile e code mediante array. Implementazione di pile e code mediante
liste concatenate. Valutazione di un’espressione in forma postfissa mediante una pila.