Programma del corso di Programmazione A.A.2006-2007 Dott.ssa Sabrina Mantaci Introduzione al corso di Programmazione. Cenni sull’Architettura del calcolatore. Risoluzione dei problemi tramite un calcolatore. La nozione di Algoritmo. Esempi di algoritmi. Complessità di un algoritmo. I linguaggi di Programmazione. Il paradigma dichiarativo e il Paradigma Imperativo. I principi della Programmazione strutturata. Il teorema di Boem-Jacopini. I costrutti di sequenza, selezione e iterazione. Equivalenza di cicli. Struttura di un programma in Pascal. Intestazione, sezione dichiarativa e corpo del programma. Identificatori. Programmi di output. Le costanti (const). Le variabili. (var) Dichiarazione e assegnazione. Tipi di variabili standard non strutturate. Il tipo Integer. La rappresentazione degli interi e degli interi relativi in binario. Il tipo char. Rappresentazione dei caratteri. Il codice ASCII e altri codici di caratteri. Il tipo boolean. Connettivi logici. Espressioni logiche. Il tipo real. I costrutti di selezione. Il costrutto di selezione If… then… else.il costrutto di selezione case…of. I costrutti di iterazione: Il costrutto di iterazione for. Il costrutto di iterazione while-do. Il costrutto di iterazione repeat-until. Equivalenza dei costrutti di iterazione. Il tipo strutturato array. Array a una dimensione. Applicazioni. Codici per l’inserimento e la visualizzazione degli array. Somma e Prodotto scalare degli array. Array a piu dimensioni. Matrici. Inserimento e visualizzazione di una matrice. Prodotto di Matrici. Tipi definiti dal programmatore (type) Il tipo string. Procedure e funzioni del tipo string. Sottoprogrammi. Procedure. Regole per il passaggio dei parametri. Funzioni. Esempi di procedure e funzioni. Regole di visibilità delle variabili. L’esecuzione dei programmi con chiamate di procedure e funzioni. Il funzionamento della memoria stack. La ricorsione. Funzioni ricorsive. Il fattoriale. Procedure ricorsive. Il problema delle torri di Hanoi. Il problema della ricerca (searching): Ricerca lineare e ricerca binaria iterativa Ricerca lineare e ricerca binaria ricorsiva. Il problema dell’ordinamento(sorting): Definizione del problema. Teorema del lower bound per il sorting. Algoritmi di sorting iterativi: Selectionsort e Bubblesort. Algoritmi di sorting ricorsivi: il Quicksort e il Mergesort. Algoritmi di sorting non basati su confronti. Il Countingsort. I record. Puntatori e liste. Definizione del tipo puntatore. Definizione formale di lista. Liste concatenate. Costruzione di una lista concatenata. Inserimento, cancellazione e ricerca di un elemento in una lista.