Programmazione (Master in Elettronica e Sistemi Digitali)
Indice
- Avvisi
- Programma del corso
- Testi delle esercitazioni proposte
- Testi consigliati
- Ricevimento studenti
Programma di massima del corso
Il corso di Programmazione sarà tenuto da Paolo Boldi e Massimo Santini, secondo il seguente programma. Il materiale didattico indicato nel corso del testo tra parentesi graffe fa riferimento alle sigle il cui significato è indicato nella sezione sui testi consigliati per il corso; le parti per le quali non è indicato un riferimento specifico si possono trovare su {K & R}.
- Introduzione {PrI 1 e 2}
- Computer.
- Hardware e software.
- Macchina di von Neumann.
- Algoritmi e programmi.
- Linguaggi: sintassi e semantica.
- Linguaggi di programmazione: linguaggi ad alto livello e linguaggio macchina.
- Dal programma in linguaggio ad alto livello al programma eseguibile: editor, compilatore, linker, interprete, debugger. Gli IDE.
- Rappresentazione dell'informazione {FdI}
- Memoria, bit, byte.
- Rappresentazioni posizionali (binaria, ottale, esadecimale).
- Rappresentazione dei naturali.
- Rappresentazione degli interi: modulo/segno, complemento a due.
- Rappresentazione dei reali: fixed-point e floating-point.
- Rappresentazione dei caratteri: US-ASCII, ISO-8859-1(5), Unicode.
- Introduzione all'uso di Linux: window manager, file system, editor {IGL}
- Algoritmi {PrI 3 e 4}
- Variabili: nome, tipo, valore.
- Istruzioni di I/O.
- Assegnamenti ed espressioni.
- Sequenza.
- Selezione binaria.
- Cicli.
- Introduzione ai programmi C
- Primo programma in C.
- Compilazione ed esecuzione.
- Tokenizzazione e whitespace.
- Tipi di token. Sintassi degli identificatori.
- Direttive #define e #include. Precompilatore, linker e librerie.
- Espressioni intere. Introduzione all'I/O
- Breve introduzione a printf e scanf.
- Il tipo int.
- Operatori e loro significato.
- Priorità e associatività.
- Espressioni: tipo, valore, effetti collaterali.
- Operatori con effetti collaterali.
- Altri tipi di dati fondamentali
- Tipi short, long. Modificatore unsigned.
- Tipi float e double.
- Promozione implicita.
- Casting.
- Il tipo char e la sua relazione con gli interi. Le funzioni getchar() e putchar().
- Funzioni matematiche. Uso delle librerie.
- Controllo di flusso (prima parte)
- Operatori relazionali.
- Istruzioni semplici e istruzioni composte.
- Blocchi.
- Uso dell'if. Problema del dangling else.
- Uso del while.
- Uso del do-while.
- Uso del for.
- Controllo di flusso (seconda parte)
- Istruzioni break e continue.
- Lo switch.
- L'operatore ternario.
- Gli operatori logici. Valutazione eager e lazy.
- Funzioni
- Definizione.
- Istruzione return.
- Parametri formali e parametri attuali.
- Prototipi.
- Regole di visibilità.
- Variabili esterne e locali.
- Variabili statiche.
- Array
- Array monodimensionali.
- Puntatori.
- Passaggio di array a funzioni.
- Aritmetica dei puntatori.
- Array multidimensionali e frastagliati.
- Allocazione dinamica (malloc() e free()): cenni.
- Stringhe
- Stringhe.
- Funzioni di libreria per le stringhe.
- Array di stringhe.
- Uso di typedef.
- Input/output
- Funzione printf().
- Funzione scanf().
- Ricorsione
- Record di attivazione.
- Funzioni ricorsive con esempi.
- Relazioni fra regole di visibilità e record di attivazione.
- Passaggi per valore e passaggi per variabile: discussione.
- Input/output
- File di testo e funzioni relative.
- Altri file.
- Ancora sui tipi
- Tipi enumerativi.
- Tipi struttura.
- Tipi union.
- Passaggio di parametri.
- Il preprocessore
- Macro con parametri.
- Compilazione condizionale.
- Asserzioni.
- Altre direttive del preprocessore.
Testi delle esercitazioni proposte
- 22 novembre 2005: testo PDF
- 29 novembre 2005: testo PDF
- 5 dicembre 2005: testo PDF
- 13 dicembre 2005: testo PDF
- 20 dicembre 2005: testo PDF
- 10 gennaio 2006: testo PDF
- 17 gennaio 2006: testo PDF
- 24 gennaio 2006: testo PDF
- 31 gennaio 2006: file zip contenente i sorgenti
- 9 febbraio 2006: testo PDF
Testi consigliati
- [K&R] Il libro di testo adottato per la parte di programmazione del corso è: "Il linugaggio C", di Brian Kernighan e Dennis M. Ritchie, edito da Pearson Education Italia, Milano (ISBN: 887192200X). Esiste l'homepage del libro con relativa errata corrige.
- [PrI] Per la prima parte del corso potete fare riferimento alle prime quattro lezioni del corso di "Programmazione I" di Giovanni Pighizzini.
- [FdI] Per la parte sulla rappresentazione dell'informazione potete fare riferimento alla dispensa "Appunti sulla rappresentazione dell'informazione" del corso "Fondamenti di Informatica" di Roberto Beraldi.
- [IGL] Per la parte di laboratorio relativa a GNU/Linux potete fare riferimento alle sezioni uno e due dei miei appunti "Introduzione a GNU/Linux".
Ricevimento studenti
Il docente riceve il giovedì, dalle ore 13.30 alle ore 14.30, nel suo studio di Via Comelico, 39/41 (II piano), su appuntamento. Un appuntamento può essere fissato a lezione, oppure inviando una mail al docente e attendendo una risposta di conferma.