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