Actividad final

Con los siguientes ejercicios verificarás el uso de las estructuras de control de secuencia para la resolución de problemas a través del lenguaje de programación orientado a objetos con Java.

Identificación de expresiones booleanas

1. Los días de la semana son siete y están ordenados, (DOMINGO, LUNES, MARTES, … SÁBADO). ¿Cuál sería la condición booleana para preguntar si el día es parte del fin de semana?

(dia == DOMINGO) || (dia == SABADO)

El día debe ser DOMINGO o SABADO, el OR se expresa con dos barras verticales (sin espacio: || ). Recuerda que para hacer comparaciones se usa el doble simbolo ==, ya que el igual simple es el operador de asignación.

2. El parámetro cuadrático (A) de una función de segundo grado $f(x)=Ax^2+Bx+C$ no puede ser igual a cero; si no, no se trataría de una función de segundo orden.

(a <> 0)

Para verificar que sea distinto de cero,$\neq$ se representa con el signo de menor que seguido de mayor que (sin espacios)

3. La estatura de una persona adulta no puede ser menor a 50 cm ni mayor de 230 cm.

(estatura>=50 && estatura<=230) // unidades en [cm]

Deben cumplirse dos condiciones al mismo tiempo, por eso se utiliza una sentencia AND (&&): la estatura mayor o igual a 50 y la estatura menor o igual a 230.

Diagramas sintácticos

Indica si las siguientes sentencias corresponden al diagrama sintáctico mostrado en la figura.

Diagrama de flujo

if( x==10 )

System.out.println("Máxima calificación”);

() Falso

() Verdadero

Diagrama de flujo

if (x==10)

System.out.println("Máxima calificación”);

Diagrama de flujo

return ? 5 : 6;

() Falso

() Verdadero

Es un operador ternario, ocupado en una sentencia return, pero falta la expresión booleana

Diagrama de flujo

return ? 5 : 6;

Diagramas de flujo

Arrastra los diagramas hacia la codificación o nombre correspondiente:

if(expresion)

// hacer algo

else

// hacer otra cosa

switch(variable) {

case A: // algo

break;

case B: // otro

break;

// …

default: // ya que otra

// hacer otra

}

Condicional Codificación en Java Diagrama de flujo de la sentencia
Simple

if(expresion)

// hacer algo

Compuesta
Múltiple esquema

Verificación

Se requiere crear un método que promedie calificaciones de un alumno, las cuales solo pueden ser valores numéricos entre 5 y 6

public void agregarCalificacion( double calificacion ) {

if( (calificacion>=6)&&(calificacion<=10) ) {

this.suma += calificacion;

this.promedio = this.suma/this.materias;

}

else

errorDeMateria("La calificación debe estar entre 6 y 10");

}

¿Qué mecanismo se escogió para resolver esta validación?

  • () ignorar el error y asignar.
  • () intentar corregir el error.
  • () generar una excepción si no está en el rango correcto de valores.

¿Qué estructura se utilizó para la verificación?

  • () condicional compuesta if-else.
  • () operador ternario.

El método errorDeMateria() debe ejecutar una excepción cuando se verifica que la calificación debe estar entre 6 y 10. Se utiliza una condicional compuesta (if-else).

En un estudio de salud de adultos se utiliza el IMC como referencia. El peso de una persona debe estar entre 35 y 150, esta condición se verifica al asignar el peso en un setter, si está fuera de rango debe indicar que no es un número (Double.NaN). Completa los espacios en blanco:

public void setPeso(double value) {

this.peso = ( value>=35 && value<=150 ) ? value : Double.NaN;

this.calcularIMC();

}

Se ocupó: Operador ternario

Existen tres clases: Persona, Adolescente15AñosHombre y Adolescente15AñosMujer. Las tres tienen su constructor con parámetros peso y estatura de tipo double. Además se sabe su estatura en una variable edad de tipo entero y su sexo en una variable char (si es igual a 'M' es masculino y si es igual a 'F' es femenino. Se desea crear una Persona para recuperar la interpretación de su índice de masa corporal con getInterpretacionIMC() implementado en cada uno; para el adulto no se requiere saber el sexo pero si tiene 15 años si. Considere que la población a la que se le aplicará está conformada por alumnos de primer ingreso (15 años) y egresados de 18 años que se consideran adultos y están implementados en Persona. Utilice una condicional anidada para implementar la codificación e interpretación del IMC. Complete los datos en blanco:

// Datos previos:

// char genero; // (‘M’ o ‘F’)

// int edad; // (15 o 18 años)

// double peso;

// double estatura;

if( edad == 15 ) {

if ( genero == 'M' ) { // Adolescente hombre de 15 años

Adolescente15AñosHombre chamaco = new Adolescente15AñosHombre(peso,estatura);

System.out.println( chamaco.getInterpretacionIMC() );

}

else { // Adolescente mujer de 15 años

Adolescente15AñosMujer damita = new Adolescente15AñosMujer(peso,estatura);

System.out.println( damita.getInterpretacionIMC() );

}

}

else { // adulto, no importa el sexo

Persona egresado = new Persona(peso,estatura);

System.out.println( egresado.getInterpretacionIMC() );

}

Codificaciones con estructuras condicionales

El programa solicitará una o más veces que se introduzca un valor para el parámetro cuadrático “a” de una ecuación de segundo grado hasta que sea distinto de cero. Completa la sentencia adecuada.

Scanner teclado = new Scanner( System.in );

double a;

Ecuacion unaEcuacion = new Ecuacion();

do{

System.out.print("Escribe el valor del parámetro cuadrático");

a = teclado.nextDouble();

if( a==0 )

System.out.println( "El valor no puede ser igual a cero, intenta de nuevo." );

else

unaEcuacion.setA( a );

} while(a==0);

Operador ternario

Completa el método para obtener el valor máximo entre dos cantidades:

public double max( double a, double b ) {

return maximo = ( a>b ) ? a : b ;

}

El operador de módulo % regresa el residuo de una cantidad a dividida entre otra b. Para saber si un número es par, el residuo al dividir entre 2 debe ser cero. Implementa el operador ternario para que la siguiente expresión indique si el número x es par o impar:

System.out.println( x%2 ? "par" : "impar" );