Loop per allocazione di interi in un vettore
Attraverso questo esercizio ci prefiggiamo di allocare un vettore di n posizioni con i primi n numeri naturali, tramite l’utilizzo di un loop. Cominciamo col definire tutto ciò che ci occorre per completare l’esercizio.
Elementi necessari
Ciò che serve è:
- Un vettore;
- Una variabile numerica che ci dica quante posizioni allocare;
- Una variabile che ci permetta di inserire i valori voluti all’interno del vettore.
Volendo partire col dichiarare ciò che abbiamo detto, abbiamo:
$8100 ORG
VET 10 DS.W
In realtà abbiamo con questa istruzione allocato solamente dello spazio per porre in memoria i numeri del vettore. Le altre due variabili saranno dei registri di sistema. Questo consente al sistema di generare del codice più corto e di accedere alla memoria meno frequentemente, facendo risultare il processo più veloce.
Progettazione del codice
Una volta che sappiamo su cosa possiamo operare, possiamo procedere alla progettazione del nostro codice. Facciamo una riflessione: il nostro programma sa dove prelevare e dove scrivere i dati, se gli vengono specificati di volta in volta gli indirizzi. Se avessimo un vettore di 1000 posizioni sarebbe disumano pensare di poter scrivere gli indirizzi di ogni singola cella di memoria componente il vettore. Dunque possiamo fare in modo di prendere il primo indirizzo del vettore e di incrementarlo di volta in volta, sino a riempirlo tutto.
Come sappiamo, l’Asim fa uso delle cosiddette label, vale a dire delle etichette che contraddistinguono una certa locazione di memoria. In altre parole, utilizzare una label all’interno del nostro algoritmo equivale a fornire l’indirizzo della locazione di memoria, alla quale vogliamo riferirci.
Esempio pratico
Supponiamo di avere definito un array di tre posizioni e di averlo chiamato vett. Scrivere vett all’interno dell’algoritmo oppure 9000, cioè il suo indirizzo di memoria, avrebbe pari risultato. Ma come raggiungere le posizioni 9001 e 9002 che non hanno un nome? È sufficiente copiare il primo indirizzo di memoria dell’array in un registro indirizzi, di volta in volta, incrementare il valore e in questo modo avere accesso alle altre posizioni.
Confronto tra Asim e C++
Chiariamoci ulteriormente le idee facendo un confronto tra l’Asim e il C++. Quando vogliamo accedere in C++ ad un array attraverso puntatore, basta assegnare al puntatore il nome dell’array, questo perché al nome dell’array corrisponde l’indirizzo di memoria dal quale l’array parte e dunque al puntatore viene assegnato il valore dell’indirizzo.
a[10]; //dichiarazione del vettore.
int p; //dichiarazione del puntatore al vettore.
-
Allocazione efficiente delle risorse
-
Tesi, Sviluppo di principi di allocazione della merce all'interno di magazzini automatizzati mediante modelli Multi…
-
Sistemi operativi: algoritmi di scheduling del disco, allocazione di file contigua con liste indicizzate, paginazio…
-
Fondamenti di informatica 1 - Esercizi