Los arrays se clasifican en:
• Unidimensionales (vectores o listas)
• Multidimensionales (tablas o matrices)
- Arreglos Unidimensionales (Vectores o listas)
Un arrays 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.
Supongamos que se desea conservar las edades de 10 personas.
Para almacenar estas edades se necesita reservar 10 posiciones de memoria,
darle un nombre al arrays, y a cada persona asignarle su edad correspondiente.
Nombre del
vector: Edad
Subíndice: [ 1 ], [ 2 ],…
Contenido: Edad [ 2 ] = 15
- Multidimensionales (tablas o matrices)
Hasta ahora nuestros arreglos son solo de una dimensión, es
decir, tenemos nuestros datos
encadenados en línea recta:
[ ] - [ ] - [ ] -
.... - [ ]
pero además, es posible definir arreglos de dos dimensiones,
o también conocidos como matrices:
[ ] - [ ] - [ ] -
.... - [ ]
| | | |
[ ] - [ ] - [ ] -
.... - [ ]
| | | |
. . . .
. . . .
. . . .
[ ] - [ ] - [ ] -
.... - [ ]
A simple vista la estructura parece muy compleja pero no lo
es tanto. En realidad un arreglo
bidimensional es tratado en forma muy similar a un arreglo
unidimensional. Veamos como se
definen:
var nombre: ARRAYS[
rango1, rango2 ] OF tipo;
Por ejemplo:
var Matriz: ARRAYS[ 1..3, 1..5 ] OF integer;
es un arreglo bidimensional de 3x5. Originalmente este
arreglo esta vacio:
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
y si queremos guardar algo en alguna posición solo hacemos:
nombre[ columna, fila
] := valor;
Por ejemplo: Matriz[
2, 2 ]:=3;
y el arreglo quedaría
as¡:
[ ] - [ ] - [ ]
[ ] - [3] - [ ]
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
[ ] - [ ] - [ ]
El resto de las operaciones son las mismas que con los
arreglos.
También podemos utilizar contadores para movernos por las
filas y las columnas de manera de
leer, imprimir o copiar un arreglo bidimensional. Veamos un
ejemplo:
------------------------------------------------------------------------------
uses crt;
var M:
arrays[1..3, 1..4] of integer;
c, f: integer;
begin
randomize;
clrscr;
{ Rellena la matriz
con numeros al azar }
for f:=1 to 4 do
for c:=1 to 3 do
M[c,f] := random(10);
{ Imprime la matriz }
for f:=1 to 4 do
begin
for c:=1 to 3 do write( '[', M[c,f], ']' );
writeln;
end;
readln;
end.
------------------------------------------------------------------------------
Así como arreglos bidimensionales también podemos crear
arreglos de 3, 4, 5 ... y todas las
dimensiones que queramos:
Ej.: var R1:
array[1..3, 0..5, -1..7, -2..6 ] of integer;
Pero solo podemos representar gráficamente hasta de 3
dimensiones, las demás solo se consideran como estructuras para almacenar datos
- Arreglos 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 qué persona se refiere dicha edad se puede usar otro
arreglo en forma paralela y asociarle los nombres de manera simultánea con las
edades.
Operaciones básicas
- Lectura
Se dice que se efectúa una lectura, o acceso a la
estructura, cuando una variable de tipo arreglo figura como factor en una
expresión. La evaluación del factor se logra, previamente calculando el valor
del índice, para luego acceder en la estructura el valor de la componente
correspondiente.
- Escritura
Se dice que se efectúa una escritura, o asignación
selectiva, si una variable de tipo arreglo aparece a la izquierda en una
instrucción de asignación. En este caso la expresión de la derecha, debe tener
igual tipo que la base del arreglo. También deben calcularse la expresiones que
figuran como índices de la variable, para asignarle posteriormente el valor ya
calculado de la expresión a la derecha del símbolo de asignación.
No hay comentarios:
Publicar un comentario