Saltar a contenido

Decisiones (if-else)

Vimos la estructura if básica, ahora conoceremos quien lo complementa, y este es el bloque else.

La estructura if-else (si - de lo contrario) o estructura de decision if-else.

if else

Estructura if-else

La sintaxis de la estructura if-else es la siguiente:

if (comparacion_a_true){
   // bloque "if" que se ejecutara si la companion resulta verdadera
}else{
   // bloque "else" que se ejecutara si la companion resulta verdadera
}

El anterior código que hicimos lo podemos mejorar con la siguiente modificación:

#include <stdio.h>

int main(){

    int edad = 18;

    if (edad >= 18){ // comparamos si la variable edad es mayor o igual a 18, en caso que sea verdadero se mostrara el texto
        printf("Eres mayor de edad");
    }else{ // comparamos la variable
        printf("Eres menor de edad");
    }
    return 0;
}

if-else anidados

if (comparacion_a_true){
   // bloque "if" que se ejecutara si la companion resulta verdadera
   if (comparacion_a_true){
   // bloque "if" que se ejecutara si la companion resulta verdadera
        if (comparacion_a_true){
        // bloque "if" que se ejecutara si la companion resulta verdadera
        }else{
        // bloque "else" que se ejecutara si la companion resulta verdadera
        }
    }else{
    // bloque "else" que se ejecutara si la companion resulta verdadera
    }
}else{
   // bloque "else" que se ejecutara si la companion resulta verdadera
   if (comparacion_a_true){
   // bloque "if" que se ejecutara si la companion resulta verdadera
    }else{
    // bloque "else" que se ejecutara si la companion resulta verdadera
    }
}
    if(comparacion_a_true){
        // bloque "if" que se ejecutara si la companion resulta verdadera de lo contrario va al siguiente
    }else if (comparacion_a_true){
        // bloque "if" que se ejecutara si la companion resulta verdadera de lo contrario va al siguiente
    }else if (comparacion_a_true){
        // bloque "if" que se ejecutara si la companion resulta verdadera de lo contrario va al siguiente
    }else if (comparacion_a_true){
        // bloque "if" que se ejecutara si la companion resulta verdadera de lo contrario va al siguiente
    }else{
        // en caso que no entro en ningún if previo entra y se ejecuta este código
    }

Ejercicios

Calculadora del Cuadrado:

  • opción 1) perímetro
  • opción 2) area
  • en caso que de otra opción indicar que "no existe la opción"
#include <stdio.h>

int main(void){

    float side = 0.0;
    int option = 0;
    printf("CALCULADORA DEL CUADRADO\n");
    printf("1) Area\n");
    printf("2) Perimetro\n");
    scanf("%d", &option);

    if (option == 1){
        printf("Area\n");
        printf("Dar el lado: ");
        scanf("%f", &side);
        printf("El area es %.2f\n", (side * side));
    }else if (option == 2){
        printf("Perimetro\n");
        printf("Dar el lado: ");
        scanf("%f", &side);
        printf("El perimetro es %.2f\n", (side * 4));
    }else{
        char* frase = "opcion no existe\n";
        printf("%s\n", frase);
    }
    return 0;
}
  • Solicitar un numero al usuario, e imprimir si el numero es "par" o "impar"
#include <stdio.h>

int main(void){

    int value = 0;
    printf("Dar un valor: ");
    scanf("%d", &value);

    if (value % 2 == 0){
        printf("Es par\n");
    }else{
        printf("Es Impar\n");
    }
    return 0;
}
  • Dar 2 números e indicar cual es el mayor de los 2, o sin son iguales
#include <stdio.h>

int main(void){

    int valor1 = 0;
    int valor2 = 0;
    printf("Dar un valor 1: ");
    scanf("%d", &valor1);

    printf("Dar un valor 2: ");
    scanf("%d", &valor2);

    if (valor1 > valor2){
        printf("%d es mayor que %d\n", valor1, valor2);
    }else if (valor1 < valor2){
        printf("%d es mayor que %d\n", valor1, valor2);
    }else{
        printf("%d es igual a %d\n", valor1, valor2);
    }
    return 0;
}

Ejercicios (if-else)

  • Solicitar un numero al usuario, e imprimir si el numero es "múltiplo de 3" o "NO múltiplo de 3".(Es decir, es divisible entre 3)
  • Calculadora de Ley de ohm. Dar las 4 opciones al usuario.
  • 1) Calcular Voltaje
  • 2) Calcular Corriente
  • 3) Calcular Resistencia
  • 4) Salir del programa
  • Si da una opción que no existe, debe indicarlo y terminar el programa
  • Calculo de resistencia en serie y paralelo, Se le dará lan opciones al usuario para elegir que desea calcular, es decir,
  • si paralelo o serie,
  • después solicita 3 valores e imprime el resultado.
  • Si da un opción no valida, no solicita nada y termina el programa
  • Ecuación se serie \(R_T = \Sigma_{i=1}^{n} R_{i}\)
  • Ecuación paralelo \(R_T= \frac{1}{\Sigma_{i=1}^{n}\frac{1}{R_i} }\)
  • Calcular el promedio final, solicita al usuario sus calificaciones parciales una a una, y al final da el mensaje "Aprobado", en caso que haya pasado arriba de 6 y "Estas en repite" si es menor.

Operadores lógicos

Un operador lógico sirve para combinar comparaciones y en función del resultado tomar una decisión, comprende de 3 operadores (hay mas pero no lo veremos aquí) que son AND, OR y NOT. Con todo ello para realizar varias validaciones y obtener un resultado booleano.

Las tablas de verdad de los operadores

AND (Y) -> (&&)

Entrada 1 Entrada 2 Salida
false false false
false true false
true false false
true true true

Regla

AND nos dice que mientras exista a la entrada un false, tendremos un valor false a la salida

OR (O) -> (||)

Entrada 1 Entrada 2 Salida
false false false
false true true
true false true
true true true

Regla

OR nos dice que mientras exista a la entrada un true, tendremos un valor true a la salida

NOT (NO) (Inverter) -> (!)

Entrada Salida
false true
true false

Regla

NOT nos dice que todo lo que recibe lo invierte.

Sintaxis con operadores lógicos

La forma en la que se escriben las comparaciones con operadores lógicos es:

Izquierda Centro Derecha
comparación operador lógico comparación
(a == b) && (x > y)
(5 == 8) && (9 > 4)
(a >= b) || (0 == 8)
(10 <= x) && (1 != -8)
(a <= 2) || (0 == 8)

En el caso de not aplica solo a una comparación:

Aplicación Resultado
!true false
!(3 == 3) false
!(6 >= 1) false
!(1 != 1) true
!(3 < 3) true

Se pueden concatenar (unir) n comparaciones con operadores lógicos, pero siempre se debe utilizar el operador para poder unir mas comparaciones, ejemplo:

(5 == 8) && (9 > 4) || (a >= b) || (0 == 8) && !(2 == 2)

Ejemplos de comparación

Descripción Resultado
(9 > 4) && (3 < 6) true
(8 == 3) ||``(2 != 3) true
!true false
(5 == 8) && (9 > 4) false
(0 >= -5) ||``(0 == 8) true
(10 <= 5) && (1 != -8) false
!(2 == 2) false

Ejemplos (operadores lógicos)

  • Solicitar un número de entre 0 al 20, si el número es menor a 10 Y par, indicar que el "número es par y menor a 10"; si es menor a 10, pero NO es par dar el mensaje "Número menor a 10", de lo contrario que indique que es mayor a 10.

Ejercicios (operadores lógicos)

  • Preguntar al usuario si le "gusta correr" y después si le "gusta nadar", si ambos casos responde que 1)si 2)no, mandar el mensaje de que "es muy fitness", de lo contrario "deberías hacer más ejercicio" (Operadores lógicos)
  • En una variable almacena la calificación, se debe verificar el valor de la calificación es valida; es decir, calificaciones arriaba de 10 Y abajo de 0, "no es posibles"; si la calificación es menor o igual a 10 Y mayor o igual a cero, debe indicar que es correcta la calificación.

Nota: No es la única forma en la que se pueden realizar estos ejemplos y ejercicios, recuerda que lo importante es resolver el problema, que hayan más o menos pasos, diferentes formulas, etc, no significa que este mal.