Seduta |
Materiali base |
Materiali
aula |
Data |
Durata |
Argomenti
coperti - Note |
1 |
I
tag HTML Algoritmi (solo slides da 2 a 4) |
Esempi
HTML |
12
marzo |
3 ore |
Panoramica su HTML ed il suo
impiego nel Web. Presentazione dei principali tag HTML e dimostrazione del loro uso e dei loro effetti. Un esempio di definizione di algoritmo e pseudocodice: ricerca del massimo fra N numeri. |
2 |
Commento e approfondimento di esempi di semplici programmi in C tratti dalle slides delle lezioni: | ||||
Tipi
(parte III/2) (solo slides 6, 8, 11, 26) Struttura dei programmi C (solo slides 12, 13sinistra, 14, 15, 39destra, 40, 41, 42, 43sinistra) |
- |
22 marzo |
2 ore |
Divisione intera e modulo. Effetto precedenze tra operatori; parentesi Effetti degli operatori di preincremento/postincremento e simili. Valutazione di espressioni logiche I/O di numeri in dec/hex/ottale Utilizzo di scanf per la lettura di valori da tastiera Costrutto if.. else semplice e nidificato; legame tra else e il più vicino if; uso delle parentesi graffe per imporre la struttura desiderata nei casi confusi Uso di variabili int e float Perdita di decimali nella divisione intera; uso di variabili float Cicli while a condizione iniziale La slide 42 contiene un errore: quale? Verifica della primalità di un numero - moltiplicazione per somme ripetute |
|
3 |
Ancora su HTML: pagina esempio |
5 aprile |
2 ore |
Il tag TITLE: suo effetto e
necessità di accompagnarne l'uso con i tag <HTML>,
<HEAD>, <BODY> |
|
Analisi e modifica di alcuni
programmi C che evidenziano aspetti particolari: |
|||||
Tavola
pitagorica |
cicli for, gets, atoi; struttura
if; effetto del carattere \t e suo uso per ottenere tabelle regolari;
come ottenere un ciclo while "perpetuo"; utilizzo dell'istruzione break
per uscire prematuramente dal ciclo |
||||
Tavola pitagorica - 2 | Rielaborazione dello stesso
programma con decomposizione in funzioni per aumentare la
leggibilità del sorgente e in particolare della funzione main. Necessità di dichiarare le funzioni prima del punto in cui vengono utilizzate per la prima volta. Eventuali errori del compilatore in caso di violazione di questa regola. |
||||
Convertitore
di formato hex-oct-dec-bin |
visualizzazione di un menu;
lettura opzione scelta; organizzazione del programma con struttura
if-else if-else if-else; estrazione e visualizzazione dei bit da un
numero intero mediante l'uso degli operatori bitwise e degli operatori
di scorrimento a sinistra e a destra; utilizzo dell'istruzione return
per interrompere prematuramente l'esecuzione di una funzione |
||||
Convertitore di formato hex-oct-dec-bin (2) | Versione modificata dello stesso
programma: la struttura if-else if-else if-else, poco leggibile,
è stata sostituita con una più chiara struttura switch a
3+1 rami. |
||||
Struct e union |
Differenza di filosofia e di
effetto dell'uso di struct e union; strutture che contengono strutture;
strutture che contengono strutture e union; progetto di una struttura
dati: criteri di scelta dell'uno o dell'altro costruttore di tipo in
funzione del tipo di dati da trattare. Esempi semplici: dati personali,
dati personali con sottostruttura, numeri, un esempio completo:
modellizzazione autoveicoli. Accompagnamento delle union con un campo
descrittore ("tag") per renderne possibile una corretta interpretazione
da parte del codice ricevente. |
||||
Manipolazione
bitmask |
Sinossi degli operatori
disponibili; visualizzazione dell'effetto dell'applicazione di maschere
in AND e in OR e degli scorrimenti sinistro e destro. |
||||
Funzioni
strcmp, strcat, strcpy, strlen |
Esempio dell'uso (e
dell'effetto) di queste funzioni Presentazione di una loro possibile implementazione equivalente a quella della libreria standard: mystrcmp, mystrlen, mystrcat, mystrcpy |
||||
4 |
Soluzione commentata dei due
temi della I prova in itinere. Tema
A, Tema
B. |
10 maggio |
3 ore |
Errori più comuni, esempi
di soluzione, osservazioni. |
|
Analisi di programmi generici di
complessità da bassa a media (parte 1 - parte 2) Argc e argv |
Sorgenti dei programmi esaminati: Varianti Hello, World: 1, 2, 3, 4, 5 Inversione stringa Conteggio parole e frequenze caratteri: 1, 2 |
Utilizzo di argv e argc nel
main(..) del programma per ricevere argomenti dalla riga di comando. Numerazione degli argomenti ricevuti. Il significato particolare di argv[0]. Controllo della presenza di argomenti nella quantità attesa. Scansione di stringhe e generazione di statistiche. Utilizzo di array per immagazzinare una batteria di contatori. |
|||
5 |
Realizzazione e
discussione di programmi (con accesso ai files) equivalenti ad alcuni
comandi di MS-DOS (type, copy). Listati base: mytype, mycopy. Programma Archivio Programma per conversione numeri arabi in numeri romani - listato |
Variante
modificata di mytype.c Crypt.c (cifratura e decifratura controllate da parametri) Decrypt.c (solo decifratura, offset fisso) |
14 giugno |
2 ore |
Analisi e rielaborazione di
semplici programmi con accesso sequenziale a files di testo. istruzioni di apertura e chiusura file in lettura, in scrittura con file esistente, in scrittura con creazione del file; rilevamento e gestione degli errori in apertura del file; chiusura file; i/o (a carattere) da/verso file; output a carattere su schermo; input (di stringhe) da file con fgets; copiatura di un file su un altro; visualizzazione del contenuto di un file di testo esistente; manipolazione del contenuto di un file (conteggio linee, ricerca caratteri, cifratura e decifratura..) gestione di diversi parametri su riga di comando, argc/argv programma Archivio con funzioni di aggiunta, ricerca ed visualizzazione dell'elenco completo cenno all'utilizzo della funzione fseek per posizionarsi a fine file programma Conversione da numeri arabi a numeri romani (if, divisione intera, modulo, analisi caratteri,..) |
6 |
Le liste singole e doppie.
Teoria ed esempi pratici. Documentazione |
Frammenti di codice |
21 giugno |
2 ore |
I frammenti di codice allegati
si riferiscono ad alcuni degli esempi dettagliatamente discussi a
esercitazione: Esempio di dichiarazione di nodo di lista singola con campo informativo di tipo intero Esempio di dichiarazione di puntatore alla testa della lista Algoritmo astratto per inserimento di un nodo in una lista Creazione e inserimento di un nuovo nodo in seconda posizione in lista singola con utilizzo di variabile temporanea Creazione e inserimento di un nuovo nodo in seconda posizione in lista singola senza utilizzo di variabile temporanea Rimozione di secondo nodo da lista singola Inserimento di nuovo nodo in seconda posizione in lista doppia Rimozione secondo nodo da lista doppia Accesso al campo informativo del terzo nodo di una lista singola o doppia Lettura da tastiera del campo informativo di tipo intero del secondo nodo di una lista doppia di tre elementi Lettura da tastiera del campo informativo di tipo stringa del primo nodo di una lista singola o doppia |