SlideShare a Scribd company logo
1 of 49
Download to read offline
NIVEL 6

         ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1)




                     Mario José Villamizar Cano
                   mj.villamizar24@uniandes.edu.co
                             Oficina ML-637
http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php
  Grupo de Tecnologías de Información y Comunicación (COMIT)
       Departamento de Ingeniería de Sistemas y Computación
           Universidad de los Andes, Bogotá D.C., Colombia
NIVEL 6

             REDES SOCIALES




           mjvc007@hotmail.com




        http://twitter.com/mariocloud




http://linkedin.com/in/mariojosevillamizarcano
NIVEL 6

              NIVEL 6 – TEMAS PRINCIPALES

  El concepto de matriz como elemento de modelado para
agrupar los elementos del mundo en una contenedora de
dos dimensiones de tamaño fijo.

  Patrones y uso de algoritmos para el manejo de
matrices.

  Uso de un esquema simple de persistencia para
manejar el estado inicial de un programa.

   Desarrollar un programa completo, siguiendo las
etapas del proceso que se debe seguir para resolver un
problema usando un computador.
NIVEL 6

                                NIVEL 6
Introducción (Matrices y Persistencia)

Contenedoras de dos dimensiones

Caso de estudio: Visor de Imágenes

Declaración de una matriz

Inicialización de una matriz

Acceso a los elementos de una matriz

Comparar los elementos de una matriz

Patrones de algoritmos para recorridos de matrices
    Patrón de recorrido total
    Patrón de recorrido parcial
    Otros algoritmos de recorridos
NIVEL 6

                                Matrices



   Las matrices son una herramienta de modelado que permite
almacenar elementos en una contenedora de dos dimensiones
compuesta de filas y columnas.

   Ejemplos de uso:

Elaborar un tablero de ajedrez, de damas chinas, etc.

Manipulación de imágenes fotográficas para el manejo de pixeles.

Manejo de tablas que contienen información. Por ejemplo: la tabla de
posiciones de un campeonato de fútbol, manejo de matrices
matemáticas, etc.
NIVEL 6

                       Matrices


Fila 0                            Posición(X,Y)
                                     X=fila
Fila 2                             Y=columa
                                   Matriz(2,4)




         Columna 0   Columna 3
NIVEL 6

                    CASOS DE ESTUDIO
Caso de estudio 1: Visor de Imágenes
NIVEL 6

                    CASOS DE ESTUDIO
Caso de estudio 2: Campeonato de Fútbol
NIVEL 6

                     HOJAS DE TRABAJO
Hoja de trabajo 1: Sopa de Letras
NIVEL 6

                    HOJAS DE TRABAJO
Hoja de trabajo 2: Asignación de Tareas
NIVEL 6

              Caso de estudio 1: Visor de Imágenes




   Aplicación para la visualización de imágenes en formato BMP
(BitMaP).
    Máxima dimensión de la imagen: 300 x 400
NIVEL 6

                 Caso de estudio 1: Visor de Imágenes (2)




   En el formato BMP se guarda la información del color de cada pixel.
   El color de un pixel se expresa en formato RGB, en el cual se incluyen
tres componentes: rojo (R), verde (G) y azul (B).
   Cada componente se expresa por un número entre 0 y 255.
                           Componente Rojo   Componente Verde   Componente Azul
        Nombre del Color
                                (R)               (G)                (B)
             Negro               0                 0                  0
             Blanco             255               255                255
              Rojo              255                0                  0
             Verde               0                255                 0
              Azul               0                 0                 255
            Amarillo            255               255                 0
              Cyan               0                255                255
            Magenta             255                0                 255
NIVEL 6

              Caso de estudio 1: Visor de Imágenes (3)




  Requerimientos funcionales:

R1 – Mostrar una imagen BMP

R2 – Transformar la imagen
NIVEL 6

Caso de estudio 1: Visor de Imágenes (4)
NIVEL 6

            Caso de estudio 1: Visor de Imágenes (5)

                           0    1    2     3    4      5

                      0
Color bitmap =
                      1

                      2

                      3

                      4




  3 Colores (Rojo, Verde, Azul)
  ALTO_MAXIMO, ANCHO_MAXIMO
NIVEL 6

                                 Declaración de una matriz


/**
 * Imagen de mapa de colores
 */
public class Imagen
{
    public static final int ANCHO_MAXIMO = 400;

  public static final int ALTO_MAXIMO = 300;

  //-----------------------------------------------------------------
  // Atributos
  //-----------------------------------------------------------------

  /**
   * Matriz de colores de la imagen
   */
  private Color bitmap[ ][ ];
NIVEL 6

                       Inicialización de una matriz


/**
 * Imagen de mapa de colores
 */
public class Imagen
{

  public Imagen( String archivo ) throws IOException
  {
    bitmap = new Color[ALTO_MAXIMO][ANCHO_MAXIMO];
  }
NIVEL 6

               Acceso a los elementos de una matriz
 Índices (Índice de fila e índice de columna)

                                   0     1      2   3   4   5

                             0
 Color bitmap =
                             1

bitmap[ fila ][ columna ]    2
bitmap[ 3 ][ 1 ]
                             3

                             4


      int compRojo = bitmap[ 3 ][ 1 ].getRed( );
      int compVerde = bitmap[ 3 ][ 1 ].getGreen( );
      int compAzul = bitmap[ 3 ][ 1 ].getBlue( );
NIVEL 6

               Acceso a los elementos de una matriz (2)
   Índices (Índice de fila e índice de columna)

/**
 * Imagen de mapa de colores
 */
public class Imagen
{
    public void iniciarMatriz(){
      for( int i=0; i<ALTO_MAXIMO ; i++ ){
        for( int j=0; j<ANCHO_MAXIMO ; j++ ){
            bitmap[ i ][ j ] = new Color ( 0, 0, 255);
        }
      }
    }
NIVEL 6

            Comparar los elementos de una matriz
Elementos de matrices simples se compararan con el operador
==
Elementos de matrices de referencias a objetos se comparan con el
método equals
                                 :Color
              Color color1 =
                               255, 0, 0

                                          0      1    2     3

                                 0
        Color bitmap =
                                 1



                                      :Color                           :Color
                Color color2 =                       Color color3 =
                                     0, 255, 0                        0, 255, 0
NIVEL 6

           Comparar los elementos de una matriz (2)


Color color1 = new Color (255, 0, 0);
bitmap[0][0] = color1;
bitmap[0][2] = color1;

Color color2 = new Color (0, 255, 0);
bitmap[1][1] = color2;

Color color3 = new Color (0, 255, 0);
bitmap[1][3] = color3;

bitmap[0][0].equals( bitmap[1][1] ) //Respuesta:

bitmap[0][0].equals( bitmap[1][3] ) //Respuesta:

bitmap[1][1].equals( bitmap[1][3] ) //Respuesta:

bitmap[0][0].equals( bitmap[0][2] ) //Respuesta:
NIVEL 6

           Comparar los elementos de una matriz (3)


Color color1 = new Color (255, 0, 0);
bitmap[0][0] = color1;
bitmap[0][2] = color1;

Color color2 = new Color (0, 255, 0);
bitmap[1][1] = color2;

Color color3 = new Color (0, 255, 0);
bitmap[1][3] = color3;

bitmap[0][0].equals( bitmap[1][1] ) //Respuesta: false

bitmap[0][0].equals( bitmap[1][3] ) //Respuesta: false

bitmap[1][1].equals( bitmap[1][3] ) //Respuesta: false

bitmap[0][0].equals( bitmap[0][2] ) //Respuesta: true
NIVEL 6

         Patrones de algoritmos para recorridos de matrices
                      Patrón de recorrido total

Ejercicios de recorrido total de matrices:

   Definir un método denominado rojorCero ( ) en la clase Image, el cual
retorna el número de pixeles de la imagen que tiene como componente
rojo el valor cero.


   Dado un color recibido como parámetro, en la clase Imagen definir el
método cuantosPixelColor(Color colorBuscado), el cual retorna el
número de pixeles de la imagen cuyo color es el recibido como
parámetro.


Identificación del patrón del recorrido (esqueleto de patrón)
NIVEL 6

         Patrones de algoritmos para recorridos de matrices
                     Patrón de recorrido parcial

Ejercicios de recorrido parcial de matrices:

    Dado un color recibido como parámetro, en la clase Imagen definir el
método existePixelColor(Color colorBuscado), el cual retorna un valor
indicando si en la imagen hay algún pixel con el color recibido como
parámetro.

   Definir            un            método             denominado
todasLasColumnasTienenUnPuntoRojo ( ) en la clase Image, el cual
indica si en cada una de las columnas de la imagen hay al menor un
pixel con color rojo.

Identificación del patrón del recorrido (esqueleto de patrón)
NIVEL 6

         Patrones de algoritmos para recorridos de matrices
                   Otros algoritmos de recorridos

Ejercicios con otros algoritmos de recorridos de matrices:

    Dado el valor de una columna recibido como parámetro, en la clase
Imagen definir el método numeroPixelesMaximoVerde el cual retorna el
número de píxeles de la columna recibida como parámetro que tiene en
su componente verde el valor máximo (255).

    Elaborar un método en la clase Imagen que retorne el número de la
fila con el mayor número de pixeles de un color, el color es recibido
como parámetro.

    Elaborar un método en la clase Imagen que cambie los pixeles de un
color por otro color. El método recibe como parámetro dos colores, el
antiguo color y el nuevo color, y debe realizar el cambio requerido.
NIVEL 6



PREGUNTAS
NIVEL 6

                                 NIVEL 6
Caso de estudio: Campeonato de futbol

Persistencia y manejo del estado inicial

El concepto de archivo

Archivo de propiedades

Escoger un archivo desde el programa

Inicialización del estado de la aplicación

Manejo de los objetos de la clase Properties

Completar la solución del ejercicio del campeonato

    Registrar el resultado de un partido
    Construir la tabla de posiciones
    Implementación de otros métodos sobre matrices
NIVEL 6

           Caso de estudio 2: Campeonato de Fútbol




Registrar el resultado de un partido

Leer la información del campeonato desde un archivo de entrada

Presentar la tabla de goles

Presentar la tabla de posiciones
NIVEL 6

Caso de estudio 2: Campeonato de Fútbol (2)
NIVEL 6

          Caso de estudio 2: Campeonato de Fútbol (3)




public class Equipo
{
    //----------------------------------------------------
    // Atributos
    //----------------------------------------------------

    /**
     * Es el nombre del equipo
     */
    private String nombre;

}
NIVEL 6

                 Caso de estudio 2: Campeonato de Fútbol (3)


public class Campeonato
{
  // Constantes

  public static final int SIN_JUGAR = -1;
  public static final int INVALIDO = -2;

  // Atributos

  private int maxEquipos;

  private int[ ][ ] tablaGoles;

  private Equipo[ ] equipos;
NIVEL 6

Persistencia y Manejo del Estado Inicial – Concepto de archivos




Ruta de un archivo

Extensión del archivo

Nombre del archivo
NIVEL 6

Archivo de propiedades
NIVEL 6

                Escoger un archivo desde el programa

   Opción 1. Definir el archivo en el código fuente del programa

File archivoDatos = new File(“RutaArchivo”);

   Opción 2. Que el usuario seleccione el archivo

         JFileChooser fc = new JFileChooser( "./data" );
         fc.setDialogTitle( "Abrir archivo de campeonato" );
         int resultado = fc.showOpenDialog( this );
         if( resultado == JFileChooser.APPROVE_OPTION )
         {
             File archivoCampeonato = fc.getSelectedFile( );
NIVEL 6

         Inicialización del estado de la aplicación




public Campeonato( File arch ) throws Exception
{
    Properties datos = cargarInfoCampeonato( arch );
    inicializarEquipos( datos );
    inicializarTablaGoles( );
}
NIVEL 6

             Inicialización del estado de la aplicación (2)


 private Properties cargarInfoCampeonato( File arch ) throws Exception
{
    Properties datos = new Properties( );
    FileInputStream in = new FileInputStream( arch );
    try
    {
        datos.load( in );
        in.close( );
    }
    catch( Exception e )
    {
        throw new Exception( "Formato inválido" );
    }
    return datos;
}
NIVEL 6

   Inicialización del estado de la aplicación (3) - Manejo de los objetos de
                              la clase Properties

 private void inicializarEquipos( Properties datos )
{
     String strNumeroEquipos = datos.getProperty( "campeonato.equipos" );
     maxEquipos = Integer.parseInt( strNumeroEquipos );
     // Crea el arreglo de equipos, reservando el espacio definido en la
    propiedad "campeonato.equipos"
     equipos = new Equipo[maxEquipos];
     // Lee el nombre de cada equipo de la respectiva propiedad y
     crea el objeto que lo representa
     for( int i = 0; i < maxEquipos; i++ )
     {
         String nombreEquipo = datos.getProperty( "campeonato.nombre" + i );
         equipos[ i ] = new Equipo( nombreEquipo );
     }
}
NIVEL 6

               Inicialización del estado de la aplicación (4)


private void inicializarTablaGoles( )
{
    // Crea la matriz que contiene la tabla de goles
    tablaGoles = new int[maxEquipos][maxEquipos];
    // Inicializa todos los marcadores, dejando en la diagonal una marca
    especial
    for( int i = 0; i < maxEquipos; i++ )
    {
        for( int j = 0; j < maxEquipos; j++ )
        {
             if( i != j )
                 tablaGoles[ i ][ j ] = SIN_JUGAR;
             else
                 tablaGoles[ i ][ j ] = INVALIDO;
        }
    }
}
NIVEL 6

        Caso de estudio 2: Campeonato de Fútbol (4)

                   0             1             2             3             4

 equipos =     A.C. Milan       Inter     Juventus      Roma           Lazio



                                     0    1        2    3        4

                            0        -2   -1       -1   -1       -1
tablaGoles =
                            1        -1   -2       -1   -1       -1

                            2        -1   -1       -2   -1       -1

                            3        -1   -1       -1   -2       -1

                            4        -1   -1       -1   -1       -2
NIVEL 6

Completar la solución del ejercicio del campeonato - Registrar el
                    resultado de un partido
NIVEL 6

Completar la solución del ejercicio del campeonato - Construir la tabla
                            de posiciones
                     0            1              2           3            4

   equipos =     A.C. Milan   Inter        Juventus       Roma        Lazio


                                      0     1         2     3    4

                              0       -2    3         2     -1   -1
            tablaGoles =
                              1       4     -2        2     -1   -1
   Partidos jugados
                              2       2     5        -2     -1   -1
   Partidos ganados
   Partidos empatados                 -1    -1       -1     -2   4
                              3
   Partidos perdidos
   Goles a favor              4       -1    -1       -1     2    -2
   Goles en contras
   Puntos
NIVEL 6

                           Ejercicios con Matrices



Ejercicios con matrices:

   Elaborar un método que retorne el número de goles marcados por el
equipo cuyo nombre se recibe como parámetro.

    Elaborar un método que retorne el número de equipos que llevan un
valor negativo en el número de goles a favor .

    Elaborar un método que retorne el número de partidos empatados en
el campeonato.

   Elaborar un método que retorne el número de equipos que han
perdido por lo menos un partido.
NIVEL 6



PREGUNTAS
NIVEL 6

          Características adicionales de un JButton


Creación del Jbutton
JButton nuevo = new JButton("");

Creación del ícono que va a tener asignado el Jbutton
ImageIcon icono = new ImageIcon("./data/sur.gif");

Asignación del ícono al Jbutton
nuevo.setIcon( icono );

Establecimiento del tamaño del Jbutton
nuevo.setSize( new Dimension (37, 36) );

Deshabilitar o habilitar un Jbutton
nuevo.setEnabled( false );
NIVEL 6

           Características adicionales de un JLabel


Creación del Jlabel
JLabel nuevo2 = new JLabel("Numero");

Asignación del color del texto
nuevo2.setForeground( new Color(100,100,100) );

Creación del estilo del texto
Font f = new Font( "Arial", Font.BOLD, 14 );

Asignación del estilo del texto
nuevo2.setFont( f );

Definición del tamaño del JLabel
nuevo2.setSize( new Dimension(100,100) );
NIVEL 6

 Proceso de Construcción de un Programa

Análisis del problema ¿Qué hay que hacer?
Requerimientos funcionales
Modelo conceptual del mundo
Requerimientos no funcionales

Diseño de la solución ¿Cómo se va a hacer?
La interfaz de usuario
La arquitectura
Asignación de responsabilidades a las clases

Construcción de la solución ¿Hacerlo?
El código de todas las clases
NIVEL 6

                      ÉXITOS




Algorítmica y Programación 2 (APO 2) (ISIS-1205)
Estructuras de Datos (ISIS-1206)
Diseño de Software (ISIS-3717)
Ingeniería de Software (ISIS-2701)
Arquitectura de Software (ISIS-3702)
Aplicaciones Web Enriquecidas (ISIS-3716)
Más …
NIVEL 6

ÉXITOS – CONTINUACIÓN Cupi2
NIVEL 6



PREGUNTAS

More Related Content

What's hot

Introduccion al procesamiento de imagenes con matlab
Introduccion al procesamiento de imagenes con matlabIntroduccion al procesamiento de imagenes con matlab
Introduccion al procesamiento de imagenes con matlab
F Lliuya
 
Programar En Matlab
Programar En MatlabProgramar En Matlab
Programar En Matlab
Saul Bernal
 
Utp va_sl2 procesamiento de imagenes con mat_lab i
 Utp va_sl2 procesamiento de imagenes con  mat_lab i Utp va_sl2 procesamiento de imagenes con  mat_lab i
Utp va_sl2 procesamiento de imagenes con mat_lab i
jcbenitezp
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3D
Edu Morán
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
Sam Chimborazo
 
Morfología de las imágenes Matlab
Morfología de las imágenes MatlabMorfología de las imágenes Matlab
Morfología de las imágenes Matlab
jhonbri25
 
Matlab 2 Capitulo 5
Matlab 2 Capitulo 5Matlab 2 Capitulo 5
Matlab 2 Capitulo 5
guest4f4d78d
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3d
Sebastian Cuenca
 

What's hot (20)

Graficos en matlab
Graficos en matlabGraficos en matlab
Graficos en matlab
 
Computacion aplicada
Computacion aplicadaComputacion aplicada
Computacion aplicada
 
Graficos matlab
Graficos matlabGraficos matlab
Graficos matlab
 
Matlab graficas
Matlab graficasMatlab graficas
Matlab graficas
 
matlab
matlabmatlab
matlab
 
Introduccion al procesamiento de imagenes con matlab
Introduccion al procesamiento de imagenes con matlabIntroduccion al procesamiento de imagenes con matlab
Introduccion al procesamiento de imagenes con matlab
 
Programar En Matlab
Programar En MatlabProgramar En Matlab
Programar En Matlab
 
Utp va_sl2 procesamiento de imagenes con mat_lab i
 Utp va_sl2 procesamiento de imagenes con  mat_lab i Utp va_sl2 procesamiento de imagenes con  mat_lab i
Utp va_sl2 procesamiento de imagenes con mat_lab i
 
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLABUtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
UtplMadrid_Tutorías_MATLAB_IMAGENES MATLAB
 
Graficas en matlab
Graficas  en matlabGraficas  en matlab
Graficas en matlab
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
 
Graficas 2D y 3D
Graficas 2D y 3DGraficas 2D y 3D
Graficas 2D y 3D
 
Matlab
MatlabMatlab
Matlab
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
 
Morfología de las imágenes Matlab
Morfología de las imágenes MatlabMorfología de las imágenes Matlab
Morfología de las imágenes Matlab
 
Matlab 2 Capitulo 5
Matlab 2 Capitulo 5Matlab 2 Capitulo 5
Matlab 2 Capitulo 5
 
Gráficas en matlab
Gráficas en matlabGráficas en matlab
Gráficas en matlab
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3d
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlab
 
Gráficos en MATLAB
Gráficos en MATLABGráficos en MATLAB
Gráficos en MATLAB
 

Viewers also liked

Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
still01
 
Semana uno actividad 1 sopa de letras
Semana uno actividad 1 sopa de letrasSemana uno actividad 1 sopa de letras
Semana uno actividad 1 sopa de letras
Deisy Basto
 
Capa 5 de sesion
Capa 5 de sesionCapa 5 de sesion
Capa 5 de sesion
kamanaal
 
CAPA DE APLICACION TCP/IP
CAPA DE APLICACION TCP/IPCAPA DE APLICACION TCP/IP
CAPA DE APLICACION TCP/IP
almars
 

Viewers also liked (15)

APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2APO1 - Presentacion nivel 2
APO1 - Presentacion nivel 2
 
APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1APO1 - Presentacion nivel 1
APO1 - Presentacion nivel 1
 
APO2 - Presentacion nivel 7
APO2 - Presentacion nivel 7APO2 - Presentacion nivel 7
APO2 - Presentacion nivel 7
 
APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8APO2 - Presentacion nivel 8
APO2 - Presentacion nivel 8
 
APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4APO1 - Presentacion nivel 4
APO1 - Presentacion nivel 4
 
APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10APO2 - Presentacion nivel 10
APO2 - Presentacion nivel 10
 
APO1 - Presentacion nivel 3
APO1 - Presentacion nivel 3APO1 - Presentacion nivel 3
APO1 - Presentacion nivel 3
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9APO2 - Presentacion nivel 9
APO2 - Presentacion nivel 9
 
Semana uno actividad 1 sopa de letras
Semana uno actividad 1 sopa de letrasSemana uno actividad 1 sopa de letras
Semana uno actividad 1 sopa de letras
 
Viejo gus
Viejo gusViejo gus
Viejo gus
 
Sopa de letras
Sopa de letrasSopa de letras
Sopa de letras
 
Capa 5 de sesion
Capa 5 de sesionCapa 5 de sesion
Capa 5 de sesion
 
Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017Emprendimiento en internet y startups 2017
Emprendimiento en internet y startups 2017
 
CAPA DE APLICACION TCP/IP
CAPA DE APLICACION TCP/IPCAPA DE APLICACION TCP/IP
CAPA DE APLICACION TCP/IP
 

Similar to APO1 - Presentacion nivel 6 (20)

2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices
 
Matlab
MatlabMatlab
Matlab
 
Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptx02 Procesamiento de Datos.pptx
02 Procesamiento de Datos.pptx
 
Imagen digital
Imagen digitalImagen digital
Imagen digital
 
Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_
 
Tutorial
TutorialTutorial
Tutorial
 
LAcuna_GraficosVisualBasic.pdf
LAcuna_GraficosVisualBasic.pdfLAcuna_GraficosVisualBasic.pdf
LAcuna_GraficosVisualBasic.pdf
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Unidad 05
Unidad 05Unidad 05
Unidad 05
 
Intro MatLab
Intro MatLabIntro MatLab
Intro MatLab
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2
 
Imagenes
ImagenesImagenes
Imagenes
 
Practica 2 sistemas numericos y packet tracer
Practica 2 sistemas numericos y packet tracerPractica 2 sistemas numericos y packet tracer
Practica 2 sistemas numericos y packet tracer
 
Clase 4
Clase 4Clase 4
Clase 4
 
Clase 4
Clase 4Clase 4
Clase 4
 
Cad basico ejercicio_5
Cad basico ejercicio_5Cad basico ejercicio_5
Cad basico ejercicio_5
 
Utp 2015-2_pdi_lab1
 Utp 2015-2_pdi_lab1 Utp 2015-2_pdi_lab1
Utp 2015-2_pdi_lab1
 
Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 

More from Mario Jose Villamizar Cano

More from Mario Jose Villamizar Cano (16)

e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
e-Clouds A Platform and Marketplace to Access and Publish Scientific Applicat...
 
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startupsFrameworks y herramientas de desarrollo ágil para emprendedores y startups
Frameworks y herramientas de desarrollo ágil para emprendedores y startups
 
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
Desarrollo de Soluciones Escalables de Software como Servicio (SaaS)
 
An Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and EntrepreneurshipAn Overview of Internet Startups and Entrepreneurship
An Overview of Internet Startups and Entrepreneurship
 
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud InfrastructureEnergy-aware VM Allocation on An Opportunistic Cloud Infrastructure
Energy-aware VM Allocation on An Opportunistic Cloud Infrastructure
 
Emprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet StartupsEmprendimiento en Internet / Internet Startups
Emprendimiento en Internet / Internet Startups
 
e-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computinge-Clouds: a SaaS Marketplace for Scientific Computing
e-Clouds: a SaaS Marketplace for Scientific Computing
 
Cloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedoresCloud computing oportunidades para empresarios y emprendedores
Cloud computing oportunidades para empresarios y emprendedores
 
CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.CLOUD COMPUTING HOY: Todo como Servicio.
CLOUD COMPUTING HOY: Todo como Servicio.
 
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a ServiceUnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
UnaCloud: Opportunistic Cloud Computing Infrastructure as a Service
 
Bio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow executionBio-UnaGrid: Easing bioinformatics workflow execution
Bio-UnaGrid: Easing bioinformatics workflow execution
 
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
Taxonomía de los modelos de entrega de servicios, despliegue y facturación en...
 
An Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGridAn Opportunistic Storage System for UnaGrid
An Opportunistic Storage System for UnaGrid
 
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
BacteriumSimulatorGrid (BSGrid) - Tool for Simulating the Behavior of the Bac...
 
Una grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombiaUna grid una solución oportunista para la HPC en colombia
Una grid una solución oportunista para la HPC en colombia
 
Infraestructura computacional: Computación en grid
Infraestructura computacional: Computación en gridInfraestructura computacional: Computación en grid
Infraestructura computacional: Computación en grid
 

Recently uploaded

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
JonathanCovena1
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 

Recently uploaded (20)

Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdfFeliz Día de la Madre - 5 de Mayo, 2024.pdf
Feliz Día de la Madre - 5 de Mayo, 2024.pdf
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJOACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
ACTIVIDAD DIA DE LA MADRE FICHA DE TRABAJO
 
Power Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptxPower Point: Fe contra todo pronóstico.pptx
Power Point: Fe contra todo pronóstico.pptx
 
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VSOCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
OCTAVO SEGUNDO PERIODO. EMPRENDIEMIENTO VS
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdfTema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
Tema 8.- PROTECCION DE LOS SISTEMAS DE INFORMACIÓN.pdf
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 

APO1 - Presentacion nivel 6

  • 1. NIVEL 6 ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1) Mario José Villamizar Cano mj.villamizar24@uniandes.edu.co Oficina ML-637 http://sistemas.uniandes.edu.co/~mj.villamizar24/dokuwiki/doku.php Grupo de Tecnologías de Información y Comunicación (COMIT) Departamento de Ingeniería de Sistemas y Computación Universidad de los Andes, Bogotá D.C., Colombia
  • 2. NIVEL 6 REDES SOCIALES mjvc007@hotmail.com http://twitter.com/mariocloud http://linkedin.com/in/mariojosevillamizarcano
  • 3. NIVEL 6 NIVEL 6 – TEMAS PRINCIPALES El concepto de matriz como elemento de modelado para agrupar los elementos del mundo en una contenedora de dos dimensiones de tamaño fijo. Patrones y uso de algoritmos para el manejo de matrices. Uso de un esquema simple de persistencia para manejar el estado inicial de un programa. Desarrollar un programa completo, siguiendo las etapas del proceso que se debe seguir para resolver un problema usando un computador.
  • 4. NIVEL 6 NIVEL 6 Introducción (Matrices y Persistencia) Contenedoras de dos dimensiones Caso de estudio: Visor de Imágenes Declaración de una matriz Inicialización de una matriz Acceso a los elementos de una matriz Comparar los elementos de una matriz Patrones de algoritmos para recorridos de matrices Patrón de recorrido total Patrón de recorrido parcial Otros algoritmos de recorridos
  • 5. NIVEL 6 Matrices Las matrices son una herramienta de modelado que permite almacenar elementos en una contenedora de dos dimensiones compuesta de filas y columnas. Ejemplos de uso: Elaborar un tablero de ajedrez, de damas chinas, etc. Manipulación de imágenes fotográficas para el manejo de pixeles. Manejo de tablas que contienen información. Por ejemplo: la tabla de posiciones de un campeonato de fútbol, manejo de matrices matemáticas, etc.
  • 6. NIVEL 6 Matrices Fila 0 Posición(X,Y) X=fila Fila 2 Y=columa Matriz(2,4) Columna 0 Columna 3
  • 7. NIVEL 6 CASOS DE ESTUDIO Caso de estudio 1: Visor de Imágenes
  • 8. NIVEL 6 CASOS DE ESTUDIO Caso de estudio 2: Campeonato de Fútbol
  • 9. NIVEL 6 HOJAS DE TRABAJO Hoja de trabajo 1: Sopa de Letras
  • 10. NIVEL 6 HOJAS DE TRABAJO Hoja de trabajo 2: Asignación de Tareas
  • 11. NIVEL 6 Caso de estudio 1: Visor de Imágenes Aplicación para la visualización de imágenes en formato BMP (BitMaP). Máxima dimensión de la imagen: 300 x 400
  • 12. NIVEL 6 Caso de estudio 1: Visor de Imágenes (2) En el formato BMP se guarda la información del color de cada pixel. El color de un pixel se expresa en formato RGB, en el cual se incluyen tres componentes: rojo (R), verde (G) y azul (B). Cada componente se expresa por un número entre 0 y 255. Componente Rojo Componente Verde Componente Azul Nombre del Color (R) (G) (B) Negro 0 0 0 Blanco 255 255 255 Rojo 255 0 0 Verde 0 255 0 Azul 0 0 255 Amarillo 255 255 0 Cyan 0 255 255 Magenta 255 0 255
  • 13. NIVEL 6 Caso de estudio 1: Visor de Imágenes (3) Requerimientos funcionales: R1 – Mostrar una imagen BMP R2 – Transformar la imagen
  • 14. NIVEL 6 Caso de estudio 1: Visor de Imágenes (4)
  • 15. NIVEL 6 Caso de estudio 1: Visor de Imágenes (5) 0 1 2 3 4 5 0 Color bitmap = 1 2 3 4 3 Colores (Rojo, Verde, Azul) ALTO_MAXIMO, ANCHO_MAXIMO
  • 16. NIVEL 6 Declaración de una matriz /** * Imagen de mapa de colores */ public class Imagen { public static final int ANCHO_MAXIMO = 400; public static final int ALTO_MAXIMO = 300; //----------------------------------------------------------------- // Atributos //----------------------------------------------------------------- /** * Matriz de colores de la imagen */ private Color bitmap[ ][ ];
  • 17. NIVEL 6 Inicialización de una matriz /** * Imagen de mapa de colores */ public class Imagen { public Imagen( String archivo ) throws IOException { bitmap = new Color[ALTO_MAXIMO][ANCHO_MAXIMO]; }
  • 18. NIVEL 6 Acceso a los elementos de una matriz Índices (Índice de fila e índice de columna) 0 1 2 3 4 5 0 Color bitmap = 1 bitmap[ fila ][ columna ] 2 bitmap[ 3 ][ 1 ] 3 4 int compRojo = bitmap[ 3 ][ 1 ].getRed( ); int compVerde = bitmap[ 3 ][ 1 ].getGreen( ); int compAzul = bitmap[ 3 ][ 1 ].getBlue( );
  • 19. NIVEL 6 Acceso a los elementos de una matriz (2) Índices (Índice de fila e índice de columna) /** * Imagen de mapa de colores */ public class Imagen { public void iniciarMatriz(){ for( int i=0; i<ALTO_MAXIMO ; i++ ){ for( int j=0; j<ANCHO_MAXIMO ; j++ ){ bitmap[ i ][ j ] = new Color ( 0, 0, 255); } } }
  • 20. NIVEL 6 Comparar los elementos de una matriz Elementos de matrices simples se compararan con el operador == Elementos de matrices de referencias a objetos se comparan con el método equals :Color Color color1 = 255, 0, 0 0 1 2 3 0 Color bitmap = 1 :Color :Color Color color2 = Color color3 = 0, 255, 0 0, 255, 0
  • 21. NIVEL 6 Comparar los elementos de una matriz (2) Color color1 = new Color (255, 0, 0); bitmap[0][0] = color1; bitmap[0][2] = color1; Color color2 = new Color (0, 255, 0); bitmap[1][1] = color2; Color color3 = new Color (0, 255, 0); bitmap[1][3] = color3; bitmap[0][0].equals( bitmap[1][1] ) //Respuesta: bitmap[0][0].equals( bitmap[1][3] ) //Respuesta: bitmap[1][1].equals( bitmap[1][3] ) //Respuesta: bitmap[0][0].equals( bitmap[0][2] ) //Respuesta:
  • 22. NIVEL 6 Comparar los elementos de una matriz (3) Color color1 = new Color (255, 0, 0); bitmap[0][0] = color1; bitmap[0][2] = color1; Color color2 = new Color (0, 255, 0); bitmap[1][1] = color2; Color color3 = new Color (0, 255, 0); bitmap[1][3] = color3; bitmap[0][0].equals( bitmap[1][1] ) //Respuesta: false bitmap[0][0].equals( bitmap[1][3] ) //Respuesta: false bitmap[1][1].equals( bitmap[1][3] ) //Respuesta: false bitmap[0][0].equals( bitmap[0][2] ) //Respuesta: true
  • 23. NIVEL 6 Patrones de algoritmos para recorridos de matrices Patrón de recorrido total Ejercicios de recorrido total de matrices: Definir un método denominado rojorCero ( ) en la clase Image, el cual retorna el número de pixeles de la imagen que tiene como componente rojo el valor cero. Dado un color recibido como parámetro, en la clase Imagen definir el método cuantosPixelColor(Color colorBuscado), el cual retorna el número de pixeles de la imagen cuyo color es el recibido como parámetro. Identificación del patrón del recorrido (esqueleto de patrón)
  • 24. NIVEL 6 Patrones de algoritmos para recorridos de matrices Patrón de recorrido parcial Ejercicios de recorrido parcial de matrices: Dado un color recibido como parámetro, en la clase Imagen definir el método existePixelColor(Color colorBuscado), el cual retorna un valor indicando si en la imagen hay algún pixel con el color recibido como parámetro. Definir un método denominado todasLasColumnasTienenUnPuntoRojo ( ) en la clase Image, el cual indica si en cada una de las columnas de la imagen hay al menor un pixel con color rojo. Identificación del patrón del recorrido (esqueleto de patrón)
  • 25. NIVEL 6 Patrones de algoritmos para recorridos de matrices Otros algoritmos de recorridos Ejercicios con otros algoritmos de recorridos de matrices: Dado el valor de una columna recibido como parámetro, en la clase Imagen definir el método numeroPixelesMaximoVerde el cual retorna el número de píxeles de la columna recibida como parámetro que tiene en su componente verde el valor máximo (255). Elaborar un método en la clase Imagen que retorne el número de la fila con el mayor número de pixeles de un color, el color es recibido como parámetro. Elaborar un método en la clase Imagen que cambie los pixeles de un color por otro color. El método recibe como parámetro dos colores, el antiguo color y el nuevo color, y debe realizar el cambio requerido.
  • 27. NIVEL 6 NIVEL 6 Caso de estudio: Campeonato de futbol Persistencia y manejo del estado inicial El concepto de archivo Archivo de propiedades Escoger un archivo desde el programa Inicialización del estado de la aplicación Manejo de los objetos de la clase Properties Completar la solución del ejercicio del campeonato Registrar el resultado de un partido Construir la tabla de posiciones Implementación de otros métodos sobre matrices
  • 28. NIVEL 6 Caso de estudio 2: Campeonato de Fútbol Registrar el resultado de un partido Leer la información del campeonato desde un archivo de entrada Presentar la tabla de goles Presentar la tabla de posiciones
  • 29. NIVEL 6 Caso de estudio 2: Campeonato de Fútbol (2)
  • 30. NIVEL 6 Caso de estudio 2: Campeonato de Fútbol (3) public class Equipo { //---------------------------------------------------- // Atributos //---------------------------------------------------- /** * Es el nombre del equipo */ private String nombre; }
  • 31. NIVEL 6 Caso de estudio 2: Campeonato de Fútbol (3) public class Campeonato { // Constantes public static final int SIN_JUGAR = -1; public static final int INVALIDO = -2; // Atributos private int maxEquipos; private int[ ][ ] tablaGoles; private Equipo[ ] equipos;
  • 32. NIVEL 6 Persistencia y Manejo del Estado Inicial – Concepto de archivos Ruta de un archivo Extensión del archivo Nombre del archivo
  • 33. NIVEL 6 Archivo de propiedades
  • 34. NIVEL 6 Escoger un archivo desde el programa Opción 1. Definir el archivo en el código fuente del programa File archivoDatos = new File(“RutaArchivo”); Opción 2. Que el usuario seleccione el archivo JFileChooser fc = new JFileChooser( "./data" ); fc.setDialogTitle( "Abrir archivo de campeonato" ); int resultado = fc.showOpenDialog( this ); if( resultado == JFileChooser.APPROVE_OPTION ) { File archivoCampeonato = fc.getSelectedFile( );
  • 35. NIVEL 6 Inicialización del estado de la aplicación public Campeonato( File arch ) throws Exception { Properties datos = cargarInfoCampeonato( arch ); inicializarEquipos( datos ); inicializarTablaGoles( ); }
  • 36. NIVEL 6 Inicialización del estado de la aplicación (2) private Properties cargarInfoCampeonato( File arch ) throws Exception { Properties datos = new Properties( ); FileInputStream in = new FileInputStream( arch ); try { datos.load( in ); in.close( ); } catch( Exception e ) { throw new Exception( "Formato inválido" ); } return datos; }
  • 37. NIVEL 6 Inicialización del estado de la aplicación (3) - Manejo de los objetos de la clase Properties private void inicializarEquipos( Properties datos ) { String strNumeroEquipos = datos.getProperty( "campeonato.equipos" ); maxEquipos = Integer.parseInt( strNumeroEquipos ); // Crea el arreglo de equipos, reservando el espacio definido en la propiedad "campeonato.equipos" equipos = new Equipo[maxEquipos]; // Lee el nombre de cada equipo de la respectiva propiedad y crea el objeto que lo representa for( int i = 0; i < maxEquipos; i++ ) { String nombreEquipo = datos.getProperty( "campeonato.nombre" + i ); equipos[ i ] = new Equipo( nombreEquipo ); } }
  • 38. NIVEL 6 Inicialización del estado de la aplicación (4) private void inicializarTablaGoles( ) { // Crea la matriz que contiene la tabla de goles tablaGoles = new int[maxEquipos][maxEquipos]; // Inicializa todos los marcadores, dejando en la diagonal una marca especial for( int i = 0; i < maxEquipos; i++ ) { for( int j = 0; j < maxEquipos; j++ ) { if( i != j ) tablaGoles[ i ][ j ] = SIN_JUGAR; else tablaGoles[ i ][ j ] = INVALIDO; } } }
  • 39. NIVEL 6 Caso de estudio 2: Campeonato de Fútbol (4) 0 1 2 3 4 equipos = A.C. Milan Inter Juventus Roma Lazio 0 1 2 3 4 0 -2 -1 -1 -1 -1 tablaGoles = 1 -1 -2 -1 -1 -1 2 -1 -1 -2 -1 -1 3 -1 -1 -1 -2 -1 4 -1 -1 -1 -1 -2
  • 40. NIVEL 6 Completar la solución del ejercicio del campeonato - Registrar el resultado de un partido
  • 41. NIVEL 6 Completar la solución del ejercicio del campeonato - Construir la tabla de posiciones 0 1 2 3 4 equipos = A.C. Milan Inter Juventus Roma Lazio 0 1 2 3 4 0 -2 3 2 -1 -1 tablaGoles = 1 4 -2 2 -1 -1 Partidos jugados 2 2 5 -2 -1 -1 Partidos ganados Partidos empatados -1 -1 -1 -2 4 3 Partidos perdidos Goles a favor 4 -1 -1 -1 2 -2 Goles en contras Puntos
  • 42. NIVEL 6 Ejercicios con Matrices Ejercicios con matrices: Elaborar un método que retorne el número de goles marcados por el equipo cuyo nombre se recibe como parámetro. Elaborar un método que retorne el número de equipos que llevan un valor negativo en el número de goles a favor . Elaborar un método que retorne el número de partidos empatados en el campeonato. Elaborar un método que retorne el número de equipos que han perdido por lo menos un partido.
  • 44. NIVEL 6 Características adicionales de un JButton Creación del Jbutton JButton nuevo = new JButton(""); Creación del ícono que va a tener asignado el Jbutton ImageIcon icono = new ImageIcon("./data/sur.gif"); Asignación del ícono al Jbutton nuevo.setIcon( icono ); Establecimiento del tamaño del Jbutton nuevo.setSize( new Dimension (37, 36) ); Deshabilitar o habilitar un Jbutton nuevo.setEnabled( false );
  • 45. NIVEL 6 Características adicionales de un JLabel Creación del Jlabel JLabel nuevo2 = new JLabel("Numero"); Asignación del color del texto nuevo2.setForeground( new Color(100,100,100) ); Creación del estilo del texto Font f = new Font( "Arial", Font.BOLD, 14 ); Asignación del estilo del texto nuevo2.setFont( f ); Definición del tamaño del JLabel nuevo2.setSize( new Dimension(100,100) );
  • 46. NIVEL 6 Proceso de Construcción de un Programa Análisis del problema ¿Qué hay que hacer? Requerimientos funcionales Modelo conceptual del mundo Requerimientos no funcionales Diseño de la solución ¿Cómo se va a hacer? La interfaz de usuario La arquitectura Asignación de responsabilidades a las clases Construcción de la solución ¿Hacerlo? El código de todas las clases
  • 47. NIVEL 6 ÉXITOS Algorítmica y Programación 2 (APO 2) (ISIS-1205) Estructuras de Datos (ISIS-1206) Diseño de Software (ISIS-3717) Ingeniería de Software (ISIS-2701) Arquitectura de Software (ISIS-3702) Aplicaciones Web Enriquecidas (ISIS-3716) Más …
  • 48. NIVEL 6 ÉXITOS – CONTINUACIÓN Cupi2