apo1 - presentacion nivel 3

56
ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1) NIVEL 3 Mario José Villamizar Cano [email protected] 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

Upload: mario-jose-villamizar-cano

Post on 13-Jun-2015

7.501 views

Category:

Education


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: APO1 - Presentacion nivel 3

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

NIVEL 3

Mario José Villamizar Cano

[email protected]

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

Page 2: APO1 - Presentacion nivel 3

[email protected]

http://twitter.com/mariocloud

http://linkedin.com/in/mariojosevillamizarcano

REDES SOCIALES

NIVEL 3

Page 3: APO1 - Presentacion nivel 3

NIVEL

Temas principales

Contenedoras de tamaño fijo

Declaración de un arreglo

Inicialización de un arreglo

Acceso a los elementos de un arreglo

Componentes de una instrucción repetitiva

Patrones de algoritmos para instrucciones repetitivas

NIVEL 3

Page 4: APO1 - Presentacion nivel 3

TEMAS PRINCIPALES

Contenedoras de tamaño fijo (simples y objetos)

Contenedoras de tamaño variable (objetos)

Instrucciones repetitivas

Creación de una clase completa en Java

Entender la documentación de Java (Javadoc)

NIVEL 3

Page 5: APO1 - Presentacion nivel 3

CASOS DE ESTUDIO

NIVEL 3

1 Caso de estudio: Las Notas de un Curso

Contenedoras de tamaño fijo con tipos de datos simples

Page 6: APO1 - Presentacion nivel 3

CASOS DE ESTUDIO

NIVEL 3

2 Caso de estudio: Reservas de un vuelo

Contenedoras de tamaño fijo con objetos

Page 7: APO1 - Presentacion nivel 3

CASOS DE ESTUDIO

NIVEL 3

3 Caso de estudio: Tienda de Libros

Contenedoras de tamaño variable

Page 8: APO1 - Presentacion nivel 3

HOJAS DE TRABAJO

2 Hojas de trabajo: Parqueadero y Lista de Contactos

NIVEL 3

Page 9: APO1 - Presentacion nivel 3

CASO DE ESTUDIO – LAS NOTAS DE UN CURSO

NIVEL 3

Page 10: APO1 - Presentacion nivel 3

CONTENEDORAS DE TAMAÑO FIJO - ARREGLOS

Utilizadas cuando se tienen un número fijo de elementos

Todos los elementos se almacenan bajo una misma variable o atributo

Numeración desde cero hasta el tamaño del arreglo menos uno

Ejemplo:

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

Valores (datos simples

u objetos)

Posiciones:

Tamaño del arreglo: 12

notas

NIVEL 3

Page 11: APO1 - Presentacion nivel 3

DECLARACIÓN DE UN ARREGLO

La definición de un arreglo

public class Curso

{

//----------------------------------------------------------------

// Constantes

//----------------------------------------------------------------

private final static int TOTAL_EST = 12;

//----------------------------------------------------------------

// Atributos

//----------------------------------------------------------------

private double [ ] notas;

}

notas

NIVEL 3

Page 12: APO1 - Presentacion nivel 3

INICIALIZACIÓN DE UN ARREGLO

Utilizada para definir el número de elementos que va a tener el arreglo y

reservar el espacio en memoria. En este momento el valor de cada elemento es

indefinido

public class Curso

{

//----------------------------------------------------------------

// Constructores

//----------------------------------------------------------------

public Curso( )

{

notas = new double [TOTAL_EST];

}

}

d d d d d d d d d d d d

notas

d = double

NIVEL 3

Page 13: APO1 - Presentacion nivel 3

ACCESO A LOS ELEMENTOS DE UN ARREGLO

Un índice permite acceder y modificar un elemento de un arreglo

public class Curso

{

public void modificarValores( )

{

notas[0] = 2.0;

notas[1] = 3.0;

notas[2] = 4.0;

notas[3] = 5.0;

}

}

2.0 3.0 4.0 5.0 d d d d d d d d

notas

d = double

NIVEL 3

Page 14: APO1 - Presentacion nivel 3

ACCESO A LOS ELEMENTOS DE UN ARREGLO

Un índice permite acceder y modificar un elemento de un arreglo

public class Curso

{

public void consultarValores( )

{

double nota0 = notas[0] ;

double nota1 = notas[1] ;

double nota2 = notas[2] ;

notas[3] = 4.5;

double nota3 = notas[3] ;

tamanio = notas.length;

}

}

2.0 3.0 4.0 4.5 d d d d d d d d

notas

d = double

Operador especial de Java que

permite consultar el tamaño de

un arreglo.

NIVEL 3

Page 15: APO1 - Presentacion nivel 3

INTRUCCIONES REPETITIVAS

Elementos del while

<inicio>

while( <condición> )

{

<cuerpo>

<avance>

}

Ejemplo con while (Clase Curso)

public double darPromedio( )

{

double suma = 0.0;

int indice = 0;

while( indice < TOTAL_EST )

{

suma += notas[indice];

indice++;

}

return suma/TOTAL_EST;

}

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

notas

NIVEL 3

Page 16: APO1 - Presentacion nivel 3

INTRUCCIONES REPETITIVAS

Elementos del for

<inicio1>

for (<inicio2>; <condición>; <avance> )

{

<cuerpo>

}

NIVEL 3

Page 17: APO1 - Presentacion nivel 3

INTRUCCIONES REPETITIVAS

Elementos del for

public double darPromedio( )

{

double suma = 0.0;

for( int indice = 0; indice < TOTAL_EST; indice++)

{

suma += notas[indice];

}

return suma/TOTAL_EST;

}

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

notas

NIVEL 3

Page 18: APO1 - Presentacion nivel 3

PATRONES DE ALGORITMOS

Patrón de recorrido total

Para modificar algunos elementos del arreglo

Ejemplo: Definir un método en la clase Curso que adiciona 0.2 a los

estudiantes con nota inferior a 3.0

Para calcular alguna propiedad sobre los elementos del arreglo

Ejemplo: Definir un método en la clase Curso que retorne el número de

estudiantes que aprobaron el curso (nota mayor o igual a 3).

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

notas

NIVEL 3

Page 19: APO1 - Presentacion nivel 3

PATRONES DE ALGORITMOS

Patrón de recorrido parcial

Para modificar algunos elementos del arreglo

Ejemplo: Definir un método en la clase Curso que incremente la nota de los

estudiantes en 0.5 hasta que algún estudiante obtenga una nota superior o

igual a 4.5.

Para calcular alguna propiedad sobre los elementos del arreglo

Ejemplo: Definir un método en la clase Curso que retorne si algún

estudiantes sacó 5.0 en el curso.

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

notas

NIVEL 3

Page 20: APO1 - Presentacion nivel 3

PATRONES DE ALGORITMOS

Patrón de doble recorrido

Para calcular alguna propiedad sobre los elementos del arreglo

Ejemplo: Definir un método en la clase Curso que retorne la nota que

aparece el mayor número de veces.

3.5 2.8 5.0 3.2 2.1 4.5 3.6 5.0 4.9 2.7 4.7 3.4

0 1 2 3 4 5 6 7 8 9 10 11

notas

NIVEL 3

Page 21: APO1 - Presentacion nivel 3

PRÓXIMA CLASE - LABORATORIO

DESARROLLO DE LAS TAREA 2, 3, 4 Y 5

NIVEL 3

Page 22: APO1 - Presentacion nivel 3

PREGUNTAS

NIVEL 3

Page 23: APO1 - Presentacion nivel 3

CONTENEDORAS DE TAMAÑO FIJO – ARREGLOS

MANEJO DE OBJETOS

NIVEL 3

Page 24: APO1 - Presentacion nivel 3

CASO DE ESTUDIO DEL AVIÓN – ARREGLOS DE OBJETOS

NIVEL 3

Page 25: APO1 - Presentacion nivel 3

CASO DE ESTUDIO DEL AVIÓN – ARREGLOS DE OBJETOS

NIVEL 3

Page 26: APO1 - Presentacion nivel 3

CONTENEDORAS DE TAMAÑO FIJO ALMACENANDO OBJETOS

NIVEL 3

Page 27: APO1 - Presentacion nivel 3

DECLARACIÓN DE UN ARREGLO DE OBJETOS

La definición de un arreglo de objetos

public class Avion

{

//----------------------------------------------------------------

// Constantes

//----------------------------------------------------------------

public final static int SILLAS_EJECUTIVAS = 8;

//----------------------------------------------------------------

// Atributos

//----------------------------------------------------------------

private Silla[ ] sillasEjecutivas;

}

NIVEL 3

Page 28: APO1 - Presentacion nivel 3

INICIALIZACIÓN DE UN ARREGLO DE OBJETOS

La inicialización de un arreglo de objetos

public class Avion

{

public final static int SILLAS_EJECUTIVAS = 8;

//----------------------------------------------------------------

// Constructores

//----------------------------------------------------------------

public Avion()

{

sillasEjecutivas = new Silla[SILLAS_EJECUTIVAS];

}

}

NIVEL 3

Page 29: APO1 - Presentacion nivel 3

EJERCICIOS CON ARREGLOS DE OBJETOS

Ejercicios con arreglos de objetos

En la clase Avion declarar un método denominado

contarSillasEjecutivasDesocupadas, el cual retorna el número de sillas

ejecutivas que están desocupadas.

En la clase Avion declarar un método denominado buscarPasajeroEjecutivo el

cual retorna la Silla en la que se encuentra el pasajero identificado con la cédula

que se pasa como parámetro. Si no hay ningún pasajero con la cédula el método

debe retornar null.

En la clase Avion declarar un método denominado buscarSillaEconomicaLibre

el cual retorna una silla económica disponible en la localización recibida como

parámetro (ventana, centro o pasillo). Si no existe ninguna el método deberá

retornar null.

NIVEL 3

Page 30: APO1 - Presentacion nivel 3

EJERCICIOS CON ARREGLOS DE OBJETOS

Ejercicios con arreglos de objetos

En la clase Avion declarar un método denominado asignarSillaEconomica, el

cual asigna al pasajero que recibe como parámetro una silla en clase económica

que esté libre (en la ubicación recibida como parámetro). Si el proceso tiene

éxito retorna verdadero, en caso contrario, retorna falso.

En la clase Avion declarar un método denominado anularReservaEjecutivo el

cual anula la reserva en clase ejecutiva que tenía el pasajero con la cédula

recibida como parámetro. Retorna verdadero si el proceso tiene éxito.

En la clase Avion declarar un método denominado

contarVentanasEconomicas el cual retorna el número de puestos disponibles

en una ventana, en la zona económica del avión.

NIVEL 3

Page 31: APO1 - Presentacion nivel 3

EJERCICIOS CON ARREGLOS DE OBJETOS

Ejercicios con arreglos de objetos

En la clase Avion declarar un método denominado

hayDosHomonimosEconomica, el cual informa si en la zona económica del

avión hay dos personas que se llaman igual. Patrón de doble recorrido.

NIVEL 3

Page 32: APO1 - Presentacion nivel 3

PRÓXIMA CLASE

ANALIZAR EL CASO DE ESTUDIO 3 – TIENDA DE LIBROS

CONTENEDORAS DE TAMAÑO VARIABLE

TODAS LAS TAREAS DEL LIBRO

NIVEL 3

Page 33: APO1 - Presentacion nivel 3

PREGUNTAS

NIVEL 3

Page 34: APO1 - Presentacion nivel 3

CONTENEDORAS DE TAMAÑO VARIABLE

MANEJO DE OBJETOS

NIVEL 3

Page 35: APO1 - Presentacion nivel 3

NIVEL 3

Contenedoras de tamaño variable

Caso de estudio de la tienda de libros

Declaración de un vector de objetos

Inicialización y tamaño de un vector de objetos

Acceso a los elementos de un vector de objetos

Agregar elementos a un vector de objetos

Reemplazar un elemento de un vector de objetos

Eliminar un elemento de un vector de objetos

Ejercicios del caso de estudio de la tienda de libros

Uso de ciclos en otros contextos

Creación de una clase en Java

NIVEL 3

Page 36: APO1 - Presentacion nivel 3

CASO DE ESTUDIO DE LA TIENDA DE LIBROS

NIVEL 3

Page 37: APO1 - Presentacion nivel 3

CASO DE ESTUDIO DE LA TIENDA DE LIBEROS

CONTENEDORAS DE TAMAÑO VARIABLE (VECTOR)

NIVEL 3

Page 38: APO1 - Presentacion nivel 3

CONTENEDORA DE TAMAÑO VARIABLE (VECTORES)

En Java existen varias clases para manejar contenedoras de tamaño variable,

en este nivel se va a utilizar la clase ArrayList.

En un ArrayList no se pueden almacenar grupos de atributos de tipo simple,

sino únicamente grupos de objetos.

En este nivel se va a llamar Vector a cualquier implementación de una

contenedora de tamaño variable.

NIVEL 3

Page 39: APO1 - Presentacion nivel 3

DECLARACIÓN DE UN VECTOR

La definición de un vector de objetos

public class TiendaLibros

{

//----------------------------------------------------------------

// Atributos

//----------------------------------------------------------------

private ArrayList catalogo;

private CarroCompras carrito;

}

NIVEL 3

Page 40: APO1 - Presentacion nivel 3

DECLARACIÓN DE UN VECTOR

La definición de un vector de objetos

public class CarroCompras

{

//----------------------------------------------------------------

// Atributos

//----------------------------------------------------------------

private ArrayList itemsCompra;

}

NIVEL 3

Page 41: APO1 - Presentacion nivel 3

INICIALIZACIÓN DE UN VECTOR DE OBJETOS

La inicialización de un vector de objetos se realiza en el constructor de la

clase que lo contiene.

public class TiendaLibros

{

//----------------------------------------------------------------

// Constructores

//----------------------------------------------------------------

public TiendaLibros()

{

catalogo = new ArrayList( );

carrito = new CarroCompras( );

}

}

NIVEL 3

Page 42: APO1 - Presentacion nivel 3

INICIALIZACIÓN DE UN VECTOR DE OBJETOS

En los vectores no es necesario definir el tamaño, en los arreglos es

indispensable hacerlo.

public class CarroCompras

{

//----------------------------------------------------------------

// Constructores

//----------------------------------------------------------------

public CarroCompras()

{

itemsCompra = new ArrayList( );

}

}

NIVEL 3

Page 43: APO1 - Presentacion nivel 3

AGREGAR ELEMENTOS A UN VECTOR DE OBJETOS

Adición de elementos a u vector de objetos

public class TiendaLibros

{

public void agregarTresLibros( )

{

Libro lb1 = new Libro(“Mi libro 1”, “0011”, 100000);

Libro lb2 = new Libro(“Mi libro 2”, “0012”, 200000);

Libro lb3 = new Libro(“Mi libro 3”, “0013”, 300000);

catalogo.add(lb1);

}

}

NIVEL 3

Page 44: APO1 - Presentacion nivel 3

AGREGAR ELEMENTOS A UN VECTOR DE OBJETOS

Adición de elementos a u vector de objetos

public class TiendaLibros

{

public void agregarTresLibros( )

{

Libro lb1 = new Libro(“Mi libro 1”, “0011”, 100000);

Libro lb2 = new Libro(“Mi libro 2”, “0012”, 200000);

Libro lb3 = new Libro(“Mi libro 3”, “0013”, 300000);

catalogo.add(lb1);

catalogo.add(lb2);

}

}

NIVEL 3

Page 45: APO1 - Presentacion nivel 3

AGREGAR ELEMENTOS A UN VECTOR DE OBJETOS

Adición de elementos a u vector de objetos

public class TiendaLibros

{

public void agregarTresLibros( )

{

Libro lb1 = new Libro(“Mi libro 1”, “0011”, 100000);

Libro lb2 = new Libro(“Mi libro 2”, “0012”, 200000);

Libro lb3 = new Libro(“Mi libro 3”, “0013”, 300000);

catalogo.add(lb1);

catalogo.add(lb2);

catalogo.add(0, lb3);

}

}

NIVEL 3

Page 46: APO1 - Presentacion nivel 3

ACCESO A LOS ELEMENTOS EN UN VECTOR DE OBJETOS

Acceso a los elementos de un vector de objetos

public class TiendaLibros

{

public void accederLibros()

{

Libro lb1 = (Libro) catalogo.get(0);

Libro lb2 = (Libro) catalogo.get(1);

}

}

NIVEL 3

Page 47: APO1 - Presentacion nivel 3

REEMPLAZAR UN ELEMENTO EN UN VECTOR DE OBJETOS

Reemplazar un elemento de un vector de objetos

public class TiendaLibros

{

public void reemplazarLibros()

{

Libro lb1 = (Libro) catalogo.get(0);

Libro lb2 = (Libro) catalogo.get(1);

catalogo.set(0, lb2);

catalogo.set(1, lb1);

}

}

NIVEL 3

Page 48: APO1 - Presentacion nivel 3

ELIMINAR UN ELEMENTO EN UN VECTOR DE OBJETOS

Eliminar un elemento de un vector de objetos

public class TiendaLibros

{

public void eliminarLibro()

{

Libro lb = (Libro)catalogo.get(0);

catalogo.remove(lb);

}

}

NIVEL 3

Page 49: APO1 - Presentacion nivel 3

TAMAÑO DE UN VECTOR DE OBJETOS

En los vectores el tamaño se conoce mediante el método size(), en lugar de

utilizar el operador length empleado en los arreglos.

public class TiendaLibros

{

public int darTamanoCatalogo( )

{

return catalogo.size( );

}

}

NIVEL 3

Page 50: APO1 - Presentacion nivel 3

TAMAÑO DE UN VECTOR DE OBJETOS

Determinar si un vector de objetos está vacío.

public class TiendaLibros

{

public boolean estaVacioElCatalogo ( )

{

return catalogo.isEmpty( );

}

}

NIVEL 3

Page 51: APO1 - Presentacion nivel 3

EJERCICIOS CON VECTORES DE OBJETOS

Ejercicio - Recorrido Total

En la clase TiendaLibros adicionar un nuevo método denominado

darPrecioUnitarioPromedioLibro, este método deberá retornar el precio

unitario promedio de los libros que hay en el catalogo de la tienda. En caso de

que en el catálogo no hayan libros el método deberá retornar -1.

Modificar el método metodo1 de la clase TiendaLibros para que retorne uno de

los siguientes mensajes:

El precio unitario promedio de los libros que hay en el catálogo es: X

No hay libros en el catálogo

NIVEL 3

Page 52: APO1 - Presentacion nivel 3

EJERCICIOS CON VECTORES DE OBJETOS

Ejercicio - Recorrido Parcial

En la clase TiendaLibros agregar un método denominado

buscarLibroPorISBN, este método recibe como parámetro el ISBN del libro que

se está buscando. El método debe retornar el objeto del libro que tiene dicho

ISBN, en caso que no haya un libro con el ISBN recibido como parámetro el

método deberá retornar null.

NIVEL 3

Page 53: APO1 - Presentacion nivel 3

EJERCICIOS CON VECTORES DE OBJETOS

Ejercicio – Doble Recorrido

En la clase TiendaLibros adicionar un nuevo método denominado

hayDosLibrosConElMismoTitulo, este método deberá retornar un valor

indicando si en el catálogo de libros que hay en la tienda existen dos libros con el

mismo título.

Modificar el método metodo1 de la clase TiendaLibros para que retorne uno de

los siguientes mensajes:

Si hay dos libros con el mismo título en el catalogo

No hay dos libros con el mismo título en el catalogo

NIVEL 3

Page 54: APO1 - Presentacion nivel 3

EJERCICIOS CON VECTORES DE OBJETOS

Ejercicio – Recorrido parcial

En la clase TiendaLibros adicionar un método denominado eliminarLibro este

método recibe como parámetro el ISBN del libro que se desea eliminar del

catálogo, en caso de que en el catálogo haya un libro con ese ISBN, el libro debe

ser eliminado. El método debe retornar un valor indicando si el libro pudo ser

eliminado o no.

Modificar el método metodo1 de la clase TiendaLibros para que retorne uno de

los siguientes mensajes:

El libro fue eliminado del catálogo

El libro no fue eliminado del catálogo

NIVEL 3

Page 55: APO1 - Presentacion nivel 3

EJERCICIOS CON VECTORES

Tarea 10 de libro

Tarea 11 del libro

NIVEL 3

Page 56: APO1 - Presentacion nivel 3

PREGUNTAS

NIVEL 3