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:14 (10 anni fa)] – [Esercizio 4] Roberta Gori | fisica:informatica:201516:secondoanno:laboratorio_10 [06/05/2016 alle 08:24 (10 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 90: | Linea 92: | ||
| Ricordarsi di deallocare la lista prima di uscire dal main. | Ricordarsi di deallocare la lista prima di uscire dal main. | ||
| - | |||
| ===== Esercizio 6 ===== | ===== Esercizio 6 ===== | ||
| + | Scrivere una procedura *ricorsiva* | ||
| + | < | ||
| + | 1 -> 9 -> 3 // | ||
| + | </ | ||
| + | |||
| + | ===== Esercizio 7 ===== | ||
| Scrivere una *procedura* iterativa che dato un n intero, crei una lista di n elementi inizializzati con variabili random. | Scrivere una *procedura* iterativa che dato un n intero, crei una lista di n elementi inizializzati con variabili random. | ||
| Linea 98: | Linea 105: | ||
| Scrivere un main per testarla. | Scrivere un main per testarla. | ||
| - | ===== Esercizio | + | ===== Esercizio |
| Scrivere una *funzione* | Scrivere una *funzione* | ||
| Linea 105: | Linea 112: | ||
| + | ===== Esercizio 9 ===== | ||
| - | la lunghezza di una lista percorrendo la | + | Scrivere una *funzione* *ricorsiva* |
| - | lista dall' | + | |
| - | + | ||
| - | Testare questa funzione chiamandola nel main precedente. | + | |
| - | + | ||
| - | Ricordarsi di deallocare la lista prima di uscire dal main. | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| + | 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.1462522477.txt.gz · Ultima modifica: 06/05/2016 alle 08:14 (10 anni fa) da Roberta Gori
