jueves, 15 de marzo de 2012

Estructuras Condicionales Anidadas

Buenas amigos, en este post veremos como, por medio de la estructura condicional, explicada en el anterior post, podemos obtener múltiples resultados, según nos sea mas conveniente. Estas estructuras condicionales anidadas suelen aparecer cuando se necesitan más de 2 soluciones posibles. Veamos el típico ejemplo de las notas medias:

*Realizaremos un programa que nos permita ingresar 3 notas de un alumno, calcular la media, y mostrar un mensaje para cada una de las siguientes situaciones:
  • <5------"Suspenso"
  • >=5 y <8------"Aprobado"
  • >=9-----"Sobresaliente"
Veamoslo:

Bien, creamos el nuevo proyecto y una nueva clase llamada, en mi caso, "MediaAlumno".
Importamos la clase Scanner de la libreria java.util, para leer desde teclado.
        • import java.util.Scanner;
Creamos un objeto de la clase Scanner llamado, en mi caso, teclado:
        • Scanner teclado=new Scanner (System.in);
Creamos 4 variables de tipo float, 3 para almacenar las notas del alumno, y 1 para almacenar el valor de la media de las 3 anteriores:
        • float nota1,nota2,nota3,media;
Pedimos por consola que nos ingrese la primera nota y se la asignamos a la variable nota1:
        • System.out.println(" Ingrese la primera nota");
        • nota1=teclado.nextFloat();
Pedimos por consola que nos ingrese la segunda nota y se la asignamos a la variable nota2:
        • System.out.println(" Ingrese la segunda nota");
        • nota2=teclado.nextFloat();
Pedimos por consola que nos ingrese la tercera nota y se la asignamos a la variable nota3:
        • System.out.println(" Ingrese la tercera nota");
        • nota3=teclado.nextFloat();
Ahora que ya tenemos las 3 notas asignadas a sus variables, calculamos la media y asignamos el valor a la variable "media":
        • media=(nota1+nota2+nota3)/3;
Como bien sabréis, lo que hay dentro del paréntesis se resuelve en primer lugar, por lo cual, sumará las 3 notas y posteriormente la dividirá entre 3.

Ya tenemos la nota media del alumno en su variable, ahora toca saber cual de las 3 condiciones descritas en el ejemplo es la que corresponde a la nota media del alumno. Para ello anidaremos una sentencia if con otra sentencia if:

          • if(media>=8){
          • System.out.print("SOBRESALIENTE: ") ;
          • System.out.println(media); 
          • }else{
          • if(media>=5){
          • System.out.print("APROBADO: ");
          • System.out.println(media);
          • }else{
          • System.out.print("SUSPENSO: ") ;
          • System.out.println(media); 
          • }
          • }
Bien, lo que hace Java es lo siguiente:
  1. Comienza comparando la variable "media" con el valor 8, si es mayor, mostrará por pantalla el mensaje "SOBRESALIENTE" y mostrará la nota media, terminandose la ejecución del programa. 
  2. Si es menor, la condición será falsa, con lo cual pasa al primer ELSE.
  3. Aquí es donde os podréis liar un poco, una vez llega al primer ELSE, java ha descartado una condición, no es una nota "SOBRESALIENTE", por lo cual, deberá elegir entre "APROBADO" y "SUSPENSO". Para ello creamos otra condición dentro del ELSE.
  4. En la nueva condición creada, java compara la media con el valor 5, si esa nota, que ya sabemos que es menor que 8, es mayor o igual al valor 5, mostrará el mensaje "APROBADO", terminándose la ejecución del programa.
  5. Si resulta que la nota media es menor que 5, entonces Java no compara más la nota con ningún valor, por que si no es mayor  o igual a 8 ni mayor o igual que 5, solo queda una opción, y es "SUSPENSO", y termina la ejecución del programa.
Bien amigos, hasta aquí las condicionales anidadas, pero, aunque el programa no da error, no es del todo perfecto, ya que si por error ingresáramos una nota superior a 10, el programa no va a parar la ejecución, ya que no le hemos puesto ningún límite comparativo, en este ejemplo sería el 10. En el próximo post explicaremos las Estructuras Condicionales con Operadores Lógicos.

Un saludo.

2 comentarios: