fisica:informatica:201516:secondoanno:laboratorio_10
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
fisica:informatica:201516:secondoanno:laboratorio_10 [06/05/2016 alle 08:04 (9 anni fa)] – [Esercitazione 9] Roberta Gori | fisica: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 | + | |
< | < | ||
bash$ gcc -Wall -pedantic -g -o prova main.c | bash$ gcc -Wall -pedantic -g -o prova main.c | ||
</ | </ | ||
- | *eseguire | + | |
< | < | ||
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/ | Scrivere poi delle opportune funzioni/ | ||
- | *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, ritornino la differenza in anni fra la prima e la seconda. |
===== Esercizio 2 ===== | ===== Esercizio 2 ===== | ||
- | | ||
- | 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' | + | inizializzi con valori chiesti all' |
- | e la stampi a video in questo modo: | + | e stampi |
+ | < | ||
1 -> 9 -> 3 // | 1 -> 9 -> 3 // | ||
+ | </ | ||
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 | ||
+ | < | ||
+ | 1 -> 9 -> 3 // | ||
+ | </ | ||
+ | |||
+ | 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 ===== | ||
+ | | ||
+ | lista dall' | ||
+ | Testare questa funzione utilizzando un' | ||
- | + | Ricordarsi di deallocare la lista prima di uscire dal main. | |
- | 11) Scrivere un programma che, creata una lista di interi come | + | |
- | nell' | + | |
- | lista dall' | + | |
- | 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* | ||
+ | < | ||
+ | 1 -> 9 -> 3 // | ||
+ | </ | ||
- | 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 *procedura* iterativa che dato un n intero, crei una lista di n elementi inizializzati con variabili random. |
- | int info; | + | |
- | struct El *next; | + | Scrivere un main per testarla. |
- | } ElementoListaInt; | + | |
- | typedef ElementoListaInt* ListaDiInteri; | + | ===== Esercizio 8 ===== |
- | Inoltre, dove c'è bisogno | + | |
- | dovete assicurarvi di deallocare SEMPRE tutta la memoria allocata. | + | Scrivere una *funzione* |
- | Per verificarlo potete usare valgrind se correttamente installata sul | + | |
- | vostro computer. | + | Scrivere un main per testarla. |
- | Questo strumento permette fra l' | + | |
- | 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* |
- | compilare il file da verificare con opzione | + | |
- | -g | + | |
- | per includere le | + | Scrivere un main per testarla. |
- | informazioni | + | |
- | chiama | + | |
- | main.c | + | ===== Esercizio 10 ===== |
- | posso compilare con | + | |
- | bash$ gcc -Wall -pedantic -g -o prova main.c | + | Scrivere una *funzione* *iterativa* |
- | • | + | |
- | eseguire | + | |
- | bash$ valgrind ./prova | + | Scrivere un main per testarla. |
- | in questo modo, a schermo verranno riportare le infrazioni | + | |
- | rilevate. Ad esempio, | + | ===== Esercizio 11 ===== |
- | invalid read | + | |
- | o | + | Scrivere una *funzione* *ricorsiva* |
- | 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:// | + | |
- | . | + | |
- | Ricordate infine | + | |
- | gestione della memoria dinamica. | + | |
- | 1) Scrivere | + | Scrivere |
- | una ListaDiInteri, | + | |
- | modo: | + | |
- | 1 -> 2 -> 3 -> 4 -> / / | + | |
- | Usare questa funzione | + | |
- | dei prossimi esercizi. | + | |
- | 2)Scrivere una procedura che, data una lista di | + | |
- | interi, restituisca l' | + | |
- | stessa. | + | |
- | 3)Definire una funzione (fornirne due versioni, | + | |
- | una iterativa e una ricorsiva) lunghezzaLista che | + | |
- | dat una ListaDiInteri, | + | |
- | lunghezza. | + |
fisica/informatica/201516/secondoanno/laboratorio_10.1462521894.txt.gz · Ultima modifica: 06/05/2016 alle 08:04 (9 anni fa) da Roberta Gori