18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capitolo 19<br />

Tecniche di programmazione e<br />

algoritmi base<br />

In questo capitolo sono presentate alcuni algoritmi di base <strong>per</strong> lo sviluppo di algoritmi più<br />

complessi. Saranno presentati in particolare gli algoritmi di ricerca e di ordinamento.<br />

19.1 Algoritmi di ricerca<br />

Un algoritmo di ricerca <strong>per</strong>mette di trovare un elemento all’interno di un elenco, e di determinare<br />

se eventualmente tale elemento non esiste all’interno dell’elenco.<br />

In particolare, se la ricerca avviene su un vettore di elementi si sarà interessati all’indice<br />

dell’elemento desiderato, mentre se la ricerca avviene su una lista, il risultato della ricerca sarà<br />

costituito dall’indirizzo in memoria dell’elemento, ovviamente qualora la ricerca abbia successo.<br />

19.1.1 La ricerca sequenziale<br />

La ricerca sequenziale è il metodo di ricerca più intutitivo e di immediata realizzazione. Esso<br />

<strong>per</strong>mette di effettuare una ricerca su un qualsiasi insieme di dati, semplicemente scandendo tutti<br />

gli elementi e confrontandoli con l’elemento desiderato fino a trovare una corrispondenza. Se<br />

tutti gli elementi vengono confrontati senza trovare una corrispondenza, l’algoritmo termina con<br />

un insuccesso.<br />

Nella seguente implementazione, il vettore l viene scandito fino a trovare un elemento che<br />

corrisponda all’elemento x desiderato, oppure finchè tutti gli elementi non sono stati esaminati<br />

(i < n). All’uscita del ciclo while si controlla il valore dell’indice i: se questo è inferiore ad n,<br />

allora l’elemento è stato trovato, altrimenti no.<br />

int ssearch(int l[], int x, int n)<br />

{<br />

int i = 0;<br />

while ((i < n) && (x != l[i])) i++;<br />

if (i < n)<br />

return i;<br />

174

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!