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. */
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.
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] :
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 ] ;
}
Post Comment
No comments