2. ARRAY
En programación, una matriz o vector (llamados en inglés arrays) es una zona de
almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los
elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como
un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos
dimensiones).
3. Índices
Todo vector se compone de un determinado número de elementos. Cada elemento
es referenciado por la posición que ocupa dentro del vector. Dichas posiciones son
llamadas índice y siempre son correlativos. Existen tres formas de indexar los
elementos de una matriz:
1). Indexación base-cero (0):
vector[índice_0][índice_1]...[índice_N]
2). Indexación base-uno (1):
vector[índice_1,índice_2...,índice_N]
3). Indexación base-n (n):
vector(índice_1,índice_2...,índice_N)
4. Notación
La representación de un elemento en un vector se suele hacer mediante el
identificador del vector seguido del índice entre corchetes, paréntesis o llaves:
Notación
vector[índice_1,índice_2...,índice_N]
vector[índice_0][índice_1]...[índice_N]
vector(índice_1,índice_2...,índice_N)
Aunque muchas veces en pseudocódigo y en libros de matemática se
representan como letras acompañadas de un subíndice numérico que indica la
posición a la que se quiere acceder. Por ejemplo, para un vector "A":
A0,A1,A2,... (vector unidimensional)
5. Forma de acceso
La forma de acceder a los elementos de la matriz es directa; esto significa que el
elemento deseado es obtenido a partir de su índice y no hay que ir buscándolo
elemento por elemento (en contraposición, en el caso de una lista, para llegar, por
ejemplo, al tercer elemento hay que acceder a los dos anteriores o almacenar un
apuntador o puntero que permita acceder de manera rápida a ese elemento).
Para trabajar con vectores muchas veces es preciso recorrerlos. Esto se realiza por
medio de bucles.
Por Ejemplo:
for i:=1 to MaxPersonas-1 do
begin
for j:=i+1 to MaxPersonas do
begin
if edades[i]>edades[j] then
begin
paso :=edades[i];
edades[i]:=edades[j];
edades[j]:=paso
end
end;
6. Vectores dinámicos y estáticos
Lo habitual es que un vector tenga una cantidad fija de memoria asignada, aunque
dependiendo del tipo de vector y del lenguaje de programación un vector podría tener
una cantidad variable de datos. En este caso, se les denomina vectores dinámicos, en
oposición, a los vectores con una cantidad fija de memoria asignada se los denomina
vectores estáticos.
Ejemplos:
Edad =array [1..5] of integer;
Edad=array[1..np] of integer;
7. Arrays/Vector unidimensionales
Un array de una dimensión (vector o lista) es un tipo de datos
estructurado compuesto de un número de elementos finitos, tamaño
fijo y elementos homogéneos (mismos tipos).
Nombre del vector edades
Subíndice [1],[2],...
Contenido edades[2]= 28
8. Arrays paralelos
Dos o más arrays que utilizan el mismo subíndice para referirse a términos homólogos se
llaman arrays paralelos.
Basados en el programa anterior se tienen las edades de 'x' personas, para saber a que
persona se refiere dicha edad se puede usar otro arreglo en forma paralela y asociarle los
nombres de manera simultánea con las edades.
9. Arrays bidimensionales (tablas)
Un array bidimensional (tabla o matríz) es un array con dos índices, al
igual que los vectores que deben ser ordinales o tipo subrango.
Para localizar o almacenar un valor en el array se deben especificar dos
posiciones (dos subíndices), uno para la fila y otro para la columna.
Formato:
1. identificador = array [índice1, indice 2] of tipo de elemento
2. identificador = array [ índice 1 ] of array [ indice 2 ] of tipo de elemento
10. Supongase que se desea almacenar las calificaciones de 5 alumnos obtenidas en 3 examenes
y mostrar en orden ascendente sus promedios respectivamente. En este caso se usará un
array bidimensional (tabla o matríz) de 5 filas y 4 columnas en la cual se almacenará las
calificaciones de 3 examenes en 3 columnas y la cuarta columna se utilizará para almacenar
su promedio respectivo, además de un array unidimensional (vector) donde en forma
paralela se almacenarán los nombres de los alumnos de la siguiente forma :
11. Vectores multidimensionales
En Basic, Java y otros lenguajes es posible declarar matrices
multidimensionales, entendiéndolas como un vector de vectores. En dichos casos en
número de elementos del vector es el producto resultante de cada dimensión.
Por ejemplo el vector v (4,1) tiene 10 elementos se calcula del siguiente modo: (0-4) *
(0-1). Los elementos de la primera dimensión del vector contiene 5 elementos que van
del '0' al '4' y la 2º dimensión tiene 2 elementos que van desde '0' a '1'. Los elementos
serían accedidos del siguiente modo:
elemento 1: (0,0)
elemento 2: (0,1)
elemento 3: (1,0)
elemento 8: (3,1)
elemento 9: (4,0)
elemento 10: (4,1)
12. Turbo Pascal no limita el número de dimensiones de un array, pero sí que debe estar
declarado el tipo de cada subíndice.
Formato :
1. identificador = array [índice1] of array [índice 2]..
of array [índice n] of tipo de elemento
2. identificador = array [índice 1, índice 2,...,índice n] of tipo de elemento
Ampliando el ejemplo anterior supongase que ahora deseamos capturar
calificaciones para 3 materias en cuyo caso aplicaremos un array tridimensional. De
la siguiente forma :
13. La estructura array
Var
Alumno : array [1..MaxAlumno] of string[10];
examen : array [1..MaxAlumno,1..MaxExamen,1..MaxMateria] of real;
aux_examen : array [1..MaxExamen]of real;
14. Las variables de tipo array se declaran
en la sección Var o Type.
Declaración en Var:
Var
nombres : array[1..30] of string[30];
calif : array[1..30] of real;
numero : array[0..100] of 1..100;
Declaración en Type:
Type
nombres : array[1..30] of string[30];
calif : array[1..30] of real;
numero : array[0..100] of 1..100;
Var
nom : nombres;
califica : calif;
num : numero;