Unidad 7-Arreglo Unidimensionales de Datos

Defición: Un arreglo (array) es un medio de guardar un conjunto de objetos de la misma clase. Se accede a cada elemento individual del array mediante un número entero denominado índice. 0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo n, la dimensión del array. 

  • Declarar el array

  • Crear el array

  • Inicializar los elementos del array

  • Usar el array

Características

 

Un array se caracteriza por:

- Almacenar los elementos del array en posiciones de memoria contínua.

- Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencian por un índice o subíndice.

- Acceso directo o aleatorio a los elementos individuales del array.

  • todos los arrays son de tamaño variable, tanto si se especifica como no un tamaño al ser declarados.

  • Para ver el contenido de los arrays según van siendo ejecutadas las líneas de código que los declaran, utilizaremos la ventana Locales del depurador, que muestra las variables de ámbito local al procedimiento que estamos ejecutando actualmente.

  • Los arrays se crean con el operador new seguido del tipo y número de elementos.

  • Se puede acceder al número de elementos de un arraycon la variable miembro implícita length (por ejemplo, vect.length).

  • Se accede a los elementos de un array con los corchetes [] y un índice que varía de 0 a length-1.

  • Se pueden crear arrays de objetos de cualquier tipo. En principio un array de objetos es un array de referencias que hay que completar llamando al operador new.

  • Los elementos de un array se inicializan al valor por defecto del tipo correspondiente (cero para valores numéricos, la cadena vacía para Strings, false para boolean, null para referencias).

  • Como todos los objetos, los arrays se pasan como argumentos a los métodos por referencia.

  • Se pueden crear arrays anónimos (por ejemplo, crear un nuevo array como argumento actual en la llamada a un método).

 

CLASIFICACIÓN DE LOS ARREGLOS (ARRAY)

 

ARREGLOS (ARRAYS) UNIDIMENSIONALES

 

Un arreglo de una dimensión (unidimensional), también llamado vector o fila, es un tipo de datos estructurado compuesto de un número determinado de elementos, de tamaño fijo y elementos homogéneos (del mismo tipo). La característica de tamaño fijo se refiere a que el tamaño del array debe ser conocido en tiempo de compilación.

Por ejemplo, si deseamos conservar las puntuaciones de los 50 estudiantes de un examen de informática, se necesita reservar cincuenta posiciones de memoria, dar un nombre al arreglo y a cada uno de los 50 estudiantes asignarles una posición o índice del arreglo.

Monografias.com

Declaración de un array o vector

Siempre se deben declarar luego de las constantes (si existen). Un array o vector se declara por medio del tipo de array. La sintaxis es la siguiente:

Type

  Nombre_array = array [rango del subíndice] of tipo;

Nombre_array: Se refiere a un nombre de identificador válido.

Tipo_subíndice: Puede ser boolean, char o un rango de tipo enumerado.

Tipo: Se refiere al tipo de los elementos del vector. Todos los elementos deben ser del mismo tipo.

Ejemplos:

Type

X = array [1..8] of real;

Type

  Luces = (Rojo, Verde, Ámbar);

Type

  DiasDeSemana=(Lunes, Martes, Miércoles, Jueves, Viernes, Sabado, Domingo);

 ConjuntoDias = array

Type

  Salarios = array [A..Z] of real;

(En este caso es de tipo real porque el salario es de ese tipo. El subíndice indica que los salarios van de los empleados cuya inicial es A hasta la Z).

Las declaraciones de tipo array no crea ninguna variable específica de tipo array, sino que proporciona información del array como un todo.

Para declarar una variable tipo array, se utiliza la siguiente sintaxis:

Type

    Valores = array [1..10] of real;

Var

    Precios : Valores;

Primeramente se crea el tipo del array y luego se declara la o las variables referenciadas al array.

Otro ejemplo de aplicación puede ser el siguiente:

Const

    Max = 500;

Type

   Texto =  array [1..Max] of char;

Var

    Palabras, Letras: Texto;

En este ejemplo se crean dos variables arrays: Palabras y Letras. Las posiciones del array van de 1 a 500 y contendrán un valor tipo caracter.

Todas esas definiciones puestas en negrita y subrayado no son mas que "Colecciones de datos accesados por medio de un índice" excepto la ultima que me la he inventado. El primer tipo de índice es el llamado vector y se declara de la siguiente forma:

 

int vector[X]; ( Unidimensional de tipo entero. El índice se representaría de forma grafica tal y como lo veis en la figura de mas abajo. Como podéis observar solo necesitamos de un índice (x) para acceder a cada elemento de la "lista". Por ejemplo si quisiera rellenar la casilla 4 dándole el valor 10, solo tendría que poner: vector[4]=10;

Monografias.com

 

 

7.1-Arreglos (Arrays) Bidimensionales y Multidimensionales

Un array bidimensional (también llamado tabla o matriz) es un array con dos índices. Al igual que los vectores deben ser ordinales. Se declaran de igual manera que los arrays de una dimensión.

Un array bidimensional recoge valores de una tabla de doble entrada. Cada uno de los elementos se identifica y se asigna mediante una variable ($nombre) seguida de dos ([]) que contienen los índices del array.Los índices puede ser escalares -equivaldrían al número de fila y columna que la celda ocuparía en la tabla, o puede ser asociativo que equivaldría en alguna medida a usar como indices los nombres de la fila y de la columna

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.

Monografias.com

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:

  • identificador = array [índice1, indice 2] of tipo de elemento

  • identificador = array [ índice 1 ] of array [ indice 2 ] of tipo de elemento

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 :

Monografias.com

 


Multidimensional
 

La forma más simple de la matriz multidimensional es la matriz de dos dimensiones. Una matriz de dos dimensiones es, en esencia, una lista de matrices unidimensionales. Para declarar una matriz entera de dos dimensiones de tamaño x, y que iba a escribir algo de la siguiente manera:

 var
    nombreArray: array [1..x, 1..y] de tipo de elemento;

Cuando-tipo de elemento puede ser cualquier tipo de datos Pascal válido y nombreArray será un identificador de Pascal válida. Una matriz de dos dimensiones se puede visualizar como una mesa, lo que tendrá un número x de filas e y número de columnas. Una matriz de 2 dimensiones que contiene tres filas y cuatro columnas puede ser mostrado como a continuación:

Matrices de dos dimensiones en Pascal

Por lo tanto, todos los elementos de la matriz a se identifica por un nombre de elemento de la forma a [i] [j], donde a es el nombre de la matriz, y i y j son los subíndices que identifican de forma única cada elemento en una.

Ejemplo:
 
program pos_matriz; 
uses crt; 
const 
maximo = 5; 
type 
matriz1 = array [1..maximo,1..maximo] of integer; 
var 
matriz:matriz1; 
i,j:integer; 
begin 
randomize; 
for i:=1 to maximo do 
for j:=1 to maximo do 
begin 
write (i,',',j,'.- '); 
readln (matriz[i,j]); 
end; 

writeln ('todos los elementos de la matriz'); 

for i:=1 to maximo do 
begin 
for j:=1 to maximo do 
write (matriz[i,j],' '); 
writeln; 
end; 

writeln; 
writeln; 
writeln ('elementos de la diagonal principal'); 

for i:=1 to maximo do 
write (matriz[i,i],' '); 

writeln; 
writeln; 
writeln ('elementos encima de la diagonal principal'); 
for i:=2 to maximo do 
write (matriz[i-1,i],' '); 

writeln; 
writeln; 
writeln ('elementos por debajo de la diagonal principal'); 
for i:=1 to maximo-1 do 
write (matriz[i+1,i],' '); 

writeln; 
writeln; 
writeln ('elementos encima y debajo de la diagonal principal'); 
for i:=1 to maximo do 
begin 
if (i>1) then 
begin 
write ('encima ');write (matriz[i-1,i]); 
end; 
if (i<maximo) then 
begin 
write ('..........debajo ');writeln (matriz[i+1,i]); 
end; 
end; 
readln; 
end.