sábado, 18 de marzo de 2017

Clasificación de arreglos de pascal

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