informatica:sol:laboratorio12:esercitazioni:esercitazione1
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Prossima revisione | Revisione precedente | ||
| informatica:sol:laboratorio12:esercitazioni:esercitazione1 [20/02/2012 alle 09:23 (14 anni fa)] – creata Susanna Pelagatti | informatica:sol:laboratorio12:esercitazioni:esercitazione1 [24/02/2012 alle 12:03 (14 anni fa)] (versione attuale) – [Esercizio 3: map e reduce su liste] Susanna Pelagatti | ||
|---|---|---|---|
| Linea 50: | Linea 50: | ||
| ===== Esercizio 2: liste concatenate di interi ===== | ===== Esercizio 2: liste concatenate di interi ===== | ||
| + | |||
| + | Implementare in C le seguenti funzioni che lavorano su liste concatenate di interi di tipo | ||
| + | <code c> | ||
| + | typedef struct nodo { | ||
| + | int valore; | ||
| + | struct nodo * next; | ||
| + | } nodo; | ||
| + | |||
| + | typedef nodo * lista; | ||
| + | </ | ||
| + | |||
| + | e definire le seguenti funzioni che operano sulla lista | ||
| + | <code c> | ||
| + | /** crea una lista vuota | ||
| + | | ||
| + | lista newList (void); | ||
| + | |||
| + | /** dealloca la lista | ||
| + | \param l la lista | ||
| + | */ | ||
| + | void freeList (lista l); | ||
| + | |||
| + | /** iserisce n nella lista l creando un nuovo nodo | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | */ | ||
| + | lista insertList (lista l, int n); | ||
| + | |||
| + | /** cancella n dalla lista (se c' | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | */ | ||
| + | lista removeList (lista l, int n); | ||
| + | |||
| + | </ | ||
| + | Testare il funzionamento delle funzioni implementate con un opportuno '' | ||
| + | |||
| + | ===== Esercizio 3: map e reduce su liste ===== | ||
| + | |||
| + | Usando le liste dell' | ||
| + | <code c> | ||
| + | /** trasforma una lista applicando ad ogni elemento la funzione f | ||
| + | | ||
| + | | ||
| + | |||
| + | */ | ||
| + | void mapList (int (*f) (int), lista l); | ||
| + | |||
| + | /** combina gli elementi della lista l usando un operatore binario associativo | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | | ||
| + | int reduceList(int (*f) (int,int), int en, lista l); | ||
| + | </ | ||
| + | |||
| + | Testare il risultato con un opportuno main. | ||
| + | |||
| + | ===== Esercizio 4: Libreria di liste ===== | ||
| + | |||
| + | Realizzare una libreria che fornisce le operazioni su liste implementate negli esercizi 1 e 2. | ||
| + | In C tipicamente per realizzare una libreria si difinisce un file '' | ||
| + | |||
| + | Nel nostro caso l' | ||
| + | |||
| + | Procedere nel modo seguente: | ||
| + | |||
| + | * Definire un file '' | ||
| + | * Definire un file '' | ||
| + | * Generare il modulo oggetto '' | ||
| + | < | ||
| + | $ gcc -Wall -pedantic -c lista.c | ||
| + | </ | ||
| + | * Creare la libreria con i lcomando '' | ||
| + | < | ||
| + | $ ar -r libList.a lista.o | ||
| + | </ | ||
| + | |||
| + | Quando la creazione e' andata a buon fine creare un file '' | ||
| + | * il main di test dovra' includere il file '' | ||
| + | * in fase di compilazione utilizzare la libreria sviluppata con | ||
| + | < | ||
| + | $ gcc -Wall -pedantic main.c -lList -L. | ||
| + | </ | ||
| + | dove l' | ||
| + | . | ||
| + | |||
| + | |||
informatica/sol/laboratorio12/esercitazioni/esercitazione1.1329729781.txt.gz · Ultima modifica: 20/02/2012 alle 09:23 (14 anni fa) da Susanna Pelagatti
