Arreglos y matrices - 6502.cl

Anuncio
INACAP
Universidad Tecnológica de Chile
Sede Santiago Centro
Taller de Programación I
Curso Java J2SE
Tema 04:
Arreglos y Matrices
en Java
Ing. Manuel López Ramos
(versión 2)
Parte I
Arreglos en Java
Arreglos en Java
Un arreglo es una estructura de datos lineal, que puede almacenar 1 ó más datos, y que
presenta sólo una dimensión (1 dimensión = largo).
●
Posiciones
de datos
variable
Celdas de datos
referencia
Los datos de un arreglo se almacenan en celdas de memoria, de manera contigua. A cada
celda se le asigna un número entero que indica la posición de un dato con respecto a los
demás.
●
●
La primera posición es la cero; la última posición es igual al largo del arreglo menos 1.
Los arreglos, al igual que los strings, tienen una propiedad
fundamental: su largo o cantidad de celdas de datos.
a) primera posición del arreglo = 0
b) última posición del arreglo = largo del arreglo - 1
Arreglos en Java
●
Los arreglos sólo pueden almacenar datos de un sólo tipo primitivo o de un sólo tipo de objetos.
Para definir un arreglo se debe indicar: el tipo de todos sus datos, la cantidad de celdas de memoria (o
posiciones) a generar y un nombre de variable. Para crear las celdas se utiliza la palabra clave new.
●
Los arreglos son tipos de datos para los cuales, una vez definido el largo del arreglo, éste no puede ser
modificado con posterioridad -> arreglos de largo no modificable
●
arreglo nulo
a) Forma de C:
int arrDatos[];
// sólo declaración
char arrLetras[] = new char[4];
b) Forma de Java:
int[] arrDatos = new int[5];
float[] notasCurso = new float[6];
Arreglos en Java
Para inicializar un arreglo, basta con definir sus elementos entre llaves, separados con
comas. Esto automáticamente crea celdas de datos para cada elemento.
●
int[] arrDatos = {9, 8, 7, 6, 5};
float[] notasCurso = {4.0F, 1.0F, 6.5F, 5.5F, 7.0F, 4.5F};
boolean[] estadoPersonaje = {false, true};
Arreglos en Java
Diferentes formas de declaración y definición de arreglos: notar que los arreglos también
utilizan la notación de referencias para unir la variable con el espacio para datos.
●
int[] arrDatos;
int[] arrDatos = null;
arreglo nulo
(sin espacio para datos)
int[] arrDatos = new int[5];
espacio de datos
inicializado con ceros
int[] arrDatos = {9, 8, 7, 6, 5};
espacio con datos
inicializados
explícitamente
Arreglos en Java
Arreglos de strings (o de cualquier objeto): notar que para un arreglo de objetos (por ejemplo de
strings) la notación gráfica de referencias indica cuatro elementos:
●
●
●
●
●
●
la variable
la referencia de la variable al espacio de datos
el espacio de datos (que contiene referencias a 1 ó varios strings)
los strings, en otras celdas de memoria.
Por ejemplo,recordando cómo se representaba una variable de string, se tiene que:
String frase3 =
"Buenas noches!";
String[] diccionario =
{"árbol", "barco", "casa", "dado", "e"};
Arreglos en Java
Para almacenar un nuevo dato en el arreglo, se debe indicar el nombre del arreglo, la
posición a utilizar y el nuevo dato a almacenar.
●
int[] arrDatos = {9, 8, 7, 6, 5};
arrDatos[3] = 45;
posición de la celda a utilizar
arrDatos[1] = -234;
nuevo dato a almacenar
Arreglos en Java
Para utilizar un dato de un arreglo basta con indicar el nombre del arreglo y la posición que
se requiera.
●
int total = arrDatos[0] + arrDatos[2] * 3 - arrDatos[4];
arrDatos[2] = arrDatos[0] - total;
Parte II
Matrices en Java
Matrices en Java
Las matrices son estructuras de datos derivadas de los arreglos, que puede almacenar 1
ó más datos, y que presentan dos ó más dimensiones (largo, ancho, profundidad, etc.) Las
más populares son las de 2 y 3 dimensiones, aunque pueden existir matrices con más
dimensiones, si así se requiere.
Posiciones
de columna
●
variable
referencia
Celdas de datos
Posiciones
de fila
En cada dimensión, la primera posición es la cero; la última posición de cada dimensión es
igual al largo de la dimensión menos 1.
●
Matrices en Java
Las matrices, al igual que los arreglos, sólo pueden almacenar datos de un sólo tipo primitivo o de un
sólo tipo de objetos y su tamaño, una vez definido, no se puede modificar, a menos que se desee perder
todos los datos ya almacenados en ella.
●
Si sólo se declara una matriz, su inicialización por defecto será hecha con el valor null.
●
a) Forma de Java:
matriz nula
int[][] matDatos;
int[][] matDatos = null;
int[][] matDatos = new int[3][5];
columnas
filas
Matrices en Java
Para inicializar una matriz, basta con definir sus elementos entre llaves, separados con
comas. La inicialización consta de los siguientes elementos:
●
●
●
●
un par de llaves externas para definir toda la matriz
pares de llaves internas para definir filas de la matriz, según la cantidad de dimensiones
que tenga la estructura.
Por ejemplo, para una matriz de 3 filas x 5 columnas (2 dimensiones), se define lo siguiente:
int[][] matDatos =
{
{ 4, -1, 5, 0, 9 },
// Fila 0
{ 292, 12, -34, 67, -8 }, // Fila 1
{ 45, 0, 0, 0, 1}
// Fila 2
};
Matrices en Java
Para almacenar un nuevo dato en la matriz, se debe indicar el nombre de la matriz, la
posición a utilizar (con una coordenada de N valores para N dimensiones) y el nuevo dato a
almacenar.
●
int[][] matDatos = { { 4, -1, 5, 0, 9 }, { 292, 12, -34, 67, -8 },
{ 45, 0, 0, 0, 1} };
posición de fila-columna
matDatos[2][3] = -10;
nuevo dato a almacenar
Matrices en Java
Para leer un dato de la matriz y utilizarlo, se especifican sus coordenadas de fila-columna
dentro de una expresión aritmética u operatoria de objetos.
●
int[][] matDatos = { { 4, -1, 5, 0, 9 }, { 292, 12, -34, 67, -8 },
{ 45, 0, 0, -10, 1} };
System.out.println( matDatos[2][3] + matDatos[1][2] );
+
Matrices en Java
Nota importante: la representación de matrices utilizada en las diapositivas anteriores puede
ser considerada como una simplificación, debido a que la forma real define cada una de las
filas como independiente de las demás (como lo indica el diagrama siguiente):
●
La independencia de las filas permite inclusive crear matrices con filas de diferente tamaño
(por ejemplo, la fila 0 con 5 celdas, la fila 1 con 20 celdas y la fila 2 con 100 celdas, todas
dentro de la misma matriz).
●
Propiedades de los arreglos y matrices (en Java)
●
Notas importantes:
1.- La cantidad de elementos del arreglo (el largo) de arr1 es igual a:
largoArreglo = arr1.length()
2.- La cantidad de filas de la matriz mat1 es igual a:
totalFilas = mat1.length()
3.- La cantidad de columnas de la fila nF de la matriz mat1 es igual a:
totalCols = mat1[nF].length()
NOTA: para una matriz rectangular, la cantidad de columnas de cada fila es igual a:
totalCols = mat1[0].length()
Descargar