29/03/2024
# Tags
#C++ #Programación

Estructura: If en C++

En programación uno de las actividades que frecuentemente se realizan es la toma de decisiones, en todo momento un programa está «decidiendo» hacer una cosa en respuesta a un evento, a una entrada del usuario, o en respuesta de otra aplicación. Una de las formas de más uso para tomar este tipo de decisiones es la estructura de control If.

If

If es una estructura de control que toma decisiones a partir de evaluar una expresión. If siempre se va ejecutar si la condición es verdadera, por el contrario si es falsa, no hará nada. En la siguiente imagen podemos apreciar este comportamiento de forma gráfica.

Estructura if
Estructura if

La sintaxis en C++ para utilizar If es:

if (expresión) {
//Sentencias
}

En donde,

{ }, las llaves indican el alcance de la expresión de if, son necesarias a menos que la instrucción esté formada solo por una sentencia.
expresión, es una expresión lógica, siempre se encierra en paréntesis
//sentencias, las instrucciones que deseamos ejecutar si la condición es verdadera, puede ser tan extensa como sea necesario, es importante que tengas en mente que las instrucciones son tratadas como si fueran una sola, hasta que termine la última If devolverá el control al programa principal.

Nota: Si solo vas a escribir una sentencia a continuación de la expresión, puedes prescindir del uso de los corchetes, aunque por claridad es preferible utilizarlos.

A continuación se muestra el uso de If

/******************************************************************************
    // ifBasico.cpp
   // Este programa muestra el uso de If
   // 2017, Por http://about.me/carlosgbr
   // Versión 1
   // Compilado en https://www.onlinegdb.com/online_c++_compiler
*******************************************************************************/
#include <iostream>
using namespace std;
int main()
{
    int edad = 0;
    cout<<"Escribe tu edad en años: ";
    cin >> edad;
    //Con if comprobamos si el usuario es mayor de edad
    if (edad >= 18) {
        cout << "Eres mayor de edad" << endl;
    }
    cout<<"Aquí termina el programa";
    return 0;
}

Definitivamente el programa es sencillo, pero ¡Ya da la ilusión de cierta inteligencia, no lo podrás negar! …Bueno por algo se empieza.

Analizando el programa

En el programa es conveniente tengas presentes las siguientes observaciones:

  • La condición edad >= 18 siempre debe ir entre paréntesis, si olvidas esto, el compilador generará un error.
  • La sentencia cout << «Esta línea se ejecuta siempre»; se puso básicamente para ilustrar que sin importar el resultado de if (es decir se ejecute o no) una vez que se evalúa el if, el resto del programa continúa su ejecución.

Puedes utilizar todos los if que requieras, en el siguiente programa retomamos el programa para calcular el IMC (Índice de masa corporal), ahora no solo podemos calcular el IMC del usuario, sino que además con la ayuda de if podemos indicar en qué rango se encuentra (bajo peso, normal, sobre peso, obesidad u obesidad mórbida), no es la mejor forma de hacerlo, pero permite ilustrar el uso de if, que es lo importante en este momento.

Utilizando múltiples If

Como siempre, transcribe (de preferencia) o copia y pega el código y hazle todas las modificaciones que desees para ver el resultado. Particularmente resulta conveniente que modifiques las comparaciones y pruebes el programa en los valores límite

 // imc2if.cpp
    // Cálculo del IMC (IMC = Índice de masa corporal) utilizando la fórmula:
    // IMC = masa / estatura^2 de acuerdo a
    // https://es.wikipedia.org/wiki/%C3%8Dndice_de_masa_corporal
    // Wl programa determina el grado de obesidad de acuerdo al IMC resultante
    // Además permite ilustrar el uso de la estructura de control if
    // 2017, Por http://about.me/carlosgbr
    // Versión 1
    // Compilado en https://www.onlinegdb.com/online_c++_compiler
    #include <iostream>
    #include <string>
    using namespace std;
    int main () {
        const float BajoPeso = 18.5; //Hasta 18.5
        const float SobrePeso = 25.00; //A partir de 25.00
        const float Obesidad = 30.00; //A partir de 30.00
        const float ObesidadMorbida = 40.00; //A partir de 40.00
        string nombre, estatusIMC;
        float peso, estatura, imc;
        cout << "Después de escribir el dato que se te pide, pulsa la tecla ENTER ó ACEPTAR" << endl << endl;
        cout << "Este programa te permitirá conocer tu índice de masa corporal (IMC)" << endl << endl;
        cout << "Cuál es tu nombre?:" << endl;
        cin >> nombre; //Se lee y almacena el nombre
        cout << "Mucho gusto " << nombre << ", por favor, dime tu peso en kilogramos: " << endl;
        cin >> peso; //Se lee y almacena el peso
        cout << "Muy bien, ahora por favor, dime tu estatura en metros: " << endl;
        cin >> estatura; //Se lee y almacena la estatura
        //cálculo del IMC
        imc = peso / (estatura*estatura);
        //Determinamos el grado de obesidad dependiendo del IMC
        //bajo peso menor a 18.5
        if (imc <= BajoPeso) {
            estatusIMC = "Bajo peso";
        }
        //Peso normal superior 18.5 menor a 25.0
        if ((imc > BajoPeso) and (imc <= SobrePeso)) {
            estatusIMC = "Peso normal";
        }
        //SobrePeso arriba de 25.0
        if ((imc > SobrePeso) and (imc < Obesidad)) {
            estatusIMC = "Obesidad";
        }
        //Obesidad arriba de 30.0 menor a 40.0
        if ((imc >= Obesidad) and (imc <= ObesidadMorbida)) {
            estatusIMC = "Obesidad";
        }
        //Obesidad Mórbida arriba 40.0
        if (imc > ObesidadMorbida) {
            estatusIMC = "Obesidad Mórbida";
        }
        cout << "Muy bien " << nombre << ", Te informo que tu Índice de Masa Corporal es: "
             << imc << endl;
        cout << "De acuerdo a la OMS, tu IMC está dentro del rango: "
             << estatusIMC << endl;
       return 0;
    }

El programa es similar al primero que hicimos, lo que hace indicar un valor al IMC obtenido utilizando estructuras if, cada if evalúa el IMC obtenido y en función de la comparación IMC contra la tabla de la OMS determina el grado de salud de peso, indicándolo al usuario.

Observa que de todos los if solo se ejecutará solo uno (el que cuya condición sea verdadero). La otra parte importante que debes evaluar son las condiciones utilizadas, puedes observar que si vas a comparar un valor inferior o superior  basta con utilizar una instrucción como es el caso de:

(imc <= BajoPeso)
(imc > ObesidadMorbida)

cuando requieras comparar un valor en un rango será necesario que hagas al menos 2 comparaciones como en nuestro caso para determinar la condición de normalidad (de 18.5 a 25) de sobre peso (de 25 a 30) y obesidad (30 a 40)

//Peso normal superior 18.5 menor a 25.0
 if ((imc > BajoPeso) and (imc <= SobrePeso)) {
//SobrePeso arriba de 25.0
 if ((imc > SobrePeso) and (imc < Obesidad)) {
//Obesidad arriba de 30.0 menor a 40.0
 if ((imc >= Obesidad) and (imc <= ObesidadMorbida)) {
 //Obesidad Mórbida arriba 40.0

nota que cada comparación tiene sus paréntesis, y toda la expresión, también. Como observación final nota la forma que se utilizaron las comparaciones y límites, no es la única forma, intenta hacer cambios, lo importante es obtener resultados válidos. Por ejemplo, puedes probar quitar los signos de igualdad y ver que pasa en torno a los valores límite.

Si pasa, haz esto pero si no…

Como puedes apreciar, ya puedes decidir cualquier cosa si una condición se cumple y ya viste que si no, simplemente pasa de largo y continúa el programa su ejecución.

Sin embargo en el mundo cuando algo no se cumple, resulta necesario controlar también esa opción. Para esto utilizamos la forma completa de if: La estructura if / else


eHack Logo

 Fuente Imágenes

  • «Todas las demás imágenes de esta sección»: by Nala Systems

Código Fuente

Licencia de Creative Commons
Estructura: If en C++ by Roberto C. González is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Estructura: If en C++

Estructura: If / else en C++

Leave a comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *