Decisiones

Verdadero o falso (true or false)

En la vida real hacemos uso de enunciados que son verdaderos o falsos, ya que nos permiten ir o elegir ciertos caminos o pueden generar ciertas consecuencias dependiendo de la decisión, sin embargo, en cuestion de la programación es un poco similar, ya que se refiere a una evaluacion de una expresion booleana, una expresion booleana es una expresión que solo puede tener dos posibles valores (true) or (false) (verdadero o falso).

      • verdadero (true) : Representa la afirmacion de que una condición es cierta o que una expresion es valida. En la programacion la palabra reservada siempre es true
      • falso (false) : Representa la negacion de una afirmación o la falsedad de una condición. La palabra reservada es false

Basandonos en un ejemplo rapido donde en una expresion como 5>4 se evalua a verdadero porque el numero 5 es mayor a 3, sin enbargo  en otra expresion 2 >10 se evalua como falso porque sabemos que 2 no es mayor a 10.

Sentencias if-else

Sentencia If

En el lenguaje C, las decisiones se refieren a la capacidad del programa para tomar diferentes caminos de ejecucion basados en ciertas condiciones o criterios. Esto se logra utilizando utilizando las estructuras de control de flujo, como sentencias “if else y switch”.

Primeramente hablaremos de la sentencia if:

Es una estructura de control de flujo que permite tomar decisiones basadas en una condicion. La sentencia if nos permite comprobar si se cumple una cierta condición con el fin de ejecutar un proceso u otro. Es decir, si el resultado es verdadero el codigo tomará el camino de la sentencia if, en cambio, si el resultado es falso tomará el camino de la sentencia else (hay que tener muy en claro  el tema de verdadero y falso).

En su forma más simple se utiliza la palabra reservada if seguida de la condición a evaluar.

la sintaxis que normalmente encontramos al if es la siguiente.

                 

Sentencia else

La sentencia else se utiliza en conjunto con la sentencia if para proporcionar una alternativa en caso de que la condicion en el if no se cumpla. Es decir, si la condicion en el if es falsa, el bloque de codigo dentro del else se ejecutará

la sintaxis del else es la siguiente.

                   

Cabe destacar que el if-else siempre iran juntos, a menos que  sea algo verdadero no tomariamos el else en cuenta en el codigo, sin embargo normalmente siempre van de la mano

Ejemplo de codigo usando if-else

codigo if-else easy

            En dicho codigo solicitamos al usuario escribir un numero entero con el scanf, ya solicitado entrará en la sentencia if en donde si el entero es mayor a 10 ir por la condicion “el numero es mayor a 10” sin embargo si no es el caso ir por la sentencia else la cual es “el numero no es mayor a 10”.                                        

segundo ejemplo usando if-else

Lo mismo ocurre en este caso, se solicita datos al usuario, y la variable escrita por el usuario “entero” entra en una secuencia if en donde si cumple con la condicion arrojará el primer mensaje y si no, se inclinará por el segundo mensaje.

Sentencias anidadas.

Codigo 1

Codigo 1

         

En dicho codigo utilizamos un if-else donde escribes tu puntuacion, si la condicional es verdadera osea mayor a 90 obtienes la A, sin embargo tiene otras subcondiciones si no se cumple osea los else-if, en donde cada uno tiene sus condicionales verdadera o falsa y arroja los resultados correspondientes, si es verdadero arroja una b etc.

Codigo 2

Codigo 2

             

Dicho codigo es para saber si eres mayor de edad o adulto mayor.

En este codigo se abre un if-else primario en donde especifica si es >=0 continuar con el if siguiente, osea si la edad colocada es dentro del rango de 0 a n podemos continuar con las condiciones siguientes, sin embargo si es <0 osea numeros decimales o negativos el else primario lo cierra generando la frase “la edad ingresada es invalida”.

if-else

Normalmente los if-else anidados son una estructura en la que un bloque de codigo if o else contiene otro bloque de codigo if o else en su interior. Esto permite que el programa tome decisiones mas complejas al evaluar multiples condiciones secuenciales, es decir que sea mas detallado al momento de elegir una condición.   

Generalmente la estructura de un if-else anidados luce de la siguiente forma.

                 

Como podemos ver el codigo del primer if se ejecuta si la condicion externa es verdadera, dentro de dicho bloque encontrarse otro if que evalua la condicion interna. Si la condicion interna es verdadera se ejecuta el bloque correspondiendo, lo mismo aplica para si es falsa.

Tal vez sea un poco dificil entenderlo o aplicarlo pero es muy util para cuando se quieren tomar decisiones muy detalladas al momento del codigo.

else-if

La estructura “else-if” permite evaluar múltiples condiciones secuenciales después de un “if”. Para no revolver mucho mostrare su estructura que es similar al otro.

               

si en el bloque if la condicional es falsa se pasaria directamente a la condicional2 donde se activaria el bloque de codigo if para detallar mas la condicional donde veriamos si de nuevo es falsa o verdadera.

 

Sentencia switch-case

switch-case

Switch-case es una estructura de control que se utiliza para tomar decisiones multiples basadas en el valor de una expresion. Dicha estructura es especialmente util cuando hay varias condiciones posibles y cada una requiere una accion diferente.

Esto quiere decir que dependiendo de la condición o expresión es hacia donde va ir los casos. Normalmente esta es una alternativa más legible y organizada a las declaraciones if-else anidadas, especialmente cuando se trata de múltiples condiciones. 

Por ejemplo mostraremos la sintaxis basica de un switch-case

      • En donde la sintaxis la palabra expresion es la que se va preparar para los casos, valor1 y valor2  son los valores posibles que puede tomar la expresión (por eso se llama casos).
      • En el caso de la palabra break se utiliza para salir del switch despues de que se ejecuta un caso, es importante mencionar que si no se incluye la palabra break la ejecucion continuará en los casos siguientes sin importar si la condición es verdadera o no.
      • Por ultimo el default es opcional y se ejecutará si ninguno de los casos anteriores coincide con el valor de la expresión.

Sabemos que puede ser complicado, pero es mas sencillo de lo que parece ya que la expresion se evalua, se compara con los casos definidos dentro del switch, si se encuentra una coincidencia se ejecuta el bloque asociado y se sale del switch. 

switch-case (normal)

Codigo de ejemplo switch-case

    ,             

             

En este codigo para entender el switch-case le pedimos al usuario que escriba un numero de dia de la semana del 1 al 7 , abrimos el switch-case e ingresamos los casos “dias de la semana del 1 al 7” y por ultimo ingresamos el default para que el codigo termine si no accede a uno de los 7 casos mencionando la frase “Numero de dia invalido”.        

switch-case anidados

Los switch case anidados son una técnica en programación que implica anidar múltiples estructuras switch dentro de otras estructuras de control, como if-else, Esto quiere decir que podemos meter estructuras switch-case dentro de if-else para poder expresar un camino que va tomar la condición.

Los switch-case anidados se utilizan cuando se necesitan tomar decisiones mas complejas y anidadas ya que se puede anidar un switch dentro de otro switch o de igual manera dentro de un if-else

Tal vez con un ejemplo practico puedas entenderlo.

En dicho ejemplo solo tomamos en cuenta casos de enero y febrero, ya que hacemos escribir al usuario el numero de dia y numero del mes para que en base a los casos propuestos se lleve a un solo camino dependiendo de lo que escriba el usuario. En este caso ejemplo escribe el dia 2 y el mes 4 arrojaria el caso “Es un mes diferente a enero y febrero”.

Problemas con el if y su ambiguedad

Generalmente la sentencia if al menos puede ser muy ambigua ya que  hay situaciones en las que el compilador no puede  determinar de manera inequivoca que instruccion if debe ejecutar en un programa debido a la falta de llaves.

Tomando en cuenta si no se utilizan llaves para delimitar el bloque de codigo en if, este solo tomará como su cuerpo la siguiente instruccion despues de el. Esto puede provocar ambiguedades si hay mas de una instrucción en la linea despues del if.

En el codigo de alado podemos ver que todo esta bien, excepto por algo, la sentencia if no tiene las llaves adecuadas, por ende no puede tomar una decisión ademas de que no cuenta con un else en caso de que no se cumpla la condición es por eso que es un if ambiguo ya que esta ahi pero no cumple ninguna condicion.

la mejor forma de solucionarlo es poniendo las llaves adecuadas para que comience a cumplir las condiciones establecidas.

 

Operador condicional

El operador condicional, también conocido como operador ternario permite realizar evaluaciones condicionales de forma compacta en una sola línea.

Es importante aprenderlo ya que nos puede ser de mucha ayuda al momento del codigo, por ende su sintaxis es la siguiente.

      • expresion_condicional ? expresion_verdadera : expresion_falsa;

Cabe mencionar que esta sintaxis  evalua la “expresion_condicional”, si esta es verdadera(diferente de 0) se evalua y devuelve “expresion_verdadera”. En caso contraria devuelve “expresion_falsa”.

En el caso de anidamiento, es muy sencillo, ya que solo sigue las mismas reglas de sintaxis solo que van uno detras del otro. un ejemplo:

                           

Donde tenemos la variable entero que es solicitada al usuario y en el condicional seguimos con los dos puntos cuando queremos anidar o agregar mas condicionales en la misma linea.

Esto no es muy visto a menudo, ya que para eso literalmente está la sentencia if-else o si quieres especificar mas el switch-case

 

Podemos observar que sigue siendo una condional, como un if normal, simplemente que alojado en una sola linea.

Donde el codigo funciona solicitando datos al usuario un numero entero, y mediante la estructura podemos realizar una condicion sencilla, donde si el entero cumple la condicion arrojar “el numero es par” y si no arrojar “el numero es impar”.

Funciona gracias a WordPress Inspiro WordPress Theme por WPZOOM