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.
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;
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.
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:
|
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 :
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:

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.
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.