Estructura de control if en lenguaje C


Muchas veces en la programación queremos que el programa realice diversas operaciones de acuerdo a sí una condición se cumple, veamos el siguiente ejemplo.

Estructura if

Supongamos que tenemos un programa que requiere saber si un usuario es mayor de edad (18 años o más).

A nivel lógico la estructura if() trabaja con valores booleanos, de manera simple podríamos decir que si la condición (lo que va entre corchetes () ) se cumple, es decir si es cierto, o en este caso de ejemplo el valor de edad es igual o mayor a 18, devuelve un 1 que podemos ver como un true, entonces procede con el código encerrado entre corchetes (imprime “Usted es mayor de edad.”).

En el caso de que la condición sea falsa (que sea menor de 18 años), se devuelve un 0 que podemos ver como false y se procede con el código entre los corchetes {} de la sentencia else (imprime “Usted es menor de edad”).

Dudas con if

¿Qué pasa si no pongo else?

R: Simplemente si la condición es falsa procede con las demás instrucciones del programa.

¿Puedo poner un else sin un if?

R. No, todo else requiere un if que lo preceda. Pero si es totalmente valido poner if sin else.

 

Anidar if’s

Muchas veces vamos a requerir preguntar por más de una condición, veamos el siguiente ejemplo.

Ejemplo 2:

Necesitamos un programa que de acuerdo al promedio del alumno imprima un mensaje.

  • De 6 a 10 “Felicidades, aprobaste”
  • 5 “Esfuerzate más”
  • Menor a 4 “Reprobaste”

¿Por qué anidar if’s?

Es una buena pregunta, seguramente notarás que si en lugar de la sintaxis del ejemplo if, else if,… utilizas if, if,… ¿también funciona?

Ejemplo :

Imagine que deseamos un programa que con calificaciones mayor a 5 muestre mensaje de a probado, con 10 de excelencia académica. Y que solo muestre un mensaje

 

 

Y el resultado con el segundo si nuestra variable calif tuviese un valor de 10 obtendríamos dos mensajes ¿Por qué? Porque cada condición actua de forma independiente, es decir, aunque cumpla una checara la otra. Caso contrario con el uso de if-else, donde solo checara otra condición si solo si no se cumple la primera, es decir, en nuestro ejemplo si solo si calif tiene un valor diferente de 10, entonces checara la condición de que si calif es mayor a 5.

En otros terminos cada condición if es preguntar “si ocurre algo”, mientras que cuando utilizamos un if-else es equivalente a decir “sino ocurre lo primero (if) hacer los segundo (else)”

 

Notación

Es muy común encontrar diferentes formas de expresar un if-else if (if anidado). Algunas de las mas comunes y que son equivalente son las siguientes.

Podemos ver que mientras más condiciones tengamos resulta mas conveniente utilizar la primera forma, aunque como todo en esta vida es cuestión de gustos.

 

Ejercicio:

Solicitar por medio del teclado la edad y la calificación de un alumno.

Si es mayor de 18 años y su calificación es mayor o igual 6 imprimir “Eres un big boy”

Si es menor de 18 años y su calificación es mayor o igual 6 imprimir “Eres un little boy”

Si es mayor de 18 años y su calificación es menor a 6 imprimir “Estas chavo”

Si es menor de 18 años y su calificación es menor a 5 imprimir “Echale ganas chaval”

Si su edad es igual a 17 años y su calificación menor a 6 imprimir “Amo su inocencia 17 años, amos sus errores 17 años, soy su primer extra 17 años”

Nota: Si algún alumno cumple con más de un perfil solo debe imprimir un mensaje.

Casos:

Edad=98 & calificación = 6 -> “Eres un big boy”

Edad=17 & calificación = 4 -> “Amo su inocencia 17 años, amos sus errores 17 años, soy su primer extra 17 años”

 

Ejemplos y ejercicio resuelto