apo1 - presentacion nivel 3
Post on 13-Jun-2015
7.501 Views
Preview:
DESCRIPTION
TRANSCRIPT
ALGORÍTMICA Y PROGRAMACIÓN 1 (APO 1)
NIVEL 3
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 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
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
CASOS DE ESTUDIO
NIVEL 3
1 Caso de estudio: Las Notas de un Curso
Contenedoras de tamaño fijo con tipos de datos simples
CASOS DE ESTUDIO
NIVEL 3
2 Caso de estudio: Reservas de un vuelo
Contenedoras de tamaño fijo con objetos
CASOS DE ESTUDIO
NIVEL 3
3 Caso de estudio: Tienda de Libros
Contenedoras de tamaño variable
HOJAS DE TRABAJO
2 Hojas de trabajo: Parqueadero y Lista de Contactos
NIVEL 3
CASO DE ESTUDIO – LAS NOTAS DE UN CURSO
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
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
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
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
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
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
INTRUCCIONES REPETITIVAS
Elementos del for
<inicio1>
for (<inicio2>; <condición>; <avance> )
{
<cuerpo>
}
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
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
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
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
PRÓXIMA CLASE - LABORATORIO
DESARROLLO DE LAS TAREA 2, 3, 4 Y 5
NIVEL 3
PREGUNTAS
NIVEL 3
CONTENEDORAS DE TAMAÑO FIJO – ARREGLOS
MANEJO DE OBJETOS
NIVEL 3
CASO DE ESTUDIO DEL AVIÓN – ARREGLOS DE OBJETOS
NIVEL 3
CASO DE ESTUDIO DEL AVIÓN – ARREGLOS DE OBJETOS
NIVEL 3
CONTENEDORAS DE TAMAÑO FIJO ALMACENANDO OBJETOS
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
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
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
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
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
PRÓXIMA CLASE
ANALIZAR EL CASO DE ESTUDIO 3 – TIENDA DE LIBROS
CONTENEDORAS DE TAMAÑO VARIABLE
TODAS LAS TAREAS DEL LIBRO
NIVEL 3
PREGUNTAS
NIVEL 3
CONTENEDORAS DE TAMAÑO VARIABLE
MANEJO DE OBJETOS
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
CASO DE ESTUDIO DE LA TIENDA DE LIBROS
NIVEL 3
CASO DE ESTUDIO DE LA TIENDA DE LIBEROS
CONTENEDORAS DE TAMAÑO VARIABLE (VECTOR)
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
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
DECLARACIÓN DE UN VECTOR
La definición de un vector de objetos
public class CarroCompras
{
//----------------------------------------------------------------
// Atributos
//----------------------------------------------------------------
private ArrayList itemsCompra;
}
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
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
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
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
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
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
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
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
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
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
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
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
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
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
EJERCICIOS CON VECTORES
Tarea 10 de libro
Tarea 11 del libro
NIVEL 3
PREGUNTAS
NIVEL 3
top related