Seduta |
Data | Durata | Materiali base |
Materiali
aula |
Argomenti
coperti - Note |
1 |
22 marzo | 2 ore | Algoritmi_Eserc.pdf | Dall'algoritmo al programma:
esempi di passaggio dall'algoritmo formulato in linguaggio naturale
allo pseudocodice al codice vero e proprio. Discussione dell'uso di
dichiarazioni, variabili, espressioni, costrutti condizionali (if) e
iterativi (while) |
|
2HWorld 3HWorld 4HWorld 5HWorld |
prova |
Primi semplici programmi.
Direttiva #include,
la funzione main,
valori di ritorno e parametri argc e argv.
Istruzione return. Utilizzo dei parametri passati su riga di comando. Significato di argc e contenuto del vettore argv. Controllo della presenza e del numero di parametri su riga di comando. Emissione di messaggi su console. funzione printf. Il carattere newline (\n). Parametri richiesti in modo interattivo. funzione gets. Effetti sul programma della mancanza di parametri attesi su riga di comando. |
|||
prog2 |
Conversioni di formato fra
decimale, ottale, esadecimale e binario. Funzione scanf. Uso e significato (sia in printf, sia in scanf) dei qualificatori %d, %x, %o. Estrazione e stampa delle cifre binarie di un numero intero mediante shift sinistri e destri (<<, >>) e AND bitwise (&) con maschere opportune. |
||||
2 |
19 aprile |
3 ore |
HTML tags | Compendio, organizzato per
categorie, dei principali tag HTML oggetto di approfondimento nel
secondo laboratorio. |
|
prove.cpp prove2.cpp prove4.cpp |
|
||||
Strutture e union |
Descrizione del criterio per
usare l'uno o l'altro costrutto in situazioni reali di modellizzazione. |
||||
Bitmask | Visualizzazione del
funzionamento degli operatori di shift sinistro e destro (e
corrispondente significato aritmetico: prodotto o divisione per potenze
di due), degli operatori OR, AND e XOR bitwise. Ruolo delle "maschere",
loro impiego, modo di definirle come necessario. Tecnica per
"l'estrazione" dei bit che interessano. Tecnica per impostare i bit che
interessano. Tecnica per azzerare i bit desiderati. |
||||
3 |
31 maggio |
4 ore |
Bitmask
(ripasso) |
Come sopra |
|
Tecniche
di manipolazione di stringhe REVERSE.C CONTPAR.C |
inverti.c |
Vari modi di implementare un
ciclo di scansione stringa (l'esempio riguarda una reimplementazione
della funzione di libreria strlen). Vari esempi di notazioni compatte e
ultracompatte per la condizione di controllo di fine ciclo
(localizzazione del carattere '\0' di fine stringa). Inversione del contenuto di una stringa. Come verificare se una stringa e' una palindrome (per es.: "RADAR") |
|||
prova.c cerca.c |
Analisi di una stringa: ricerca
di un carattere all'interno della stringa; conteggio delle ricorrenze
dei caratteri (invocando ripetutamente la funzione cerca(...) oppure
sfruttando direttamente un array per immagazzinare i contatori);
conteggio delle vocali (indifferentemente minuscole e maiuscole) nella
stringa; criterio ed algoritmo per il conteggio delle parole in una
stringa. Condizioni booleane articolate con or logico (||) e and logico
(&&) impiegate in un costrutto if. Utilizzo di funzioni separate per strutturare il programma in modo chiaro. |
||||
Conversione da numeri decimali a
numeri romani |
romani.c |
Criterio ed algoritmo per
generare la rappresentazione in cifre romane di un numero decimale fra
1 e 4000. Uso di if e operatori di decremento in forma breve. putchar e printf. |
|||
4 |
7 giugno |
3 ore |
crypt.c strings.c copy.c |
Files.
Apertura-chiusura-lettura-scrittura a linee di testo.
Programma Crypt per cifrare (con il semplicissimo "algoritmo di
Cesare", basato sulla sostituzione carattere per carattere) un file di
testo. Il programma Decrypt è facilmente derivabile dal
programma Crypt. Programma Strings per generare in output un file di testo composto da righe ciascuna delle quali contenente un numero di ripetizioni del carattere "X" pari al valore letto sulla corrispondente riga di un file di testo fornito in input. Programma Copy per creare una copia di un file di testo con righe di lunghezza limitata. Liste singole e doppie. Ripasso teoria. |
|
5 |
14 giugno |
4 ore |
lista.c lista-2.c mystrlen.c |
Liste.
Un esempio (da
non imitare!) di gestione di una lista a lunghezza fissa con
nodi dichiarati come altrettante variabili volatili di funzione, senza
utilizzo di funzioni malloc/free e con impiego esplicito di puntatori
ottenuti da queste variabili attraverso l'operatore '&'. (lista.c) Esempio di programma (lista-2.c) che tratta liste singole di lunghezza arbitraria con la tecnica corretta (malloc/free). Funzioni supportate: visualizzazione contenuto lista, inserimento in lista (in testa, in coda, in posizione ordinata) con impiego di variabile temporanea. Discussione delle operazioni elementari da effettuare per la rimozione di un nodo dalla lista (in testa, in coda, in posizione ordinata). Discussione del vantaggio che si avrebbe, per il trattamento delle stesse situazioni, se fosse stata usata una lista doppia. Ricorsione. Discussione di vantaggi e svantaggi degli algoritmi ricorsivi rispetto alla variante iterativa (per il trattamento di uno stesso problema). Esempi tipici di algoritmi ricorsivi. Un caso pratico: calcolo della lunghezza di una stringa in modo iterativo e in modo ricorsivo (mystrlen.c) |