Questa è una vecchia versione del documento!
Esercitazione 1
Dove si richiama il C sequenziale: in particolarere puntatori, strutture ricorsive, puntatori a funzione. Poi si introduce con un esempio il concetto di libreria (che verra' approfondito nelle lezioni di teoria) e si fa la conoscenza con il debugger.
Esercizio 1: sul debugging
Usare il debugger ddd per trovare cosa non va nel seguente programma C:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#define N 5
int main(void)
{
int a[N];
int i;
srand(time(NULL));
i=0;
while (i<N)
{
a[++i]=rand()%2;
printf("iterazione %d\n",i);
}
printf("exiting ...\n");
}
in pratica il codice, salvato in “file.c” compilato con
gcc -Wall -pedantic -o ese file.c
ed eseguito con
$ ./ese
va inspiegabilmente in ciclo all'interno del ciclo. Per eseguire in modalita' interattiva di debugging:
- Compilare con opzione “-g”, ad esempio
gcc -Wall -pedantic -g -o ese file.c
- lanciare l'eseguibile usando il debugger come in
$ ddd ./ese
a questo punto e' possibile fermare il programma durante la sua esecuzione, ispezionare le variabili etc..
Elaborazione: Per i solutori piu' che abili, provare a trovare cosa non va nei due programmi C nei due programmi in esempi.tar
