Materiali Didattici Esercitazioni (2006)        home


Seduta
Data Durata Materiali base
Materiali aula
Argomenti coperti - Note
1
28 marzo 3 ore I tag HTML
esempio di sito
Compendio, organizzato per categorie, dei principali tag HTML di cui si farà utilizzo pratico nel secondo laboratorio.
Generalità.
Tag di apertura e chiusura del documento HTML (html, head, title, body)
Tag per formattazione testo (grassetto, italico, corsivo, sottolineato, indice, apice, barrato, lampeggiante; dimensione, colore, font)
Tag di controllo per colori di sfondo di pagina, tabella, riga, cella.
Tag per creazione di tabelle (tabella, riga, cella, cella di intestazione, celle multiriga e celle multicolonna; bordo tabella, colori; celle contenenti immagini)
Tag per titoli
Tag per elenchi numerati e non numerati
Tag per separatori orizzontali (spessore, larghezza)
Pagine composte da due o più frame (orizzontali o verticali)
Collegamenti ipertestuali (verso lo stesso frame o verso frame esterno)
Immagini. Inserimento; ridimensionamento proporzionale o su entrambi gli assi; immagini usate come hyperlink.

prova1.cpp Breve presentazione dell'ambiente Dev-C++.
Immissione del programma. Compilazione e link. Errori di compilazione e link. Esecuzione in finestra.
Primi semplici programmi. Direttiva #include. Ruolo della funzione main. Istruzione return.
Istruzione system. Emissione di messaggi su console, su stdout. Funzione printf. Il carattere newline (\n).
Ripetizioni: Utilizzo di cicli while. Stampe ripetute: generazione di istogrammi orizzontali.
Operazioni aritmetiche su variabili.
2
4 aprile
2 ore

frammenti di codice C
bitmask

conversioni decimale-esadecimale-ottale

conversioni decimale-binario

stampe ripetute; inversione caratteri stringa; confronto fra due stringhe; identificazione stringhe palindromi
3
11 aprile
2 ore

frammenti di codice C
Analisi di stringhe. Determinazione della lunghezza. Ricerca del numero di parole. Numero di ricorrenze di ogni carattere dell'alfabeto.
Strutture e Union

Struct e Union. Destinazione d'uso e differenze logiche. Quando usare le une e quando le altre.
4
30 maggio
4 ore

frammenti di codice C
Puntatori (esclusa allocazione dinamica e strutture dati dinamiche):

esempio stampa_e_incrementa
Passaggio parametri per indirizzo
Modifica (ad es. incremento) di un valore raggiunto mediante il suo puntatore
Incremento di un puntatore: il valore del puntatore avanza di una quantità pari alla dimensione del tipo di dato puntato (che potrebbe essere maggiore di 1), ottenibile usando sizeof
Possibilità di scrivere funzioni che modificano il valore di variabili dichiarate dal chiamante, usando il passaggio parametri per indirizzo

esempio scambia_valori
La differenza fra scambiare i valori puntati e scambiare i valori dei puntatori.
Inutilità di alterare i valori dei parametri formali di una funzione: dopo la fine della funzione, tali valori spariscono insieme all'activation record della funzione e non lasciano conseguenze.
Uso dell'operatore & per ottenere l'indirizzo di una variabile.
Dichiarare un puntatore a un int non implica che venga anche riservata in memoria un'area grande abbastanza per ospitare l'int puntato da quel puntatore. Se si vuole usare il puntatore per memorizzare, attraverso esso, un valore in una nuova area di memoria, occorre anche predisporre lo storage, per esempio dichiarando una variabile intera e ottenendone l'indirizzo con & per assegnare tale indirizzo al puntatore. Se invece il puntatore serve soltanto per indirizzare valori già presenti in memoria e quindi già allocati, ciò non è necessario.

argc/argv: il passaggio dei parametri al main mediante riga di comando
argc: dimensione del vettore argv
argv: vettore contenente sempre almeno un elemento, argv[0], con il nome del programma così come immesso su riga di comando; gli eventuali successivi elementi argv[1], argv[2], ... sono i valori dei parametri specificati su riga di comando, se presenti.
Effetto delle virgolette intorno ai parametri su riga di comando, per raggruppare parole separate da spazi che altrimenti sarebbero interpretate come parametri distinti

funzione di libreria atoi: data una stringa contenente la rappresentazione ASCII di un numero decimale (es. la stringa costituita dalla sequenza dei caratteri '1','0' e '0', seguiti dal "tappo", o "terminatore", '\0', rappresenta il numero decimale 100), la interpreta con tale significato e ritorna un valore int corrispondente al valore espresso dalla stringa (nell'esempio, 100)

my_atoi: impariamo come funziona atoi provando a reimplementarne una versione equivalente.

Tecnica per convertire un carattere ASCII che rappresenta una cifra decimale nel valore aritmetico corrispondente a tale cifra: sottrarre 48 al codice ASCII del carattere

Equivalenza fra il nome di un array e il puntatore al primo elemento dell'array stesso

Vari esempi di utilizzo di puntatori e variabili (anche di tipo array): discussione degli effetti sulle variabili puntate

I file
Vari programmi per dimostrare il modo di aprire, leggere e scrivere files, con eventuale trasformazione o elaborazione dei dati trattati.

Lettura e scrittura di dati carattere e stringa, mediante fprintf e fscanf.

Utilizzo di feof per rilevare la fine del file

Utilizzo del valore ritornato da fscanf per rilevare l'eventuale fallimento del tentativo di leggere campi (caratteri, stringhe, etc..) dal file

Scrittura di programmi che
impiegano argv e argc per ricevere parametri su riga di comando,
verificano che sia presente il numero esatto di parametri attesi,
protestano in caso contrario,
altrimenti procedono con l'elaborazione, che riguarda dei files i cui nomi sono specificati come parametri. Anche il tipo di elaborazione da effettuare è specificato da parametri di riga di comando.

Copiatura di un file su un altro file con conversione in maiuscolo o in minuscolo in base al valore di un parametro di riga di comando

"Crittografazione" (con il semplice "cifrario di Cesare") di un file (e relativa funzione di decrittografazione)

Copiatura di un file con contemporanea sostituzione di un determinato carattere speciale con altro carattere o stringa specificata su stringa di comando: utilizzo per produrre corrispondenza commerciale basata su modello standard e sostituzione di nomi

Analisi carattere per carattere di un file di testo, all'interno del quale si conteggiano caratteri, parole e righe e vengono contate anche le ricorrenze dei singoli caratteri ASCII. Al termine, stampa dei risultati.
5
13 giugno
2 ore
Liste (schemi)

Liste (C)

Esempi liste singole e doppie (frammenti di codice)
Strutture dati dinamiche: liste semplici e doppie. Generalità. Operazioni di inserimento, scansione, rimozione di elementi. Schematizzazione dell'effetto della manipolazione dei puntatori, esempi di codice.