Paolo Boldi

Programmazione (Master in Elettronica e Sistemi Digitali)

Indice

  1. Avvisi
  2. Programma del corso
  3. Testi delle esercitazioni proposte
  4. Testi consigliati
  5. 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}.

  1. 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.
  2. 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.
  3. Introduzione all'uso di Linux: window manager, file system, editor {IGL}
  4. Algoritmi {PrI 3 e 4}
    • Variabili: nome, tipo, valore.
    • Istruzioni di I/O.
    • Assegnamenti ed espressioni.
    • Sequenza.
    • Selezione binaria.
    • Cicli.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. Controllo di flusso (seconda parte)
    • Istruzioni break e continue.
    • Lo switch.
    • L'operatore ternario.
    • Gli operatori logici. Valutazione eager e lazy.
  10. Funzioni
    • Definizione.
    • Istruzione return.
    • Parametri formali e parametri attuali.
    • Prototipi.
    • Regole di visibilità.
    • Variabili esterne e locali.
    • Variabili statiche.
  11. Array
    • Array monodimensionali.
    • Puntatori.
    • Passaggio di array a funzioni.
    • Aritmetica dei puntatori.
    • Array multidimensionali e frastagliati.
    • Allocazione dinamica (malloc() e free()): cenni.
  12. Stringhe
    • Stringhe.
    • Funzioni di libreria per le stringhe.
    • Array di stringhe.
    • Uso di typedef.
  13. Input/output
    • Funzione printf().
    • Funzione scanf().
  14. 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.
  15. Input/output
    • File di testo e funzioni relative.
    • Altri file.
  16. Ancora sui tipi
    • Tipi enumerativi.
    • Tipi struttura.
    • Tipi union.
    • Passaggio di parametri.
  17. Il preprocessore
    • Macro con parametri.
    • Compilazione condizionale.
    • Asserzioni.
    • Altre direttive del preprocessore.

Testi delle esercitazioni proposte

Testi consigliati

Libro di testo
Materiale aggiuntivo (parte del programma)

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.