Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
int i;<br />
float f;<br />
printf("i = %d (%x)\n", i, i);<br />
printf("i = %7.2f\n", f);<br />
Il carattere “\n” indica l’andata a capo.<br />
14.3 La libreria standard stdlib<br />
La libreria standard dichiara costanti e funzioni di utilità generale, quali quelle <strong>per</strong> l’allocazione<br />
della memoria, conversione tra tipi e altre.<br />
Per utilizzare le funzioni della libreria standard è necessario includere il file di intestazione<br />
stdlib.h, con l’istruzione:<br />
#include <br />
Tra i tipi di dato definiti in stdlib.h c’è size_t, un tipo intero che è il tipo del valore<br />
restituito dall’o<strong>per</strong>atore sizeof.<br />
Tra le costanti definite in stdlib.h c’è la macro NULL, generalmente viene definita come 0, 0L,<br />
oppure (void*)0, che rappresenta il puntatore nullo. Inoltre, la costante RAND_MAX (maggiore o<br />
uguale a 32767), rappresenta il valore massimo che viene restituito d<strong>alla</strong> funzione rand() (vedi<br />
Sezione 14.3.4).<br />
14.3.1 Ricerca e ordinamento<br />
La libreria standard implementa due funzioni molto utili <strong>per</strong> la manipolazione di insiemi omogenei<br />
di dati: la funzione bsearch implementa l’algoritmo di ricerca binaria in modo generalizzato,<br />
ovvero applicabile a qualsiasi insieme di dati. Lo stesso vale <strong>per</strong> la funzione qsort, la quale<br />
implementa in maniera generica l’algoritmo di ordinamento QuickSort.<br />
Le funzioni sono dichiarate come segue:<br />
• void *bsearch ( void *key, void *base, size_t nmemb, size_t size, compar_fn_t compar);<br />
effettua una ricerca binaria dell’elemento key all’interno dell’insieme base; l’insieme consiste<br />
di nmemb elementi, ciascuno avente dimensione size; viene usata la funzione compar<br />
<strong>per</strong> confrontare due elementi dell’insieme;<br />
• void qsort (void *base, size_t nmemb, size_t size, compar_fn_t compar);<br />
effettua l’ordinamento dinmemb elementi dell’insiemebase, ciascuno dei quali ha dimensione<br />
size; viene usata la funzione compar <strong>per</strong> confrontare due elementi dell’insieme;<br />
Essendo funzioni generiche, esse o<strong>per</strong>ano allo stesso modo su ogni tipo di insieme, trattando<br />
ciascun elemento dell’insieme semplicemente come una sequenza di bit avente una determinata<br />
lunghezza. Per questo motivo in ciascuna funzione deve essere specificata la dimensione del singolo<br />
elemento. In particolare, la funzione qsort utilizza questa informazione anche <strong>per</strong> scambiare<br />
due valori. Alla funzione non interessa il significato dei bit che compongono i valori da scambiare,<br />
ma soltanto la loro posizione in memoria e la dimensione.<br />
Allo stesso modo, potendo lavorare su insiemi arbitrari di dati, si deve specificare quanti sono<br />
tali elementi.<br />
140