"Diario" (comprendente i programmi
svolti/discussi in laboratorio) delle lezioni
relative alle esercitazioni di Informatica I,
così come sono state svolte nell'a.a. '08/'09
Lezioni del 1/4 - 8/4
Descrizione dell'algoritmo che consente di passare
dalla rappresentazione decimale a quella binaria e viceversa.
Scrittura individuale (da parte di ciascuno
studente) del programma che traduce in C l'algoritmo
precedentemente descritto:
Confronto tra i metodi ricorsivo
e iterativo; introduzione del concetto
di complessità computazionale (cenni);
analisi della complessità degli
algoritmi ricorsivo e iterativo per il
calcolo degli elementi della successione di
Fibonacci. A tale scopo, è sicuramente utile il
Successioni di numeri pseudocasuali, utilizzo
delle functions srand, rand e time; un
primo esempio elementare di scrittura di un programma su
tali argomenti:
Rappresentazione sul computer di un mazzo di carte e
imitazione dell'operazione di "mescolamento delle carte",
utilizzando una successione di numeri
pseudocasuali.
Scrittura individuale (da parte di ciascuno
studente) del programma che traduce in C la strategia
precedentemente descritta al fine di rappresentare un
semplice gioco con le carte:
La scrittura di tutto il
programma sette_e_mezzo.c
è piuttosto lunga e richiede parecchio tempo. In
laboratorio, può quindi essere utile tralasciare
alcune parti accessorie nella function main;
pertanto, a coloro i quali non hanno completato il
programma in laboratorio, si consiglia di farlo
individualmente a casa.
Lezioni del 20/5 - 27/5
Definizione ed utilizzo delle strutture.
Allocazione dinamica della memoria; le istruzioni
calloc e free.
Discussione di un programma che effettua
varie operazioni sui polinomi (a una variabile) con
coefficienti interi; questo programma è strutturato
in modo tale da utilizzare le nozioni discusse in
precedenza. Scrittura individuale (da parte di ciascuno
studente) in C di tale programma:
Nota: Per semplicità, i suddetti programmi
considerano solo dei polinomi a coefficienti interi.
In realtà, è molto semplice generare degli
esempi in cui il quoziente e il resto della divisione
polinomiale dovrebbero includere dei coefficienti
frazionari non interi; in tali casi, l'esecuzione del
programma div_polinomi.c
verrà arrestata prematuramente. È quindi
conveniente usare il
programma op_polinomi.c
per generare degli esempi di divisione polinomiale che
possono essere portati a compimento dal
programma div_polinomi.c
(alternativamente, basta restringersi al caso in cui il
coefficiente del termine di grado massimo del polinomio
divisore sia uguale a 1 o -1).
Lezione del 3/6
Utilizzo delle strutture al fine di creare delle
liste concatenate.
Descrizione di alcune operazioni elementari sulle
liste: inserimento di un elemento (in
modo da mantenere la lista ben ordinata), rimozione di
un elemento, stampa di tutti gli elementi di una
lista. Scrittura individuale (da parte di ciascuno
studente) in C di un programma strutturato
in modo tale da utilizzare le nozioni discusse in
precedenza; tale programma si chiama:
Scrittura di un programma che legge da un file di
input le voci di un mini-dizionario (personale); inoltre,
crea una lista concatenata con le informazioni
relative alle suddette voci; infine, viene effettuato il
riordinamento dei nodi della lista in modo che le
corrispondenti voci siano in ordine alfabetico. Il suddetto
programma è strutturato in modo tale da utilizzare
le nozioni discusse in precedenza. Tale programma si chiama:
Per poter funzionare, il suddetto programma deve essere
eseguito all'interno di una directory
(=cartella) che contiene anche il seguente file
di input: