Linguaggi (2006/07)
Facoltà di SMFN Varese, Università dell Insubria.

docente: Marco Tarini
orario: aula 2.01 - Martedì ore 16 e Giovedì ore 16.
ricevimento: durante il corso: Merc. ore 11 in dipartimento; dopo la fine del corso: su appuntamento.
modalità esame: prova scritta seguita da prova orale

Lezione 1: Intro (2 Ott) [lucidi: ppt , pdf ]
Intro. Cenni storici sul C. Acluni IDE per C. Caratteristiche del linguaggio ANSI C. Struttura di un programma, definizione di variabili, funzioni, procedure. Passaggio di parametri (per copia). Commenti nei programmi.

Lezione 2: "Hello world!" (4 Ott) [lucidi: ppt , pdf ]
Preprocessore: macro, costrutti condizionali, inclusione di files. Tipi base (built in): tipi interi (con e senza segno). Sintassi dei literals: base 10, 8 e 16, ANSII (per i char), notazione esponenziale (per numeri in virgola mobile). Costrutto typedef. Costrutto sizeof.

Lezione 3: Tipi (10 Ott) [lucidi: ppt , pdf ]
Tipi base in virgola mobile; notazione scientifica per literals. Conversione fra tipi base: automatica (assegnamenti, espressioni miste), manuale (type cast esplicito). (per numeri in virgola mobile). Tipi definiti per enumerazione. Tipi strutturati. Convenzioni comuni nella scelta degli identificatori.

Lezione 4: Vettori e puntatori (12 Ott) [lucidi: ppt , pdf ]
Vettori: dichiarazione, inizializzazione. Puntatori: intro, significato, sintassi della dicharazione, come sono implementati. algebra dei puntatori. Considerazioni sull'efficienza dei puntatori (in lettura, in scrittura). Equivalenza puntatori e vettori. Costrutto di indicizzazione (parentesi [ ]) per i puntatori.

Lezione 5: Puntatori: usi (17 Ott) [lucidi: ppt , pdf ]
Operatori ampersand (&) e freccia (->). Passaggio per copia di parametri che sono puntatori: vari usi. Passaggio di parametri come punatori con l'attributo const. Esempi.

Lezione 6: Controllo di flusso (19 Ott) [lucidi: ppt , pdf ]
Sintassi e semantica (non formalmente) dei costrutti di controllo del flusso: if-then-else, while, do-while, switch-case, goto, break, continue.
Parte 2: Allocazione dinamica [lucidi: ppt , pdf ]
Puntatori: allocazione dinamica, deallocazione. Typecast sui tipi puntatore. Allocazione dinamica di vettori di lunghezza variabile. Paragone in efficienza fra accesso di vettori allocati dinamicamente e staticamente. Differenze fra vettori e puntatori. Esercizio: scoprire quali byte compongono la codifica di un dato "double" o "intero".

Lezione 7: Gestione della Memoria (24 Ott) [lucidi: ppt , pdf ]
Variabili locali e globali: scoping, inizializzazione, storing. Variabili locali statiche. Altre classi di allocazione (cenni). Gestione della memoria da parte del compilatore: area codice, area dati globali, area stack e area heap.
Parte 2: Tipi ricorsivi [lucidi: ppt , pdf ]
Defnizione tipi ricorsivi. Esempio: il tipo "elemento di una lista".

Lezione 8: Operatori ed assegnamenti (26 Ott) [lucidi: ppt , pdf ]
Operatori, espressioni, assegnamenti (più in dettaglio). Left values: definizione e uso. Typecast automatico negli assegnamenti.
Parte 2: Puntatori: caveat [lucidi: ppt , pdf ] Errori tipici nell'uso dei puntatori (es. memory leaks).

Lezione 9: Librerie (7 Nov) [lucidi: ppt , pdf ]
Uso degli headers. Progetti multi-sorgente (cenni all'uso con DevC++). Dichiarazioni vs definizioni di variabili e funzioni. Progetti con sorgenti multipli: condivisione di tipi di dati, funzioni, variabili, costanti, macros fra vari file sorgente. Variabili extern. Variabili globali static e funzioni static.

Lezione 10: Input/Output (9 Nov) [lucidi: ppt , pdf ]
Input/output. Scrittura e lettura formattata: sullo standard I/O, su stringhe, sui file (printf, sprintf, fprintf, scanf, sscanf, fscanf). Significato dei format tags. Argomenti del programma. Esempi di uso funzioni I/O. Operazioni su files: scrittura e lettura diretta, posizionamento.

Esercitazione 1: Progetto ForzaQuattro 1/2 (13 Nov) [progetto C: zip]
Preliminari, strutture dati, esecuzione di una mossa...
Nota: il progetto è una esercitazione in classe e non rientra nelle modalità dell'esame

Esercitazione 2: Progetto ForzaQuattro 2/2 (21 Nov - 14:00 18:00) [progetto C: zip]
Visualizzazione su schermo, check di vittoria, AI (algoritmo min/max).
(esercitazione facoltativa)

Possibili esercizi di preparazione allo scritto:
(da scritti e compitini passati)

su liste:
varie:
lucidi:
testi appelli:
[rtf]
[0:rtf] [1:rtf] [2:rtf] [3:rtf] [4:rtf]
[A:ppt] [B:ppt]
primo: [pdf] (23 Nov 06)
secondo: [pdf] - soluzione [pdf] (30 Gen 07)
terzo: [pdf] - soluzione [pdf] (17 Feb 07)
quarto: [pdf]
quinto: [pdf] (12 Set 07)

varie: IDE: Alcuni ambienti di sviluppo integrati (IDE) per provare i primi progetti in C:
Dev C++ - Per Windows. Free software (GNU GPL). Include gcc. [Note sull' uso: ppt, pdf]
Code::Blocks - Per Windows/Linux. Free software (GNU GPL). Vari compilatori.
Eclipse - con il plugin CDT per il C (e CPP).

Guida on-line: I tratti essenziali del C (le v identificano gli argomenti già trattati a lezione)
Quiz: Cosa significa questo banner?
Curiosità: C offuscato
[Marco Tarini - 2007 - All Right Reserved]