Your SlideShare is downloading. ×
0
NIVEL 6         ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1)                     Mario José Villamizar Cano                   mj.v...
NIVEL 6             REDES SOCIALES           mjvc007@hotmail.com        http://twitter.com/mariocloudhttp://linkedin.com/i...
NIVEL 6              NIVEL 6 – TEMAS PRINCIPALES  El concepto de matriz como elemento de modelado paraagrupar los elemento...
NIVEL 6                                NIVEL 6Introducción (Matrices y Persistencia)Contenedoras de dos dimensionesCaso de...
NIVEL 6                                Matrices   Las matrices son una herramienta de modelado que permitealmacenar elemen...
NIVEL 6                       MatricesFila 0                            Posición(X,Y)                                     ...
NIVEL 6                    CASOS DE ESTUDIOCaso de estudio 1: Visor de Imágenes
NIVEL 6                    CASOS DE ESTUDIOCaso de estudio 2: Campeonato de Fútbol
NIVEL 6                     HOJAS DE TRABAJOHoja de trabajo 1: Sopa de Letras
NIVEL 6                    HOJAS DE TRABAJOHoja 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(Bi...
NIVEL 6                 Caso de estudio 1: Visor de Imágenes (2)   En el formato BMP se guarda la información del color de...
NIVEL 6              Caso de estudio 1: Visor de Imágenes (3)  Requerimientos funcionales:R1 – Mostrar una imagen BMPR2 – ...
NIVEL 6Caso 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       ...
NIVEL 6                                 Declaración de una matriz/** * Imagen de mapa de colores */public class Imagen{   ...
NIVEL 6                       Inicialización de una matriz/** * Imagen de mapa de colores */public class Imagen{  public I...
NIVEL 6               Acceso a los elementos de una matriz Índices (Índice de fila e índice de columna)                   ...
NIVEL 6               Acceso a los elementos de una matriz (2)   Índices (Índice de fila e índice de columna)/** * Imagen ...
NIVEL 6            Comparar los elementos de una matrizElementos de matrices simples se compararan con el operador==Elemen...
NIVEL 6           Comparar los elementos de una matriz (2)Color color1 = new Color (255, 0, 0);bitmap[0][0] = color1;bitma...
NIVEL 6           Comparar los elementos de una matriz (3)Color color1 = new Color (255, 0, 0);bitmap[0][0] = color1;bitma...
NIVEL 6         Patrones de algoritmos para recorridos de matrices                      Patrón de recorrido totalEjercicio...
NIVEL 6         Patrones de algoritmos para recorridos de matrices                     Patrón de recorrido parcialEjercici...
NIVEL 6         Patrones de algoritmos para recorridos de matrices                   Otros algoritmos de recorridosEjercic...
NIVEL 6PREGUNTAS
NIVEL 6                                 NIVEL 6Caso de estudio: Campeonato de futbolPersistencia y manejo del estado inici...
NIVEL 6           Caso de estudio 2: Campeonato de FútbolRegistrar el resultado de un partidoLeer la información del campe...
NIVEL 6Caso de estudio 2: Campeonato de Fútbol (2)
NIVEL 6          Caso de estudio 2: Campeonato de Fútbol (3)public class Equipo{    //------------------------------------...
NIVEL 6                 Caso de estudio 2: Campeonato de Fútbol (3)public class Campeonato{  // Constantes  public static ...
NIVEL 6Persistencia y Manejo del Estado Inicial – Concepto de archivosRuta de un archivoExtensión del archivoNombre del ar...
NIVEL 6Archivo de propiedades
NIVEL 6                Escoger un archivo desde el programa   Opción 1. Definir el archivo en el código fuente del program...
NIVEL 6         Inicialización del estado de la aplicaciónpublic Campeonato( File arch ) throws Exception{    Properties d...
NIVEL 6             Inicialización del estado de la aplicación (2) private Properties cargarInfoCampeonato( File arch ) th...
NIVEL 6   Inicialización del estado de la aplicación (3) - Manejo de los objetos de                              la clase ...
NIVEL 6               Inicialización del estado de la aplicación (4)private void inicializarTablaGoles( ){    // Crea la m...
NIVEL 6        Caso de estudio 2: Campeonato de Fútbol (4)                   0             1             2             3  ...
NIVEL 6Completar la solución del ejercicio del campeonato - Registrar el                    resultado de un partido
NIVEL 6Completar la solución del ejercicio del campeonato - Construir la tabla                            de posiciones   ...
NIVEL 6                           Ejercicios con MatricesEjercicios con matrices:   Elaborar un método que retorne el núme...
NIVEL 6PREGUNTAS
NIVEL 6          Características adicionales de un JButtonCreación del JbuttonJButton nuevo = new JButton("");Creación del...
NIVEL 6           Características adicionales de un JLabelCreación del JlabelJLabel nuevo2 = new JLabel("Numero");Asignaci...
NIVEL 6 Proceso de Construcción de un ProgramaAnálisis del problema ¿Qué hay que hacer?Requerimientos funcionalesModelo co...
NIVEL 6                      ÉXITOSAlgorítmica y Programación 2 (APO 2) (ISIS-1205)Estructuras de Datos (ISIS-1206)Diseño ...
NIVEL 6ÉXITOS – CONTINUACIÓN Cupi2
NIVEL 6PREGUNTAS
Upcoming SlideShare
Loading in...5
×

APO1 - Presentacion nivel 6

3,479

Published on

Esta es la presentación del Nivel 6 del curso "ISIS-1204 Algorítmia y Programación por Objetos 1" (APO1) de la Universidad de los Andes, Bogotá, Colombia.

Published in: Education, Technology, Travel
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,479
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
77
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "APO1 - Presentacion nivel 6"

  1. 1. NIVEL 6 ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1) Mario José Villamizar Cano mj.villamizar24@uniandes.edu.co Oficina ML-637http://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. 2. NIVEL 6 REDES SOCIALES mjvc007@hotmail.com http://twitter.com/mariocloudhttp://linkedin.com/in/mariojosevillamizarcano
  3. 3. NIVEL 6 NIVEL 6 – TEMAS PRINCIPALES El concepto de matriz como elemento de modelado paraagrupar los elementos del mundo en una contenedora dedos dimensiones de tamaño fijo. Patrones y uso de algoritmos para el manejo dematrices. Uso de un esquema simple de persistencia paramanejar el estado inicial de un programa. Desarrollar un programa completo, siguiendo lasetapas del proceso que se debe seguir para resolver unproblema usando un computador.
  4. 4. NIVEL 6 NIVEL 6Introducción (Matrices y Persistencia)Contenedoras de dos dimensionesCaso de estudio: Visor de ImágenesDeclaración de una matrizInicialización de una matrizAcceso a los elementos de una matrizComparar los elementos de una matrizPatrones de algoritmos para recorridos de matrices Patrón de recorrido total Patrón de recorrido parcial Otros algoritmos de recorridos
  5. 5. NIVEL 6 Matrices Las matrices son una herramienta de modelado que permitealmacenar elementos en una contenedora de dos dimensionescompuesta 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 deposiciones de un campeonato de fútbol, manejo de matricesmatemáticas, etc.
  6. 6. NIVEL 6 MatricesFila 0 Posición(X,Y) X=filaFila 2 Y=columa Matriz(2,4) Columna 0 Columna 3
  7. 7. NIVEL 6 CASOS DE ESTUDIOCaso de estudio 1: Visor de Imágenes
  8. 8. NIVEL 6 CASOS DE ESTUDIOCaso de estudio 2: Campeonato de Fútbol
  9. 9. NIVEL 6 HOJAS DE TRABAJOHoja de trabajo 1: Sopa de Letras
  10. 10. NIVEL 6 HOJAS DE TRABAJOHoja de trabajo 2: Asignación de Tareas
  11. 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. 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 incluyentres 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. 13. NIVEL 6 Caso de estudio 1: Visor de Imágenes (3) Requerimientos funcionales:R1 – Mostrar una imagen BMPR2 – Transformar la imagen
  14. 14. NIVEL 6Caso de estudio 1: Visor de Imágenes (4)
  15. 15. NIVEL 6 Caso de estudio 1: Visor de Imágenes (5) 0 1 2 3 4 5 0Color bitmap = 1 2 3 4 3 Colores (Rojo, Verde, Azul) ALTO_MAXIMO, ANCHO_MAXIMO
  16. 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. 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. 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 = 1bitmap[ fila ][ columna ] 2bitmap[ 3 ][ 1 ] 3 4 int compRojo = bitmap[ 3 ][ 1 ].getRed( ); int compVerde = bitmap[ 3 ][ 1 ].getGreen( ); int compAzul = bitmap[ 3 ][ 1 ].getBlue( );
  19. 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. 20. NIVEL 6 Comparar los elementos de una matrizElementos de matrices simples se compararan con el operador==Elementos de matrices de referencias a objetos se comparan con elmé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. 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. 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: falsebitmap[0][0].equals( bitmap[1][3] ) //Respuesta: falsebitmap[1][1].equals( bitmap[1][3] ) //Respuesta: falsebitmap[0][0].equals( bitmap[0][2] ) //Respuesta: true
  23. 23. NIVEL 6 Patrones de algoritmos para recorridos de matrices Patrón de recorrido totalEjercicios de recorrido total de matrices: Definir un método denominado rojorCero ( ) en la clase Image, el cualretorna el número de pixeles de la imagen que tiene como componenterojo el valor cero. Dado un color recibido como parámetro, en la clase Imagen definir elmétodo cuantosPixelColor(Color colorBuscado), el cual retorna elnúmero de pixeles de la imagen cuyo color es el recibido comoparámetro.Identificación del patrón del recorrido (esqueleto de patrón)
  24. 24. NIVEL 6 Patrones de algoritmos para recorridos de matrices Patrón de recorrido parcialEjercicios de recorrido parcial de matrices: Dado un color recibido como parámetro, en la clase Imagen definir elmétodo existePixelColor(Color colorBuscado), el cual retorna un valorindicando si en la imagen hay algún pixel con el color recibido comoparámetro. Definir un método denominadotodasLasColumnasTienenUnPuntoRojo ( ) en la clase Image, el cualindica si en cada una de las columnas de la imagen hay al menor unpixel con color rojo.Identificación del patrón del recorrido (esqueleto de patrón)
  25. 25. NIVEL 6 Patrones de algoritmos para recorridos de matrices Otros algoritmos de recorridosEjercicios con otros algoritmos de recorridos de matrices: Dado el valor de una columna recibido como parámetro, en la claseImagen definir el método numeroPixelesMaximoVerde el cual retorna elnúmero de píxeles de la columna recibida como parámetro que tiene ensu componente verde el valor máximo (255). Elaborar un método en la clase Imagen que retorne el número de lafila con el mayor número de pixeles de un color, el color es recibidocomo parámetro. Elaborar un método en la clase Imagen que cambie los pixeles de uncolor por otro color. El método recibe como parámetro dos colores, elantiguo color y el nuevo color, y debe realizar el cambio requerido.
  26. 26. NIVEL 6PREGUNTAS
  27. 27. NIVEL 6 NIVEL 6Caso de estudio: Campeonato de futbolPersistencia y manejo del estado inicialEl concepto de archivoArchivo de propiedadesEscoger un archivo desde el programaInicialización del estado de la aplicaciónManejo de los objetos de la clase PropertiesCompletar 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. 28. NIVEL 6 Caso de estudio 2: Campeonato de FútbolRegistrar el resultado de un partidoLeer la información del campeonato desde un archivo de entradaPresentar la tabla de golesPresentar la tabla de posiciones
  29. 29. NIVEL 6Caso de estudio 2: Campeonato de Fútbol (2)
  30. 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. 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. 32. NIVEL 6Persistencia y Manejo del Estado Inicial – Concepto de archivosRuta de un archivoExtensión del archivoNombre del archivo
  33. 33. NIVEL 6Archivo de propiedades
  34. 34. NIVEL 6 Escoger un archivo desde el programa Opción 1. Definir el archivo en el código fuente del programaFile 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. 35. NIVEL 6 Inicialización del estado de la aplicaciónpublic Campeonato( File arch ) throws Exception{ Properties datos = cargarInfoCampeonato( arch ); inicializarEquipos( datos ); inicializarTablaGoles( );}
  36. 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. 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. 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. 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 -1tablaGoles = 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. 40. NIVEL 6Completar la solución del ejercicio del campeonato - Registrar el resultado de un partido
  41. 41. NIVEL 6Completar 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. 42. NIVEL 6 Ejercicios con MatricesEjercicios con matrices: Elaborar un método que retorne el número de goles marcados por elequipo cuyo nombre se recibe como parámetro. Elaborar un método que retorne el número de equipos que llevan unvalor negativo en el número de goles a favor . Elaborar un método que retorne el número de partidos empatados enel campeonato. Elaborar un método que retorne el número de equipos que hanperdido por lo menos un partido.
  43. 43. NIVEL 6PREGUNTAS
  44. 44. NIVEL 6 Características adicionales de un JButtonCreación del JbuttonJButton nuevo = new JButton("");Creación del ícono que va a tener asignado el JbuttonImageIcon icono = new ImageIcon("./data/sur.gif");Asignación del ícono al Jbuttonnuevo.setIcon( icono );Establecimiento del tamaño del Jbuttonnuevo.setSize( new Dimension (37, 36) );Deshabilitar o habilitar un Jbuttonnuevo.setEnabled( false );
  45. 45. NIVEL 6 Características adicionales de un JLabelCreación del JlabelJLabel nuevo2 = new JLabel("Numero");Asignación del color del textonuevo2.setForeground( new Color(100,100,100) );Creación del estilo del textoFont f = new Font( "Arial", Font.BOLD, 14 );Asignación del estilo del textonuevo2.setFont( f );Definición del tamaño del JLabelnuevo2.setSize( new Dimension(100,100) );
  46. 46. NIVEL 6 Proceso de Construcción de un ProgramaAnálisis del problema ¿Qué hay que hacer?Requerimientos funcionalesModelo conceptual del mundoRequerimientos no funcionalesDiseño de la solución ¿Cómo se va a hacer?La interfaz de usuarioLa arquitecturaAsignación de responsabilidades a las clasesConstrucción de la solución ¿Hacerlo?El código de todas las clases
  47. 47. NIVEL 6 ÉXITOSAlgorí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. 48. NIVEL 6ÉXITOS – CONTINUACIÓN Cupi2
  49. 49. NIVEL 6PREGUNTAS
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×