apo1 - presentacion nivel 6

Post on 16-Jul-2015

3.478 Views

Category:

Education

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

NIVEL 6

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

mjvc007@hotmail.com

http://twitter.com/mariocloud

http://linkedin.com/in/mariojosevillamizarcano

REDES SOCIALES

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

NIVEL 6

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.

Matrices

Fila 0

Fila 2

Columna 0 Columna 3

Posición(X,Y)

X=fila

Y=columa

Matriz(2,4)

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.

NIVEL 6

Nombre del Color Componente Rojo

(R)

Componente Verde

(G)

Componente Azul

(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

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)

Color bitmap =

0 1 2 3 4 5

0

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)

Color bitmap =

0 1 2 3 4 5

0

1

2

3

4

bitmap[ fila ][ columna ]

bitmap[ 3 ][ 1 ]

NIVEL 6

int compRojo = bitmap[ 3 ][ 1 ].getRed( );

int compVerde = bitmap[ 3 ][ 1 ].getGreen( );

int compAzul = bitmap[ 3 ][ 1 ].getBlue( );

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 bitmap =

0 1 2 3

0

1

:Color

255, 0, 0

:Color

0, 255, 0

:Color

0, 255, 0

NIVEL 6

Color color1 =

Color color2 = Color color3 =

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)

-2 -1 -1 -1 -1

-1 -2 -1 -1 -1

-1 -1 -2 -1 -1

-1 -1 -1 -2 -1

-1 -1 -1 -1 -2

tablaGoles =

0 1 2 3 4

0

1

2

3

4

A.C. Milan Inter Juventus Roma Lazio

0 1 2 3 4

equipos =

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

Partidos jugados

Partidos ganados

Partidos empatados

Partidos perdidos

Goles a favor

Goles en contras

Puntos

-2 3 2 -1 -1

4 -2 2 -1 -1

2 5 -2 -1 -1

-1 -1 -1 -2 4

-1 -1 -1 2 -2

tablaGoles =

0 1 2 3 4

0

1

2

3

4

A.C. Milan Inter Juventus Roma Lazio

0 1 2 3 4

equipos =

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

NIVEL 6

top related