Manejo de Notas en Java: Curso Básico
Manejo de Notas en Java: Curso Básico
Nivel 3
Entradas
Resultado
Entradas
Ninguna
Resultado
El promedio de las notas de los doce estudiantes del curso
Requerimientos Funcionales
R3 – Calcular el número de estudiantes por encima del
Nombre
promedio
Permite saber cuántos estudiantes tienen una nota
Resumen
superior a la nota promedio del curso
Entradas
Ninguna
Resultado
Número de estudiantes con nota mayor al promedio del curso
Modelo de la Clase
Curso
double nota1;;
double nota2;;
double nota3;;
double nota4;;
double nota5;;
double nota6;;
double nota7;;
double nota8;;
double nota9;;
double nota10;;
double nota11;;
double nota12;;
Modelo de la Clase
Curso Curso
double nota1;; double notas =
0
double nota2;;
1
double nota3;;
double nota4;; 2
double nota5;; 3
double nota6;; 4
double nota7;;
UN SOLO 5
double nota8;; ATRIBUTO 6
double nota9;; LLAMADO 7
double nota10;; 8
double nota11;;
notas 9
double nota12;; 10
11
Arreglo = contenedora de tamaño fijo
0 1 2 3 4 5 6 7 8 9 10 11
notas = 3.5 5.0 4.5 2.5 4.5 2.5 3.5 4.0 2.0 1.5 3.5 5.0
• Cada posición del arreglo (casilla) se utiliza como una variable
notas[5] = 3.0;;
i = 2;;
if ( notas[ i ] > 4.0)
notas[10] = notas[3];;
if (notas[11] == notas[0])
notas[0] = 2.0;;
else
notas[0] = notas[11];;
Declaración de un arreglo
public class Curso
{
//Constantes
public final static int TOTAL_EST = 12;;
//Atributos
private double[ ] notas;;
}
Declaración de un arreglo
public class Curso
{
//Constantes
Se declara una
final public static int TOTAL_EST = 12;; constante para fijar el
tamaño del arreglo
//Atributos
private double[ ] notas;;
}
TODOS los
elementos del arreglo
son del MISMO TIPO
Inicialización de un arreglo
public Curso
{
notas = new double [TOTAL_EST];;
}
• El espacio en memoria (una cajita por posición del arreglo) queda
reservada.
• El valor de los elementos del arreglo es indefinido al comienzo.
• Para consultar el número de elementos del arreglo: length
notas.length
• Si se trata de acceder a una casilla con índice menor que 0 o mayor
que el número máximo de casillas (en este caso 12)
java.lang.ArrayIndexOutOfBoundsException
Para dar valores a los elementos
del arreglo
public void ponerNotasEnCero ( )
{
notas[0] = 0;;
notas[1] = 0;;
notas[2] = 0;;
notas[3] = 0;;
notas[4] = 0;;
notas[5] = 0;;
notas[6] = 0;;
notas[7] = 0;;
notas[8] = 0;;
notas[9] = 0;;
notas[10] = 0;;
notas[11] = 0;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
… (9 veces más)
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
… (9 veces más)
return suma;;
}
Instrucciones repetitivas: Para dar
valores a los elementos del arreglo
• Repita 12 veces poner en cero la nota …cual?
La condición
es no Termina el ciclo
verdadera?
si
Ejecuta las
instrucciones
del cuerpo
del ciclo
Ejecución de una instrucción repetitiva
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( ) Inicio de las variables de trabajo:
{ • Indice para movernos en el arreglo
double suma = 0.0;; • Acumulado de la suma de las notas
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{ Condición para continuar:
double suma = 0.0;; • Cualquier expresión lógica
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
return suma;;
}
Para calcular el promedio de las
notas del curso
public double promedio ( )
{
double suma = 0.0;;
return suma;;
}
Tarea No. 2 - Calcular el número de estudiantes que
sacaron una nota entre 3.0 y 5.0
public int cuantosPasaron ( )
{
}
Otra forma – instrucción for each
Calcular el número de estudiantes que sacaron una nota
entre 3.0 y 5.0
public int darCantidadAprobados( )
{
int vanAprobando = 0;
for( Double nota: notas )
{
if( nota >= 3.0 )
{ vanAprobando++;
}
}
return vanAprobando;
}
}
Tarea No. 2 - Contar el número de estudiantes que sacaron una nota inferior a
la del estudiante que está en la posición del arreglo que llega como parámetro.
Suponga que el parámetro posEst tiene un valor entre 0 y TOTAL_EST-1
public int cuantosPeoresQue ( int posEst )
{
}
Tarea No. 2 - Aumentar en un 5% todas las notas del
curso, sin que ninguna de ellas sobrepase el valor de 5.0
public void hacerCurva ( )
{
}
Patrones de recorrido de
arreglos
Patrón de recorrido total
• Se usa cuando se necesita recorrer TODO
el arreglo
• Ejemplos:
– Calcular la suma de TODAS las notas del
curso
–…
–…
–…
Patrón de recorrido total
Indice para movernos
en el arreglo empieza
en CERO
<cuerpo>
}
}
Cuerpo
public void cambiarNotas ( )
{
for (int i = 0; i < notas.length; i++)
{ if (notas[i] < 1.5)
{
notas[i] = 1.5;
}
else if (notas[i] > 4.0)
{
notas [i] = notas [i] -0.5;
}
else if (notas[i] > 1.5 && notas[i] < 3.0)
{
notas [i] = notas [i] + 0.5;
}
}
}
Patrón de recorrido total con
acumulado
• Se usa cuando se necesita recorrer TODO
el arreglo y además ACUMULAR o
CALCULAR alguna propiedad sobre
TODOS los elementos.
• Ejemplos:
– Contar cuántos estudiantes pasaron
– Calcular el promedio
–…
–…
Patrón de recorrido total con
acumulado
• Decisiones a tomar:
– Cómo acumular?
– Cómo inicializar el acumulado?
– Condición para cambiar el acumulado?
– Cómo cambiar el acumulado?
Proceso
• ¿Es recorrido total o no?
• Si es recorrido total, el ciclo va a ser de la forma
-> inicialización
for (int i = 0;; i < arreglo.length;; i++)
cuerpo
terminación
• ¿Es con acumulado?
– Inicialización: El acumulado se inicializa en 0
– int suma = 0;;
• Cuerpo = conservar el invariante y avanzar hacia la solución
– El acumulado se incrementa como corresponde
Ejemplo de recorrido total
public double promedio ( ) public double promedio ( )
{ {
double suma = 0.0;;
double suma = 0.0;;
for ( indice = 0;; indice < notas.length;; int indice = 0;;
indice++)
{
while ( indice < notas.length )
suma += notas[ indice ];;
indice++;; {
} suma += notas[ indice ];;
indice++;;
suma = suma / TOTAL_EST;; }
return suma;;
}
suma = suma / TOTAL_EST;;
return suma;;
}
Ejemplo promedio de notas
public double promedio ( )
{
double suma = 0.0;;
int indice = 0;;
La condición es
verdadera? no
indice < arreglo.length Termina el ciclo
si
Ejecuta las
instrucciones
del cuerpo
del ciclo
Termina con
Indice++
Ejecución de una instrucción repetitiva
inicio Preparación del
ciclo
Int indice = 0;;
indice < no
arreglo.length Termina el ciclo
si
Ejecuta las instrucciones
del cuerpo del ciclo
indice ++;;
Ejecución de una instrucción repetitiva
inicio Preparación del
ciclo
indice ++;;
si
Ejecuta las instrucciones
del cuerpo del ciclo
Ejemplo
• Inicialización
– ¿Qué variables voy a usar además del índice y qué contienen EN CADA MOMENTO…al
terminar una iteración del ciclo y antes de empezar el ciclo? INVARIANTE
– ¿Con qué valor se inicializan esas variables?
notas = 3.5 4.5 3.5 5.0 4.5 2.5 3.5 4.0 2.0 1.5 3.5 5.0
Otra posibilidad: con while y sin
centinela
public boolean alguienConCinco ( )
{
int i = 0;;
while ( i < notas.length && notas[ i ] != 5.0 )
{
i++;;
}
return ( i < notas.length );;
}
0 1 2 3 4 5 6 7 8 9 10 11
notas = 3.5 4.5 3.5 5.0 4.5 2.5 3.5 4.0 2.0 1.5 3.5 5.0
Con for y condición doble
Indice para movernos
en el arreglo empieza
en CERO
for ( int indice = 0;; indice < arreglo.length && !<condicion>;; indice++)
{
<cuerpo del ciclo>
}
Patrón de recorrido parcial
Condición para continuar:
• índice menor que la longitud del arreglo
Y (&&)
• no se cumple una condición
for ( int indice = 0;; indice < arreglo.length && !<condicion>;; indice++)
{
<cuerpo del ciclo>
}
Patrón de recorrido parcial
… Calcular la condición dentro del ciclo
y utilizar una variable auxiliar (centinela)
0 1 2 3 4 5 6 7 8 9 10 11
notas = 3.5 4.5 3.5 5.0 4.5 2.5 3.5 4.0 2.0 1.5 3.5 5.0
Otra opción: cortando el ciclo
con un return
public boolean alguienConCinco ( )
{
for ( int i = 0;; i < notas.length;; i++)
{
public boolean alguienConCinco ( )
if ( notas[ i ] == 5.0 ) {
public boolean alguienConCinco ( )
for ( int i = 0;; i < notas.length;; i++)
return true;; { {
for ( int i = 0;; i < notas.length;; i++)
} { if ( notas[ i ] == 5.0 )
{ return true;;}
return false ;; if ( notas[ i ] == 5.0 )
else
{ return true;;}
} return false;; {return false;;}
}
}
} }
Patrón de recorrido parcial con
acumulado
• Se usa cuando NO se necesita recorrer
TODO el arreglo, sino hasta que se
cumpla una condición y además
• Se necesita ACUMULAR o CALCULAR
alguna propiedad sobre los elementos.
Ejemplo con acumulado
Encontrar las primeras TRES notas de 1.5 y asignarles 2.5.
public void subirTresNotas( )
{
Una variable para
int numNotas = 0;;
contar cuántas notas de
boolean termino = false;; 1.5 se han subido a 2.5
for ( int i = 0;; i < notas.length && numNotas < 3;; i++)
{
if ( notas[ i ] == 1.5 )
{
numNotas++;;
notas[ i ] = 2.5;;
Se pone la condición de
}
continuación
} directamente en el ciclo
}
Ejemplo con acumulado
Método que retorna la posición en el arreglo de la tercera nota con valor 5.0
public int tercerCinco( )
{
int cuantosCincos = 0;; Dos variables para
int posición = 0;; acumular la información
boolean termino = false;;
for ( int i = 0;; i < notas.length && !termino;; i++)
{
if ( notas[ i ] == 5.0 )
cuantosCincos++;;
if ( cuantosCincos == 3 )
{
termino = true;;
posicion = i;;
}
}
return posicion;;
}
Ejemplo con acumulado
Método que retorna la posición en el arreglo de la tercera nota con valor 5.0
public int tercerCinco( )
{
int cuantosCincos = 0;;
int posición = 0;;
Variable centinela del
boolean termino = false;;
ciclo
for ( int i = 0;; i < notas.length && !termino;; i++)
{
if ( notas[ i ] == 5.0 )
cuantosCincos++;;
if ( cuantosCincos == 3 )
{
termino = true;;
posicion = i;;
}
}
return posicion;;
}
Ejemplo con acumulado
Método que retorna la posición en el arreglo de la tercera nota con valor 5.0
public int tercerCinco( )
{
int cuantosCincos = 0;;
Condición con el centinela
int posición = 0;;
boolean termino = false;;
for ( int i = 0;; i < notas.length && !termino;; i++)
{
if ( notas[ i ] == 5.0 )
cuantosCincos++;;
if ( cuantosCincos == 3 )
{
termino = true;;
posicion = i;;
}
}
return posicion;;
}
Ejemplo con acumulado
Método que retorna la posición en el arreglo de la tercera nota con valor 5.0
public int tercerCinco( )
{
int cuantosCincos = 0;;
int posición = 0;;
boolean termino = false;;
for ( int i = 0;; i < notas.length && !termino;; i++)
{
if ( notas[ i ] == 5.0 ) Condición para cambiar el acumulado
cuantosCincos++;;
if ( cuantosCincos == 3 )
{
termino = true;;
posicion = i;;
}
}
return posicion;;
}
Ejemplo con acumulado
Método que retorna la posición en el arreglo de la tercera nota con valor 5.0
public int tercerCinco( )
{
int cuantosCincos = 0;;
int posición = 0;;
boolean termino = false;;
for ( int i = 0;; i < notas.length && !termino;; i++)
{
if ( notas[ i ] == 5.0 )
cuantosCincos++;;
if ( cuantosCincos == 3 ) Condición para cambiar el centinela y
{ salir del ciclo
termino = true;;
posicion = i;;
}
}
return posicion;;
0 1 2 3 4 5 6 7 8 9 10 11
}
notas = 5.0 4.5 3.5 5.0 4.5 5.0 3.5 4.0 2.0 1.5 3.5 5.0
Tarea No. 4: Calcular el número mínimo de notas del curso necesarias
para que la suma supere el valor 30, recorriéndolas desde la posición 0
en adelante. Si al sumar todas las notas no se llega a ese valor, el
método debe retornar -1
public int sumadasDanTreinta ( )
{
double sumaNotas = 0;;
int cuantasNotas = 0;;
boolean termino = false;;
Constantes
Asociación
opcional
La clase Avion
public class Avion
{
//Constantes
public final static int SILLAS_EJECUTIVAS = 8;;
public final static int SILLAS_ECONOMICAS = 42;;
//Atributos
private Silla[] sillasEjecutivas;;
private Silla[] sillasEconomicas;;
}
La clase Silla
public class Silla
{
// Constantes
public final static int CLASE_EJECUTIVA = 1;;
public final static int CLASE_ECONOMICA = 2;;
public final static int VENTANA = 1;;
public final static int CENTRAL = 2;;
public final static int PASILLO = 3;;
// Atributos
private int numero;;
private int clase;;
private int ubicacion;;
private Pasajero pasajero;;
}
La clase Pasajero
public class Pasajero
{
// Atributos
private int cedula;;
private String nombre;;
}
Un objeto de la
clase Avión podría
verse así
Tarea No.6 – Hacer la declaración de la clase Pasajero
public class Pasajero
{
//-----------------------------------
// Atributos
//-----------------------------------
//-----------------------------------
// Constructor
//-----------------------------------
public Pasajero( int unaCedula, String unNombre )
{
}
Tarea No.6 – Hacer la declaración de la clase Pasajero
public class Pasajero
{
//-----------------------------------
// Métodos
//-----------------------------------
public int darCedula( )
{
}
}
}
Tarea No.7 – Completar la declaración de la clase Silla
public class Silla
{
//-------------------------------------------
// Constantes
//-------------------------------------------
public final static int CLASE_EJECUTIVA = 1;;
public final static int CLASE_ECONOMICA = 2;;
public final static int VENTANA = 1;;
//-------------------------------------------
// Atributos
//-------------------------------------------
private int numero;;
private int clase;;
private int ubicacion;;
private Pasajero pasajero;;
Tarea No.7 – Completar la declaración de la clase Silla
public class Silla
{
public Silla( int num, int clas, int ubica )
{
numero = num;;
clase = clas;;
ubicacion = ubica;;
pasajero = null;;
}
}
Tarea No.7 – Completar la declaración de la clase Silla
public void desasignarSilla ( )
{
}
}
Tarea No.7 – Completar la declaración de la clase Silla
public int darClase( )
{
}
}
}
La clase Avion
public class Avion
{
//Constantes
public final static int SILLAS_EJECUTIVAS = 8;;
public final static int SILLAS_ECONOMICAS = 42;;
//Atributos
private Silla[] sillasEjecutivas;;
private Silla[] sillasEconomicas;;
}
Método constructor de la clase Avion
public Avion( )
{
// Crea las sillas ejecutivas y economicas
sillasEjecutivas = new Silla[SILLAS_EJECUTIVAS];;
sillasEconomicas = new Silla[SILLAS_ECONOMICAS];;
return contador;;
}
Pasemos al avión …
Contar cuántas sillas ejecutivas están libres (o sea no asignadas)
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;;
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
{
if ( notas [ i ] >= 3.0 )
contador++;;
}
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
{ {
if ( notas [ i ] >= 3.0 ) if ( sillasEjecutivas[ i ].sillaAsignada( ) == false )
contador++;; contador++;;
} }
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
{ {
if ( notas [ i ] >= 3.0 ) if ( sillasEjecutivas[ i ].sillaAsignada( ) == false )
contador++;; contador++;;
} }
return contador;;
} }
Transformación …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
{ {
if ( notas [ i ] >= 3.0 ) if ( sillasEjecutivas[ i ].sillaAsignada( ) == false )
contador++;; contador++;;
} }
} }
Ahora con variables auxiliares …
Caso de las notas del curso Caso avión (método
(método de la clase Curso) de la clase Avion)
public int cuantosPasaron ( ) public int cuantasSillasEjecutivasLibres ( )
{ {
int contador = 0;; int contador = 0;;
double notaAux;; Silla sillaAux;;
for ( int i = 0;; i < notas.length;; i++ ) for ( int i = 0;; i < sillasEjecutivas.length;; i++ )
{ {
notaAux = notas[ i ];; sillaAux = sillasEjecutivas[ i ];;
if ( notaAux >= 3.0 ) if ( sillaAux.sillaAsignada( ) == false )
contador++;; contador++;;
} }
} }
En la clase AVION:
}
En la clase AVION:
return contador;;
En la clase AVION:
Contar cuántas sillas de clase económica tienen una ubicación dada
(que se recibe como parámetro)
public int contarSillasEconomicasEnUbicacion ( int ubi )
{
}
En la clase AVION:
Contar cuántas sillas de clase económica tienen una ubicación dada
(que se recibe como parámetro)
public int contarSillasEconomicasEnUbicacion ( int ubi )
{
int contador = 0;;
Silla sillaAux;;
return contador;;
En la clase AVION:
Informar (verdadero o falso) si un pasajero dado se encuentra en la
clase ejecutiva del avión (la cédula del pasajero se recibe como
parámetro)
AYUDAS:
1. Es un patrón de recorrido parcial
2. Utilice el método darPasajero( ) de la clase Silla para obtener el
pasajero de una silla
3. Recuerde que una silla puede o no estar asignada (una silla está
asignada cuando su pasajero existe. Una silla NO está asignada
cuando su pasajero no existe (es null))
4. Utilice el método darCedula( ) de la clase Pasajero, para obtener el
número de cédula del pasajero de una silla
En la clase AVION:
Informar (verdadero o falso) si un pasajero dado se encuentra en la
clase ejecutiva del avión (la cédula del pasajero se recibe como
parámetro)
}
Contenedoras de tamaño
variable o vectores (ArrayList)
Cada
compra
Número hace
La tienda indeterminado referencia a
tiene un de objetos un libro del
carrito de
compras catálogo
public TiendaLibros( )
{
catalogo = new ArrayList <Libro>( );;
carrito = new CarroCompras( );;
}
• Se usa la misma sintaxis que para crear un objeto
de cualquier clase (new)
• No se dice de que tipo son los objetos que se van a
guardar en él
Algunos métodos de la clase
ArrayList
• isEmpty( ) - Es un método que retorna verdadero si el vector no
tiene elementos, y falso en caso contrario.
• size( ) – Es un método que retorna el número de elementos que hay
en el vector
• get (indice) – Retorna el objeto en la posición indice. Las posiciones
comienzan desde 0
• add( objeto) – agrega el objeto al final del vector
• add( indice, objeto) – inserta el objeto en la posición indice y corre
los siguiente una posición
• set (indice, objeto) – pone el objeto en la posición índice. No corre
los otros. El que estaba en esa posición se pierde
• remove (indice) – elimina ese elemento del vector. Los que le siguen
quedan enuna posición adelantas
Patrón de recorrido total
En arreglos En vectores
for ( int i = 0;; i < notas.length;; i++) for ( int i = 0;; i < catalogo.size( );; i++)
{ {
<cuerpo del ciclo> <cuerpo del ciclo>
} }
Acceso a los elementos de un vector
Nombre del
vector
vector.get ( pos )
Método get Parámetro que indica la
de la clase posición del elemento
ArrayList que se quiere obtener
Ejemplo en la clase TiendaLibros
public int inventario( )
{
int sumaPrecios = 0;; Variable auxiliar o
temporal de tipo
Libro libroAux;; Libro
vector.add ( objeto )
Método add Parámetro que es el
de la clase objeto que se va a
ArrayList agregar al vector
Insertar un elemento en una posición
dada dentro de un vector
Nombre del Parámetro que indica la
vector posición donde se va a
insertar el elemento
Nombre del
vector
vector.remove ( indice )
Método remove Parámetro que indica la
de la clase posición del elemento que se
ArrayList desea eliminar
Tarea No. 10 - En la clase TiendaLibros:
Localizar un libro en el catalogo, dado su ISBN (que se recibe como
parámetro). Si no lo encuentra, el método debe retornar null
public Libro buscarLibro ( String isbn)
{
}
Tarea No. 10 - En la clase TiendaLibros:
Adicionar un libro en el catálogo, si no existe ya un libro con ese ISBN.
Utilice el método anterior para identificar el caso en el cual ya hay un
libro con ese ISBN. El libro que se desea adicionar se recibe como
parámetro.
public void adicionarLibroCatalogo ( Libro nuevoLibro)
{
}
Tarea No. 11 - En la clase CarroCompras:
Adicionar una cantidad de ejemplares de un libro al pedido actual. El
método debe considerar el caso en el que el libro ya se encuentre en el
pedido, caso en el cual solo debe incrementar el número de
ejemplares. Si el libro no se encuentra, el método debe crear un nuevo
item ItemCompra. El libro que se desea adicionar, así como la cantidad
se reciben como parámetros.
}
Tarea No. 11 - En la clase CarroCompra:
Calcular el monto total de la compra del usuario. Para esto debe tener
en cuenta el precio de cada libro y el número de ejemplares de cada
uno que hay en el pedido.
public int calcularValorTotalCompra ( )
{
}
Tarea No. 11 - En la clase CarroCompra:
Eliminar del pedido el libro que tiene el ISBN dado como parámetro. Si
no hay ningún libro con ese ISBN, el método no hace nada.
}
Patrón de doble recorrido
• Se usa cuando por CADA ELEMENTO del
arreglo se debe hacer un recorrido
COMPLETO
• Ejemplos:
– Encontrar la nota que aparece un mayor
número de veces en el curso
–…
–…
–…
Patrón de doble recorrido
0 1 2 3 4 5 6 7 8 9 10 11
notas = 5.0 4.5 3.5 5.0 4.5 5.0 3.5 4.0 3.5 1.5 3.5 5.0
Ejemplo
Encontrar la nota que aparece un mayor número de veces en el curso
}
Ahora con la Tienda de Libros
Tarea: Informar (verdadero o falso) si en el catálogo de la tienda de
libros hay dos libros con el mismo título