Nuevo

5.1 Unidimensionales: conceptos básicos, operaciones y aplicaciones


5.1 Unidimensionales: conceptos básicos, operaciones y aplicaciones

Conceptos básicos

Un arreglo unidimensional tiene una sola dimensión. A los arreglos de una dimensión también se les llama listas.
Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior.

Operaciones

Para manejar un arreglo, las operaciones a efectuarse son:
·         Declaración del arreglo,
·         Creación del arreglo,
·         Inicialización de de los elementos del arreglo, y
·         Acceso a los elementos del arreglo.

Aplicaciones

Los elementos de un arreglo son variables del tipo base del vector, por lo que se utilizan de la misma manera en expresiones y demás instrucciones, como la asignación. Por ejemplo, para asignar un valor a un elemento de un arreglo basta con escribir:
            arreglo[indice] = valor;
en donde arreglo es el nombre de la variable e indice hace referencia a la posición del elemento al que se le quiere asignar el valor.
Importante: Puesto que los arreglos son estructuras complejas (es decir, no básicas), no es posible asignar un arreglo a otro mediante una simple asignación (=). Para hacer esto es necesario escribir un ciclo y asignar elemento a elemento.
Algunos lenguajes como C, no controla la validez de los índices que se emplean para referenciar un arreglo. Esto quiere decir que es posible cometer errores muy difíciles de detectar en este sentido. Es necesario prestar especial interés a los valores que toman los índices para evitar estos problemas.
Por ejemplo, la siguiente porción de código compila sin problemas (es decir, sin errores sintácticos), pero probablemente produzca un error en tiempo de ejecución al referenciarse posiciones inexistentes del arreglo.
/* Ejemplo de error por acceso fuera de rango a un arreglo. */
/* Las posiciones con índices del 20 al 29 son inválidas. */
int i, arreglo[20];
for (i=0; i<30; i++) arreglo[i] = 0;
También es común cometer estos errores olvidando que las posiciones de los arreglos están numeradas a partir del índice cero. Es decir, en un arreglo de tamaño N las posiciones están numeradas de 0 a N-1.
El nombre de un arreglo también puede emplearse sin índice, bajo ciertas circunstancias, por ejemplo, para pasar el arreglo completo como parámetro a una función. Cuando se emplea el nombre solo, lo que se está manejando es en realidad un puntero al primer elemento del arreglo. Más adelante, en la sección de strings se hará una descripción más detallada sobre esto. 


Listas

Resolvamos el problema de manejar dos listas: una con los nombres de un grupo de alumnos y otra con una calificación para cada uno de los alumnos.
Primero se deberán leer los nombres de los alumnos y la calificación que corresponde a cada uno de ellos y después habrá que desplegar dos columnas: una con los nombres de los alumnos y la otra con sus respectivas calificaciones.
La lectura debe lucir de manera similar a la siguiente:
Número de alumnos: 30
Nombre [0] :
Calificación[0] :
Nombre [1] :
Calificación[1] :
Nombre [2] :
Calificación[2] :
...
...
Nombre [29] :
Calificación[29] :

El despliegue en el monitor luciría así:
No.
Nombre
Calif.
1
Hugo
100
2
Paco
90
3
Luís
95
...

...
30
Donald
70

Vectores

Otra de las aplicaciones de los arreglos es el manejo de vectores. En Física, los vectores sirven para representar velocidades, aceleraciones, etc.
Podemos representar a un vector como un segmento de recta dirigida que tiene magnitud, orientación y sentido.
En un espacio tridimensional, un vector puede expresarse por medio de tres componentes sobre los ejes cartesianos. Cada componente puede, a su vez, expresarse en función de los vectores unitarios i, j, k ,que se ubican en los ejes x, y, z, respectivamente.
Por ejemplo , un vector v1 puede representarse en función de sus componentes como:
v1 = 20i + 15j + 35k
Si tenemos otro vector,
v2 = -5i + 40j + 25k
La suma de los dos vectores sería:
s = v1+v2 = (20-5)i +(15+40)j+(35+25)k
s = 15i + 55j + 60k
Un segmento del programa para este ejemplo sería:
double v1[ ] = new double[3];
double v2[ ] = new double[3];
double s[ ] = new double[3];
v1[0] = 20;
v1[1] = 15;
v1[2] = 35;
v2[0] = -5;
v2[1] = 40;
v2[2] = 25;

for(int i=0; i < 3 ; i++)
{
s[ i ] = v1[ i ] + v2[ i ] ;
}



No comments