Ejecución Condicional

Motivación: Indicar si una ecuación de segundo grado tiene raíces reales o complejas.

    Coeficiente a ? 1.
    Coeficiente b ? 4.
    Coeficiente c ? 7.
    La ecuación tiene raíces complejas
La idea es que si b*b >= 4*a*c, la ecuación tiene raíces reales, si no, son complejas. Por lo tanto, hay que desplegar mensajes distintos. Hay que ejecutar instrucciones distintas.

La instrucción if

La instrucción if permite ejecutar grupos de instrucciones en forma condicional. Por ejemplo:

    if (b*b >= 4*a*c) {
      print("La ecuación tiene raíces reales");
    }
    else {
      print("La ecuación tiene raíces complejas");
    }
En pocas palabras, el significado de esta instrucción se puede explicar de la siguiente forma: si b*b>=4*a*c entonces se ejecuta el primer print, si no se ejecuta el segundo.

Sintaxis de if:

    if (``condición'') {
      ``instrucciones 1''
    }
    else {
      ``instrucciones 2''
    }
Semántica de if:

La condición sigue la siguiente sintaxis:

``expresión 1'' ``operador relacional'' ``expresión 2''

En donde el operador relacional compara expresiones numéricas y puede ser: >, <, >= (mayor o igual), <= (menor o igual), == (igual) o != (distinto).

Ejercicio: desplegar el máximo entre a y b sin usar max.

Solución:

    if (a>b) {
      print("El máximo es ");
      print(a);
    }
    else {
      print("El máximo es ");
      print(b);
    }
¡Se pueden ejecutar más de una instrucción en cada alternativa!


Ejercicio:

Completar el programa que calcula las raíces de la ecuación de segundo grado. Cuando la ecuación tiene raíces reales, el diálogo debe ser el siguiente:

Por ejemplo:

    Coef. a ? 1.
    Coef. b ? -3.
    Coef. c ? 2.
    Las raíces son 1.0 y 2.0
Solución:

    // Lectura de a, b y c: todos double (propuesto)
    ...
    // Cálculo de las raíces
    double b24ac= b*b - 4*a*c;
    if (b24ac>=0) {
      print("Las raíces son ");
      print( (-b+sqrt(b24ac))/(2*a) );
      print( (-b-sqrt(b24ac))/(2*a) );
    }
    else
      println("La ecuación tiene soluciones imaginarias");
Obs.: también se puede escribir:

      print( (-b+sqrt(b24ac))/2/a );
pero no:

      print( (-b+sqrt(b24ac))/2*a ); // Malo
      print( -b+sqrt(b24ac)/2/a );   // Malo