Obiettivi formativi:
| Questo insegnamento ha lo scopo di illustrare i principi di base, le tecniche e gli strumenti della programmazione di applicazioni informatiche, attraverso la presentazione dei concetti tipici della programmazione procedurale. |
Settori scientifico-disciplinari:
| INF/01, ING-INF/05. |
Crediti:
| 7. |
Modulo:
| Unico. |
Durata:
| Semestrale (primo periodo), 72 ore (40 di lezione frontale + 32 di esercitazione guidata). |
Frequenza:
| Non sono previsti obblighi di frequenza. |
Docente:
| Prof. Marco Bernardo. |
Programma:
|
01. Introduzione alla programmazione degli elaboratori: 01.01 Definizioni di base dell'informatica. 01.02 Cenni di storia dell'informatica. 01.03 Architettura degli elaboratori. 01.04 Sistemi operativi. 01.05 Linguaggi di programmazione e compilatori. 01.06 Una metodologia di sviluppo software "in the small". 02. Introduzione al linguaggio ANSI C: 02.01 Cenni di storia del C. 02.02 Formato di un programma con una singola funzione. 02.03 Inclusione di libreria. 02.04 Funzione main. 02.05 Identificatori. 02.06 Tipi di dati predefiniti: int, double, char. 02.07 Funzioni di libreria per l'input/output interattivo. 02.08 Funzioni di libreria per l'input/output tramite file. 03. Costanti, variabili ed espressioni: 03.01 Definizione di costante simbolica. 03.02 Dichiarazione di variabile. 03.03 Operatori aritmetici. 03.04 Operatori relazionali. 03.05 Operatori logici. 03.06 Operatore condizionale. 03.07 Operatori di assegnamento. 03.08 Operatori di incremento/decremento. 03.09 Operatore virgola. 03.10 Espressioni aritmetico-logiche. 03.11 Precedenza e associatività degli operatori. 04. Istruzioni: 04.01 Istruzione di assegnamento. 04.02 Istruzione composta. 04.03 Istruzioni di selezione: if, switch. 04.04 Istruzioni di ripetizione: while, for, do-while. 04.05 Istruzione goto. 04.06 Teorema fondamentale della programmazione strutturata. 05. Funzioni: 05.01 Formato di un programma con più funzioni su singolo file. 05.02 Dichiarazione di funzione. 05.03 Definizione di funzione e parametri formali. 05.04 Invocazione di funzione e parametri effettivi. 05.05 Istruzione return. 05.06 Parametri e risultato della funzione main. 05.07 Passaggio di parametri per valore e per indirizzo. 05.08 Funzioni ricorsive. 05.09 Modello di esecuzione a pila. 05.10 Formato di un programma con più funzioni su più file. 05.11 Visibilità degli identificatori locali e non locali. 06. Tipi di dati: 06.01 Classificazione dei tipi di dati e operatore sizeof. 06.02 Tipo int: rappresentazione e varianti. 06.03 Tipo double: rappresentazione e varianti. 06.04 Funzioni di libreria matematica. 06.05 Tipo char: rappresentazione e funzioni di libreria. 06.06 Tipi enumerati. 06.07 Conversioni di tipo e operatore di cast. 06.08 Array: rappresentazione e operatore di indicizzazione. 06.09 Stringhe: rappresentazione e funzioni di libreria. 06.10 Strutture e unioni: rappresentazione e operatore punto. 06.11 Puntatori: operatori e funzioni di libreria. 07. Correttezza dei programmi: 07.01 Triple di Hoare. 07.02 Determinazione della precondizione più debole. 07.03 Verifica della correttezza di programmi iterativi. 07.04 Verifica della correttezza di programmi ricorsivi. 08. Attività di laboratorio: 08.01 Sessione di lavoro in Linux. 08.02 Accesso ad Internet in Linux. 08.03 Gestione dei file in Linux. 08.04 L'editor gvim. 08.05 Il compilatore gcc. 08.06 L'utility di manutenzione make. 08.07 Il debugger gdb. 08.08 Implementazione dei programmi introdotti a lezione. |
Testi di riferimento:
|
(Kernighan, Ritchie, "Il Linguaggio C", Prentice Hall, 2004). |
Propedeuticità:
| Logica Matematica, Matematica Discreta. |
Modalità didattiche:
| Lezioni frontali ed esercitazioni di laboratorio (materiale didattico). |
Modalità di accertamento:
| Progetto individuale, prova scritta e prova orale (prove d'esame). |
Commissione d'esame:
| Prof. Marco Bernardo e Dott. Alessandro Aldini (supplente: Ing. Edoardo Bontà). |
Note:
|
Il progetto individuale, da consegnare almeno 10 giorni prima della prova scritta, è ritenuto
sufficiente se il relativo voto, che rimane valido per tutti gli appelli, è di almeno 18/30. In caso
di consegna tardiva, viene applicata una penale di 3/30 per ogni giorno di ritardo. Qualora il progetto
venga riconsegnato in un appello successivo, il voto del progetto precedentemente consegnato viene
annullato. Se la riconsegna avviene nella medesima sessione, al voto del nuovo progetto consegnato viene
applicata una penale di 5/30. La prova scritta, che può essere sostenuta solo previo superamento del progetto, è ritenuta sufficiente se il relativo voto, che rimane valido per il solo appello in cui la prova viene sostenuta, è di almeno 18/30. La prova orale, che può essere sostenuta solo previo superamento delle altre due prove, comporta un aggiustamento per eccesso o per difetto di al più 5/30 della media aritmetica dei voti delle altre due prove, determinando così il voto finale. |
| Ultima modifica: 06/10/2009 | Approvato da: Presidente CCdL |