Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio19:esercitazionib:esercitazione3

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
informatica:sol:laboratorio19:esercitazionib:esercitazione3 [04/03/2019 alle 14:25 (6 anni fa)] Massimo Torquatiinformatica:sol:laboratorio19:esercitazionib:esercitazione3 [05/03/2019 alle 09:00 (6 anni fa)] (versione attuale) Massimo Torquati
Linea 3: Linea 3:
 ===== Esercizio 1: libtokenizer.a ===== ===== Esercizio 1: libtokenizer.a =====
  
-Inserire nel file 'tokenizer.h' l'interfaccia di due funzioni 'tokenizer' e 'tokenizer_r' (quest'ultima e' quella implementata nell'esercizio dell'Esercitazione 2 mentre 'tokenizer' ha la stessa interfaccia di 'tokenizer_r' ma usa 'strtok' invece di strtok_r). Inserire nel file 'tokenizer.c' l'implementazione delle due funzioni. Creare quindi una librerie statica 'libtokenizer.a' e riscrivere il programma dell'esercizio dell'Esercitazione 2 in modo che il programma main includa il file 'tokenizer.h' e faccia il linking la libreria statica 'libtokenizer.a'.+Inserire nel file 'tokenizer.h' l'interfaccia di due funzioni 'tokenizer' e 'tokenizer_r' (quest'ultima e' quella implementata nell'esercizio dell'Esercitazione 2 mentre 'tokenizer' ha la stessa interfaccia di 'tokenizer_r' ma usa 'strtok' invece di strtok_r). Inserire nel file 'tokenizer.c' l'implementazione delle due funzioni. Creare quindi una librerie statica 'libtokenizer.a' e riscrivere il programma dell'esercizio dell'Esercitazione 2 in modo che il programma main includa il file 'tokenizer.h' e faccia il linking della libreria statica 'libtokenizer.a'.
  
 ===== Esercizio 2: libtokenizer.so ===== ===== Esercizio 2: libtokenizer.so =====
  
 Rifare l'esercizio 2 creando invece che una libreria statica una libreria dinamica ('libtokenizer.so'). Rifare l'esercizio 2 creando invece che una libreria statica una libreria dinamica ('libtokenizer.so').
-Verificarne il corretto caricamento in memoria+Verificarne il corretto caricamento in memoria spostando il file 'libtokenizer.so' nella directory /tmp. 
 + 
 +===== Esercizio 3: macro ===== 
 +Dato il seguente codice main C: 
 +<code> 
 +#define dimN 16 
 +#define dimM  8 
 +int main() { 
 +    long *M = malloc(dimN*dimM*sizeof(long)); 
 +    CHECK_PTR(M, "malloc");  
 +    for(size_t i=0;i<dimN;++i) 
 + for(size_t j=0;j<dimM;++j)  
 +     ELEM(M,i,j) = i+j;     
 +     
 +    PRINTMAT(M, dimN, dimM); 
 +    return 0; 
 +
 +</code> 
 +scrivere le 3 macros ''CHECK_PTR'', ''ELEM'' e ''PRINTMAT''.  
 +'CHECK_PTR' prende due argomenti, un puntatore ed una stringa. La macro controlla che il primo argomento sia 'NULL' ed in tal caso stampa utilizzando la funzione di librerie ''perror'' (man 3 'perror') la stringa passata come secondo argomento prima di uscire dal programma con ''EXIT_FAILURE'' (man 3 'exit').  
 +'PRINTMAT' stampa la matrice passata come primo argomento. Al suo interno ''PRINTMAT'' usa la macro ''ELEM'' per accedere agli elementi della matrice.  
 + 
 +Esempio di output richiesto: 
 +<code> 
 +Stampo la matrice M: 
 +      1    2    3    4    5    6    7  
 +      2    3    4    5    6    7    8  
 +      3 .... 
 +</code> 
 + 
 +===== Esercizio 4: somma da ===== 
 + 
 +Scrivere un programma C che implementa una funzione somma con la seguente segnatura:  
 +<code> 
 +int somma(int x); 
 +</code> 
 + 
 +La funzione 'somma' aggiunge l'intero x letto da un file che contiene un intero per ogni riga al valore calcolato fino a quel momento, quindi ritorna la somma. Il nome del file è passato come argomento al main. 
 +Il valore iniziale della somma deve essere 'INIT_VALUE' che viene definito a compilazione utilizzando il flag del compilatore ''-D'' (es. -DINIT_VALUE=100). Il programma non deve fare uso di variabili globali. 
 + 
 +Valutare se la funzione somma così come definita è rientrante ed eventualmente fornire una versione rientrante 'somma_r'.
  
-  
  
  
  
informatica/sol/laboratorio19/esercitazionib/esercitazione3.1551709512.txt.gz · Ultima modifica: 04/03/2019 alle 14:25 (6 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki