Strumenti Utente

Strumenti Sito


informatica:sol:laboratorio15:esercitazionia:esercitazione2

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:laboratorio15:esercitazionia:esercitazione2 [04/03/2015 alle 14:38 (10 anni fa)] – [Esercizio 2: verificare gli accessi in memoria con valgrind] Massimo Torquatiinformatica:sol:laboratorio15:esercitazionia:esercitazione2 [17/03/2015 alle 05:44 (10 anni fa)] (versione attuale) – [Esercizio 6] Massimo Torquati
Linea 1: Linea 1:
 ====== Esercitazione 2 ====== ====== Esercitazione 2 ======
  
-Ancora esercizi su C e su libreria standard di IO. Tool: mtrace e valgrind.+Ancora esercizi su C e su libreria standard di IO. Tools''mtrace'' ''valgrind''.
  
 Cercare di completare tutti gli esercizi durante le ore di laboratorio e nel caso come homework.\\ Cercare di completare tutti gli esercizi durante le ore di laboratorio e nel caso come homework.\\
Linea 31: Linea 31:
 ===== Esercizio 2: verificare gli accessi in memoria con valgrind ===== ===== Esercizio 2: verificare gli accessi in memoria con valgrind =====
  
-Verificare la correttezza degli accessi in memoria degli esercizi dell'Assegnamento1 utilizzando ''valgrind''.  +Verificare la correttezza degli accessi in memoria degli esercizi dell'[[esercitazione1|Assegnamento1]] utilizzando ''valgrind''.  
-Questo strumento permette fra l'altro di capire se tutte le variabili sono inizializzate prima del loro uso, se accediamo a memoria gia' deallocata o mai allocata e situazioni similari +Questo strumento permette fra l'altro di capire se tutte le variabili sono inizializzate prima del loro uso, se accediamo a memoria gia' deallocata o mai allocata o a zone non inizializzate. 
  
 Per fare questo procedere come segue:   Per fare questo procedere come segue:  
Linea 43: Linea 42:
 in questo modo, a schermo verranno riportare le infrazioni rilevate. Ad esempio, //invalid read// o //invalid write// sono accessi in lettura o scrittura a memoria non allocata o gia' deallocata. in questo modo, a schermo verranno riportare le infrazioni rilevate. Ad esempio, //invalid read// o //invalid write// sono accessi in lettura o scrittura a memoria non allocata o gia' deallocata.
 ===== Esercizio 3 ===== ===== Esercizio 3 =====
 +
 +Scrivere un programma che implementa l'equivalente del comando Unix ''cat'' senza opzioni 
 +(mycat file1 [file2 ...] ).
 +
  
 ===== Esercizio 4 ===== ===== Esercizio 4 =====
 +Scrivere un programma che prende in ingresso un intero (piccolo, es. <html><=512</html>), alloca in memoria una matrice
 +di 512x512 elementi ''float'' in modo che siano contigui in memoria. 
 +Inizializzare tale matrice (M) in modo arbitrario (ad esempio M(i,j) = (i+j)/2.0). 
 +Fare quindi il dump della matrice in formato binario su un file il cui nome è 'mat_dump.dat'.
 +Rileggere quindi la matrice dal file 'mat_dump.dat' memorizzandola in una matrice differente 
 +da quella di partenza (M2). Al termine dell'operazione effettuare il confronto delle due matrici 
 +con la funzione di libreria ''memcmp''.
  
 ===== Esercizio 5 ===== ===== Esercizio 5 =====
 +Scrivere un programma che prende in ingresso come parametro un nome di un file  
 +(ad esempio input.txt). Il file è un file testuale che contiene un certo numero di righe. 
 +Leggere tutte le righe del file e costruire un'unica stringa in memoria data dalla  
 +concatenazione di ogni striga del file tra loro separate da uno spazio. 
 +Scrivere la stringa cosi ottenuta in un file che ha lo stesso nome del file in input ma con estensione ".log" (per il nostro esempio il nome sarà quindi input.log).
 ===== Esercizio 6 ===== ===== Esercizio 6 =====
 +Realizzare l'esercizio 7 (dell'[[esercitazione1|Assegnamento1]]) che costruisce un albero binario di ricerca da un 
 +array di N elementi con le seguenti modifiche/estensioni:\\
 +  * gli elementi dell'array devono essere letti da un file testuale; il file contiene un certo numero di righe ognuna del formato [+|-]numero-intero. 
 +
 +  * le funzioni 'buildTree' 'printInOrder' 'getMin' 'getMax' 'deleteTree' devono essere implementate in un file separato rispetto al file contenente il main (le definizioni in un file '.h' e l'implementazione in un file '.c'). 
 +
 +Creare il codice oggetto dei due file '.c' e linkarli insieme in un unico file eseguibile.
 +
 +Un possibile file di input è il seguente:\\
 +-1\\
 +2\\
 ++3\\
 +0\\
 +120\\
 +
  
 ===== Esercizio 7 ===== ===== Esercizio 7 =====
  
 +Scrivere un programma che realizzi l'equivalente del comando Unix ''wc'' 
 +limitatamente alle opzioni -l e -w (man 1 wc). 
 +L'opzione -l restituisce il numero di linee del file, l'opzione -w restituisce il numero
 +di parole nel file. Se non vengono passate opzioni, il programma stampa sia il numero
 +di linee che il numero di parole del/dei file i cui nomi sono passati come argomento 
 +(mywc [-l -w] file1 [file2 file3 ....]).
  
  
informatica/sol/laboratorio15/esercitazionia/esercitazione2.1425479895.txt.gz · Ultima modifica: 04/03/2015 alle 14:38 (10 anni fa) da Massimo Torquati

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki