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.