Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
Dalla A alla Z passando per C - Robotica
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
500<br />
510<br />
520<br />
530<br />
540<br />
550<br />
560<br />
570<br />
580<br />
0 1 2 3 4 5 6 7 8 9<br />
elemento 3<br />
elemento 8<br />
elemento 0<br />
elemento 5<br />
elemento 10<br />
elemento 2<br />
elemento 7<br />
elemento 4<br />
elemento 9<br />
Figura 18.1: Esempio di memorizzazione di una struttura sequenziale.<br />
Mentre l’indirizzo dell’elemento xi si otterrà dal calcolo:<br />
addr(xi) = addr(x0) + i ∗ d<br />
elemento 1<br />
elemento 6<br />
elemento 11<br />
La lunghezza m deve essere fissata e non può essere modificata. La struttura sequenziale è<br />
quindi una struttura rigida, adatta a contenere serie di dati il cui numero sia noto a priori, o <strong>per</strong><br />
cui si possa prevedere un limite su<strong>per</strong>iore.<br />
In Figura 18.1 è rappresentato un esempio di memorizzazione di una struttura sequenziale<br />
composta da 12 elementi di dimensione pari a 6 blocchi elementari ciascuna (gli indici variano da<br />
0 a 11). Si noti che le dimensioni vengono espresse in “blocchi elementari” e non di byte, in quanto<br />
la dimensione del blocco elementare dipende dall’architettura del calcolatore in uso. Tipicamente<br />
si hanno valori di 8, 16, 32 e 64 bit <strong>per</strong> blocco elementare. Nell’esempio, l’indirizzo del primo<br />
elemento è addr(x0) = 500, mentre l’indirizzo dell’i-esimo elemento è addr(xi) = 500 + 6 ∗ i. Ad<br />
esempio, l’indirizzo di partenza dell’elemento x8 è pari a 500 + 6 ∗ 8 = 548.<br />
Nel caso in cui gli elementi abbiamo diversa lunghezza, si possono adottare due soluzioni:<br />
1. normalizzare le lunghezze degli elementi riportandole <strong>alla</strong> lunghezza dell’elemento più lungo<br />
2. dotare ogni elemento delle informazioni sufficienti a determinare l’indirizzo dell’elemento<br />
successivo (ad esempio un numero che rappresenta la lunghezza dell’elemento)<br />
Si supponga di voler memorizzare 12 elementi di dimensione variabile tra 2 e 6 blocchi elementari.<br />
Se si adotta la prima soluzione, una possibile allocazione della memoria è la stessa che<br />
nell’esempio di Figura 18.1. Ciascun blocco è infatti stato ridimensionato sulla base dell’elemento<br />
più lungo, che è proprio di 6 blocchi elementari. La stessa struttura è stata memorizzata con la<br />
seconda tecnica, e una sua possibile allocazione è stata rappresentata in Figura 18.2. A ciascun<br />
blocco di dati è stato aggiunto un blocco iniziale nel quale viene memorizzata la lunghezza totale<br />
dell’elemento, esclusa l’intestazione. Come si può notare, anche se nel caso pessimo un elemento<br />
può raggiungere la dimensione di 7 blocchi, l’occupazione totale di memoria è inferiore al<br />
caso precedente. La scelta di una tecnica piuttosto che l’altra dipenderà quindi da considerazioni<br />
165