Il Corso
Conoscenze e abilità da conseguire
Al termine del corso, lo studente ha una competenza di base sulla programmazione mediante linguaggio C e sull'analisi di alcuni problemi fondamentali e dei relativi algoritmi risolutori.Programma/Contenuti
Il corso di Programmazione è finalizzato a fornire una forte competenza sulla programmazione dei calcolatori elettronici. Non sono richiesti prerequisiti di tipo informatico. Viene inizialmente fornita una prima descrizione dell'approccio algoritmico alla soluzione di problemi mediante computer. Successivamente, facendo uso del linguaggio C, di cui viene fornita una descrizione dettagliata che prescinde da ogni eventuale competenza pregressa degli studenti, vengono analizzati alcuni problemi fondamentali ed alcuni dei principali e più interessanti algoritmi risolutori.Il linguaggio C
Organizzazione della memoria di un calcolatore, indirizzi, parole, puntatori. Tipi di dato (interi, float, double, char, stringa). Strutture dati (array, matrici, liste, alberi). Il linguaggio C: scopi e principali caratteristiche. La struttura di un programma C, l'inclusione degli header, dichiarazione delle variabili; le librerie. Tipi di dato elementari in linguaggio C: interi, floating point, double, small int, long, char. Puntatori; aritmetica sui puntatori. Array e matrici e loro rappresentazione in memoria. Strutture dati complesse: liste, alberi. Funzioni di libreria e funzioni definite dall'utente. Passaggio di parametri per valore e per indirizzo alle funzioni. Funzioni ricorsive. Funzioni di input/output; funzioni sui file; funzioni per la gestione diretta della memoria; funzioni sulle stringhe.Progetto ed analisi di algoritmi
Tipi di dato; specifica algebrica e implementazione: vettori, liste, pile, code. Algoritmi con strutture dati: costruzione, ricerca e ordinamento in liste; costruzione, ricerca e ordinamento su code e pile. Algoritmi ricorsivi.Testi/Bibliografia
- Kim N. King, Programmazione in C, Apogeo
- Cavalese, Leberatore, Massatti, Programmazione con strutture dati in C, Esculapio (avanzato)
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, Introduction to Algorithms, MIT Press, Cambridge, 1990
- Peter Aitken, Bradley L. Jone, Programmare in C, Apogeo (principianti)
- Dispense distribuite dal docente durante il corso
- Lucidi delle lezioni
Metodi didattici
Didattica frontale, esercitazioni in aula, esercitazioni al computer.Modalità di verifica dell'apprendimento
L'esame consiste di un progetto comprendente esercizi di programmazione da svolgere, consegnare e correggere periodicamente, di una prova scritta e di una prova orale. Il voto finale sarà calcolato valutando il voto dello scritto e quello dell'orale.