CONDICIONALES EN C++

 

En ocasiones, es necesario realizar una u otra acción dependiendo de si se cumple o no una condición predeterminada. Es como si tuviéramos dos caminos diferentes por los cuales el programa puede continuar dependiendo del resultado de alguna condición previa.

Para llevar a cabo estos procesos, todos los lenguajes de programación cuentan con sentencias condicionales que se encargan de evaluar si una condición es falsa o verdadera. Este tipo de procesos condicionales en C++, se puede llevar a cabo con las instrucciones if y else.

 

Condicional if – else

 

Este tipo de sentencia condicional, toma como valor de comparación una sentencia lógica, por ejemplo a < b, en caso de la condición lógica llegar a ser verdadera, el flujo del programa tomará un rumbo y en caso de llegar a ser falsa, el flujo del programa tomara un rumbo diferente. Viendo desde la simbología de un diagrama de flujo, tendríamos lo siguiente:

 

Diagrama Condicional

 

Entonces, para el caso de las sentencias if – else las cuales trabajan en conjunto. A la instrucción if se le agrega la condición lógica que se quiere evaluar, además entre corchetes se agregan el conjunto de instrucciones que debe ejecutar el programa en caso que la condición lógica sea verdadera, por su parte a la sentencia else se le agregan las instrucciones que el programa debe cumplir en caso que la condición anterior sea falsa. Por ejemplo:

 

ejemplo If

 

En el fragmento de código anterior, se evalúa si el valor guardado en la variable a es menor que el valor guardado en la variable b, en caso de ser cierta la condición se imprimirá en pantalla el texto “El número menor es el guardado en la variable a”, por el contrario si la condición resulta ser falsa entonces se imprimirá el texto “El número menor es el guardado en la variable b”.

 

Condicionales anidados:

 

Muchas veces, requerimos evaluar varias condiciones distintas que van encadenadas y dependen del resultado de la comparación anterior, esto visualmente se podría ver como si tuviéramos una condición dentro de otra condición. A estos casos son a los que se les llama condicionales anidados.

Diagrama Anidados

 

En el diagrama anterior, podemos observar como en caso que el resultado de la primera condición sea falso, entonces inmediatamente se ingresa a evaluar una segunda condición y es la forma más común de realizar anidamientos, no quiere decir que no podemos hacer anidamientos dentro del camino del sí, pero no es lo más común.

Para ver un ejemplo, de cómo sería la sintaxis de un condicional anidado, vamos a retomar el ejemplo del código anterior, donde se evalúa si el valor guardado en la variable a es menor al guardado en la variable b. Si nos fijamos, este código tiene un problema y se presenta en el caso que los dos valores sean iguales, si se presenta este caso, el código imprimiría el texto “El número menor es el guardado en la variable b”, lo cual no es cierto ya que ambos números son iguales, pero como no se cumple la primera condición, la instrucción de esa impresión sería la que se ejecutaría.

Esto se puede solucionar con condicionales anidados de la siguiente forma:

 

Ejemplo Anidados1

 

En el código anterior, se observa como la primera condición if verifica si los valores guardados en las variables a y b son iguales, luego sino son iguales (dentro del else) se realiza otro condicional if donde se verifica si el valor guardado en a es menor al valor guardado en b.

Para este tipo de anidamientos, no son necesarios los corchetes de la instrucción else y se puede generar directamente una secuencia else if, con lo cual se logra simplificar el código y disminuir la cantidad de errores que comete el programador cuando tiene demasiados anidamientos y por lo tanto demasiados corchetes seguidos en el código, que por lo general resultan en errores. El mismo ejemplo anterior escrito de forma else if, quedaría de la siguiente manera:

 

Ejemplo anidados2

 

Aunque en este ejemplo en específico que tan solo se tiene un anidamiento, no se alcanza a notar mucho la diferencia, lo cierto es que a mayor número de anidamientos, esta sintaxis va a ser mucho más ventajosa para el programador y para quien lea el código a futuro.

 

Evaluar varias condiciones en un solo if:

 

Por último, a veces es necesario en un mismo condicional if, evaluar el resultado de varias comparaciones lógicas para así tomar una decisión sobre el proceso a seguir.

Para llevar a cabo estos tipos de comparaciones, es necesario hacer uso de los operadores lógicos AND (&&) y OR (||) ya que dependiendo de las necesidades del programa se requiere del uso de uno o del otro.

Si necesitamos que la condición if sea verdadera, solamente cuando todas las comparaciones sean verdaderas, entonces tendremos que utilizar un operador AND (&&).

Si por el contrario necesitamos que la condición if sea verdadera, simplemente con que una o más comparaciones sean verdaderas, entonces tendremos que utilizar un operador OR (||).

Por ejemplo, tenemos cuatro números guardados en las variables a, b, c y d. Ahora se va a verificar si el número guardado en la variable a es mayor a los guardados en las demás variables, entonces procedemos a comparar la variable a con cada una de las otras variables, de la siguiente forma:

 

Ejemplo condicionales

 

Para el caso anterior, ya que necesitamos saber si lo guardado en a es mayor a lo que hay guardado en las otras variables, obligatoriamente necesitamos que todas las comparaciones sean verdaderas, por eso usamos el operador &&.

Pero ¿qué pasaría en el caso que tuviéramos una variable llamada letra de tipo carácter en el que guardamos una letra y queremos determinar si esa letra es vocal o consonante?

Para este caso específico, tendríamos que comparar el valor guardado en la variable con cada una de las vocales (son menos valores con los cuales comparar) y en caso que una sola comparación sea verdadera, entonces determinar que la letra introducida es una vocal, en caso contrario será una consonante. Por lo tanto, el código nos quedaría de la siguiente manera:

 

Ejemplo condionales

 

Para este último caso, se requería el operador || ya que bastaba con que una sola de las comparaciones fuera verdadera, para que la condición if se cumpliera y determinara que la letra ingresada era una vocal.

Pero ¿qué pasaría si en lugar del operador || se hubiera colocado un operador &&? En este caso ya que una letra no podría ser al mismo tiempo las cinco vocales, el resultado del condicional if siempre seria falso, por lo tanto, así el usuario ingresara una vocal, el programa siempre determinaría que el usuario ingresó una consonante, generando un error en el programa.

ANTERIOR PUBLICACIÓN SOBRE PROGRAMACIÓN EN C++: Entrada y salida de datos en C++ (printf y scanf)

SIGUIENTE PUBLICACIÓN SOBRE PROGRAMACIÓN EN C++: Instrucción switch – case en C++

Iván Cuadros Acosta

Licenciado en Electrónica y Especialista en Edumática con experiencia en docencia universitaria. Apasionado por la electrónica y la programación.