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:07 (9 anni fa)] – [Esercizio 3] Roberta Gori | fisica:informatica:201516:secondoanno:laboratorio_10 [06/05/2016 alle 08:24 (9 anni fa)] (versione attuale) – [Esercizio 9] Roberta Gori | ||
---|---|---|---|
Linea 56: | Linea 56: | ||
*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 ===== | ||
- | | ||
- | 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' | ||
Linea 74: | Linea 68: | ||
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 83: | 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 | + | |
- | nell' | + | ===== Esercizio 6 ===== |
- | lista dall' | + | Scrivere una procedura *ricorsiva* |
- | Ricordarsi di deallocare la lista prima di uscire dal main (e verificare con | + | < |
- | valgrind | + | 1 -> 9 -> 3 // |
+ | </ | ||
+ | |||
+ | ===== Esercizio 7 ===== | ||
+ | |||
+ | Scrivere | ||
+ | |||
+ | Scrivere un main per testarla. | ||
+ | |||
+ | ===== Esercizio 8 ===== | ||
+ | |||
+ | Scrivere una *funzione* | ||
+ | |||
+ | Scrivere un main per testarla. | ||
+ | |||
+ | |||
+ | ===== Esercizio 9 ===== | ||
+ | |||
+ | Scrivere una *funzione* *ricorsiva* | ||
+ | |||
+ | |||
+ | Scrivere un main per testarla. | ||
+ | |||
+ | |||
+ | ===== Esercizio 10 ===== | ||
+ | |||
+ | Scrivere una *funzione* *iterativa* | ||
+ | |||
+ | |||
+ | Scrivere un main per testarla. | ||
+ | ===== Esercizio 11 ===== | ||
- | In alcuni degli esercizi che seguono (quando richiesto) si utilizzi la | + | Scrivere una *funzione* *ricorsiva* che controlli che la lista contenga solo interi positivi. |
- | seguente definizione di tipo "lista di interi": | + | |
- | typedef struct El { | + | |
- | int info; | + | |
- | struct El *next; | + | |
- | } ElementoListaInt; | + | |
- | typedef ElementoListaInt* ListaDiInteri; | + | |
- | Inoltre, dove c'è bisogno di allocazione dinamica della memoria, | + | |
- | dovete assicurarvi di deallocare SEMPRE tutta la memoria allocata. | + | |
- | Per verificarlo potete usare valgrind se correttamente installata sul | + | |
- | vostro computer. | + | |
- | Questo strumento permette fra l' | + | |
- | sono inizializzate prima del loro uso, se accediamo a memoria gia' | + | |
- | deallocata o mai allocata e situazioni similari. | + | |
- | 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 | + | |
- | bash$ gcc -Wall -pedantic -g -o prova main.c | + | |
- | • | + | |
- | eseguire | + | |
- | bash$ valgrind ./prova | + | |
- | 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. | + | |
- | valgrind | + | |
- | | + | |
- | 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.1462522037.txt.gz · Ultima modifica: 06/05/2016 alle 08:07 (9 anni fa) da Roberta Gori