MANEJO DE estructuras de dos dimensiones y persistencia
Nychol Bazurto Gómez
Matrices
Nivel
6
Persistencia
Construcción de un programa
VEREMOS lo siguiente
- Cómo definir, crear y manipular matrices (estructuras contenedoras de 2 dimensiones).
- Patrones de recorrido de matrices.
- Esquema simple de persistencia (archivos).
MATRICES
MATRICES
Contenedoras de dos dimensiones de tamaño fijo cuyos elementos son referenciados utilizando dos índices: índice de la fila e índice de la columna.
0,0 | 0,1 | 0,4 | ||
---|---|---|---|---|
1,0 | ||||
3,3 | ||||
5,2 | ||||
6,4 |
DEclaración de una matriz
public class Imagen
{
//--------------------------------------
// Atributos
//--------------------------------------
private int ancho;
private int alto;
private Color[][] bitmap;
}
Es conveniente declarar el número de columnas (ancho) y el número de filas (ancho) como atributos. Esto va a facilitar realizar posteriores modificaciones al programa.
private <tipoDato> [ ][ ] >nombreMatriz>;
inicialización de una matriz
// Constructor
//--------------------------------------
public Imagen( )
{
ancho = 400;
alto = 300;
bitmap = new Color[ alto ][ ancho ];
}
nombreMatriz = new <tipoDato>[filas][columnas];
Para filas y columnas se pueden usar constantes.
Al inicializar la matriz, se construye una matriz con el número de filas y columnas dadas, pero dentro de cada casilla de la matriz no hay valores asignados, por lo que se debe inicializar cada casilla. Esto se puede hacer una por una, o con un for doble.
- Para inicializar una casilla, se debe indicar su fila y columna y asignarle un valor.
Matrices
bitmap[ 0 ][ 1 ] = new Color( 0, 0, 255 );
-
Los recorridos sobre las matrices se hacen con un for doble, el for externo (el de int i) tiene el índice de las filas y el for interno (el de int j) tiene el índice de las columnas.
Esto implica que el recorrido se daría de izquierda a derecha y de arriba abajo.
Acceso a los Elementos de una Matriz
public void imagenAzul( )
{
for( int i = 0; i < alto; i++ )
{
for( int j = 0; j < ancho; j++ )
{
bitmap[ i ][ j ] = new Color( 0, 0, 255 );
}
}
}
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
Comienza en la fila 0 (int i = 0) y columna 0 (int j = 0), esto es la casilla superior izquierda (resaltada en azul).
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
En la siguiente iteración j aumenta en 1 (j++) entonces la casilla actual es 0,1
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
En la siguiente iteración j aumenta en 1 (j++) entonces la casilla actual es 0,2
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
En la siguiente iteración j aumenta en 1 (j++) entonces la casilla actual es 0,3
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
- En la siguiente iteración j aumenta en 1 (j++), pero j no cumple la condición j < FILAS, por lo que el recorrido interno se acaba, por lo tanto i aumenta en i (recorrido externo con i++) y j vuelve a empezar en 0. La casilla actual es 1,0 (con i = 1 y j=0)
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
- En la siguiente iteración j aumenta en 1 (j++) entonces la casilla actual es 1,1
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
...CONTINUEMOS...
Acceso a los Elementos de una Matriz
for( int i = 0; i < FILAS; i++ )
{
for( int j = 0; j < COLUMNAS; j++ )
{
//...
}
}
...CONTINUEMOS...
Cómo comparar los elementos de una matriz
- Si los elementos de una matriz son de tipo simple (enteros, reales, etc.)
–Se comparan con el operador ==.
- Si los elementos NO son de tipo simple, sino que son objetos, en la matriz se guarda una referencia (apuntador) al objeto y NO el objeto mismo. En este caso, hay que compararlos con equals.
- Contar cuántos puntos en la imagen son rojos
- Cambiar el color de todos los puntos en la imagen haciéndolos mas oscuros
- Cambiar cada color de la imagen por su negativo
- Contar cuántos puntos en la imagen tienen una componente roja distinta de cero
Patrones de Algoritmo para Recorrido de Matrices
Patrón de Recorrido Total
Debemos recorrer todos los elementos que contiene la matriz para lograr la solución.
persistencia
¿PREGUNTAS?
¿PREGUNTAS?
- Text
GRACIAS
- J. Villalobos and R. Casallas, Fundamentos de Programación. https://cupi2.virtual.uniandes.edu.co/libro-del-curso-pdf/libro-completo
- Icons made by wanicon from Flaticonis licensed by Creative Commons BY 3.0
Ejercicios
By nychi713
Ejercicios
- 519