Strumenti Utente

Strumenti Sito


fisica:informatica:201516:secondoanno:laboratorio_10

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
fisica:informatica:201516:secondoanno:laboratorio_10 [06/05/2016 alle 08:04 (9 anni fa)] – [Esercitazione 9] Roberta Gorifisica:informatica:201516:secondoanno:laboratorio_10 [06/05/2016 alle 08:24 (9 anni fa)] (versione attuale) – [Esercizio 9] Roberta Gori
Linea 23: Linea 23:
  
 Per fare questo procedere come segue:  Per fare questo procedere come segue: 
-*compilare il file da verificare con opzione -g per includere le informazioni di debugging. Ad esempio se il mio file si chiama  main.c posso compilare con+  *compilare il file da verificare con opzione -g per includere le informazioni di debugging. Ad esempio se il mio file si chiama  main.c posso compilare con
 <code> <code>
 bash$ gcc -Wall -pedantic -g -o prova main.c bash$ gcc -Wall -pedantic -g -o prova main.c
 </code> </code>
-*eseguire+  *eseguire
 <code> <code>
 bash$ valgrind ./prova bash$ valgrind ./prova
Linea 53: Linea 53:
 Definire un nuovo tipo di dato capace di rappresentare una data. Definire un nuovo tipo di dato capace di rappresentare una data.
 Scrivere poi delle opportune funzioni/procedure che: Scrivere poi delle opportune funzioni/procedure che:
- *ricevuta una data la aggiorni al giorno successivo (ignorando gli anni bisestili); +  *ricevuta una data la aggiorni al giorno successivo (ignorando gli anni bisestili); 
- *ricevute due date verifichino che la prima preceda la seconda; +  *ricevute due date verifichino che la prima preceda la seconda; 
- *ricevute due date, ritornino la differenza in anni fra la prima e la seconda. +  *ricevute due date, ritornino la differenza in anni fra la prima e la seconda.
  
 ===== Esercizio 2  ===== ===== Esercizio 2  =====
- Scrivere un nuovo tipo di dato coppia di interi.  
-Inizializzare tre istanze di coppie con i primi tre numeri naturali e i loro 
-doppi. 
- 
-===== Esercizio 3  ===== 
 Scrivere un programma che crei dinamicamente una lista di 3 interi e li Scrivere un programma che crei dinamicamente una lista di 3 interi e li
-inizializzi con valori chiesti all'utente +inizializzi con valori chiesti all'utente 
-la stampi a video in questo modo:+ stampi la lista  a video in questo modo: 
 +<code>
 1 -> 9 -> 3 // 1 -> 9 -> 3 //
 +</code> 
  
 Il programma deve deallocare Il programma deve deallocare
 correttamente la lista prima di uscire, verificare con valgrind che questo sia correttamente la lista prima di uscire, verificare con valgrind che questo sia
 avvenuto (se correttamente installato sul vostro pc). avvenuto (se correttamente installato sul vostro pc).
 +
 +===== Esercizio 3  =====
 +Scrivere una procedura iterativa  che stampi  una lista (di lunghezza qualsiasi) a video in questo modo:
 +<code>
 +1 -> 9 -> 3 //
 +</code> 
 +
 +Utilizzare la procedura nel main precedente per verificarne la correttezza.
  
 ===== Esercizio 4  ===== ===== Esercizio 4  =====
Linea 81: Linea 85:
 installato sul vostro pc). installato sul vostro pc).
  
 +===== Esercizio 5  =====
 + Scrivere una *funzione* che   calcoli  la  lunghezza di una lista percorrendo la
 +lista dall'inizio alla fine.
  
 +Testare questa funzione utilizzando un'opportuno  main.
  
-  +Ricordarsi di deallocare la lista prima di uscire dal main.
-11) Scrivere un programma che, creata una lista di interi come +
-nell'esercizio precedente, calcoli e stampi la sua lunghezza percorrendo la +
-lista dall'inizio alla fine. +
-Ricordarsi di deallocare la lista prima di uscire dal main (e verificare con  +
-valgrind che questo sia avvenuto, vedi n+
  
 +===== Esercizio 6  =====
 +Scrivere una procedura *ricorsiva*  che stampi  una lista (di lunghezza qualsiasi) a video in questo modo:
 +<code>
 +1 -> 9 -> 3 //
 +</code> 
  
-In alcuni degli esercizi che seguono (quando richiesto) si utilizzi la +===== Esercizio 7  ===== 
-seguente definizione di tipo "lista di interi": + 
-typedef struct El { +Scrivere una *proceduraiterativa che  dato un n interocrei una lista di n elementi inizializzati con variabili random
-int info; + 
-struct El *next; +Scrivere un main per testarla.  
-} ElementoListaInt; + 
-typedef ElementoListaIntListaDiInteri; +===== Esercizio 8  ===== 
-Inoltredove c'è bisogno di allocazione dinamica della memoria, + 
-dovete assicurarvi di deallocare SEMPRE tutta la memoria allocata+Scrivere una *funzione*  che  dato un n intero, crei una lista di n elementi inizializzati con variabili random. 
-Per verificarlo potete usare valgrind se correttamente installata sul + 
-vostro computer.  +Scrivere un main per testarla.  
-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+===== Esercizio 9 ===== 
-Per fare questo procedere come segue:  + 
- +Scrivere una *funzione* *ricorsiva*  che calcoli la lunghezza di una lista
-compilare il file da verificare con opzione  + 
--g + 
- per includere le +Scrivere un main per testarla.  
-informazioni di debuggingAd esempio se il mio file si +   
-chiama  +   
-main.c +===== Esercizio 10 ===== 
- posso compilare con + 
-bash$ gcc -Wall -pedantic -g -o prova main.c +Scrivere una *funzione* *iterativa*  che controlli che la lista contenga solo interi positivi.  
- + 
-eseguire + 
-bash$ valgrind ./prova +Scrivere un main per testarla.  
-in questo modo, a schermo verranno riportare le infrazioni + 
-rilevateAd esempio,  +===== Esercizio 11 ===== 
-invalid read + 
-  +Scrivere una *funzione* *ricorsiva*  che controlli che la lista contenga solo interi positivi
-invalid write +
- sono accessi in +
-lettura o scrittura a memoria non allocata o gia' deallocata.  +
-valgrind +
- contiene moltissime opzioni, invitiamo gli studenti +
-interessati ad esplorarle partendo dal sito   +
-http://valgrind.org/ +
-.  +
-Ricordate infine che dovete includere la libreria stdlib.h per la +
-gestione della memoria dinamica.+
  
  
-1) Scrivere una funzione stampaLista che ricevuta +Scrivere un main per testarla.
-una ListaDiInteri, la stampi a video in questo +
-modo: +
-1 -> 2 -> 3 -> 4 -> / / +
-Usare questa funzione per verificare le funzioni +
-dei prossimi esercizi.  +
-2)Scrivere una procedura che, data una lista di +
-interi, restituisca l'i-esimo elemento della lista +
-stessa. +
-3)Definire una funzione (fornirne due versioni, +
-una iterativa e una ricorsiva) lunghezzaLista che +
-dat una ListaDiInteri, restituisca la sua +
-lunghezza.+
fisica/informatica/201516/secondoanno/laboratorio_10.1462521894.txt.gz · Ultima modifica: 06/05/2016 alle 08:04 (9 anni fa) da Roberta Gori

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki