APO1 - Presentacion nivel 6
Upcoming SlideShare
Loading in...5
×
 

APO1 - Presentacion nivel 6

on

  • 3,307 views

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.

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.

Statistics

Views

Total Views
3,307
Views on SlideShare
2,830
Embed Views
477

Actions

Likes
1
Downloads
64
Comments
0

2 Embeds 477

http://jorgeportella.wordpress.com 476
https://www.google.com.co 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    APO1 - Presentacion nivel 6 APO1 - Presentacion nivel 6 Presentation Transcript

    • 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
    • NIVEL 6 REDES SOCIALES mjvc007@hotmail.com http://twitter.com/mariocloudhttp://linkedin.com/in/mariojosevillamizarcano
    • 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.
    • 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
    • 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.
    • NIVEL 6 MatricesFila 0 Posición(X,Y) X=filaFila 2 Y=columa Matriz(2,4) Columna 0 Columna 3
    • 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(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 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
    • NIVEL 6 Caso de estudio 1: Visor de Imágenes (3) Requerimientos funcionales:R1 – Mostrar una imagen BMPR2 – Transformar la imagen
    • 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 0Color 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 = 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( );
    • 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 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
    • 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: 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
    • 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)
    • 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)
    • 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.
    • NIVEL 6PREGUNTAS
    • 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
    • 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
    • NIVEL 6Caso 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 6Persistencia y Manejo del Estado Inicial – Concepto de archivosRuta de un archivoExtensión del archivoNombre del archivo
    • NIVEL 6Archivo de propiedades
    • 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( );
    • NIVEL 6 Inicialización del estado de la aplicaciónpublic 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 -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
    • 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 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 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.
    • NIVEL 6PREGUNTAS
    • 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 );
    • 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) );
    • 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
    • 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 …
    • NIVEL 6ÉXITOS – CONTINUACIÓN Cupi2
    • NIVEL 6PREGUNTAS