馃挬

programierds

Volver a C
Lecci贸n 6 de 16

En programaci贸n, muchas veces necesitamos que el programa tome decisiones dependiendo de ciertas condiciones.

Por ejemplo:

  • Si el usuario es mayor de edad, permitir acceso.
  • Si la temperatura es muy alta, encender un ventilador.
  • Si un n煤mero es positivo o negativo, mostrar un mensaje diferente.

Para esto se utilizan las estructuras de decisi贸n.

Las estructuras de decisi贸n permiten que el programa elija qu茅 instrucciones ejecutar seg煤n una condici贸n.

En el lenguaje C, las estructuras de decisi贸n m谩s comunes son:

  • if
  • if - else
  • if anidados
  • switch
  • switch con estructuras adicionales

驴Qu茅 es una condici贸n?

Una condici贸n es una expresi贸n que puede ser:

  • verdadera (true)
  • falsa (false)

En C, las condiciones generalmente utilizan operadores relacionales.

Ejemplos:

OperadorSignificado
>mayor que
<menor que
>=mayor o igual
<=menor o igual
==igual
!=diferente

Ejemplo de condici贸n:

edad >= 18

Esto significa:

驴La edad es mayor o igual a 18?


Estructura if

La estructura if permite ejecutar un bloque de c贸digo solo si la condici贸n es verdadera.

Sintaxis

if (condicion) {
    instrucciones;
}

Ejemplo simple

#include <stdio.h>

int main() {

    int edad = 20;

    if (edad >= 18) {
        printf("Eres mayor de edad\n");
    }

    return 0;
}

Explicaci贸n

  1. Se declara la variable edad.
  2. El if verifica la condici贸n edad >= 18.
  3. Como la condici贸n es verdadera, el mensaje se imprime.

Si la condici贸n fuera falsa, no pasar铆a nada.


Estructura if - else

Muchas veces necesitamos ejecutar una acci贸n si la condici贸n es verdadera y otra si es falsa.

Para esto se utiliza else.

Sintaxis

if (condicion) {
    instrucciones_si_verdadero;
}
else {
    instrucciones_si_falso;
}

Ejemplo

#include <stdio.h>

int main() {

    int numero = 5;

    if (numero % 2 == 0) {
        printf("El numero es par\n");
    }
    else {
        printf("El numero es impar\n");
    }

    return 0;
}

Explicaci贸n

El operador % calcula el resto de una divisi贸n.

Si el resto al dividir entre 2 es 0, el n煤mero es par.


Estructuras if anidados

Un if anidado ocurre cuando un if est谩 dentro de otro if.

Esto permite evaluar varias condiciones paso a paso.

Sintaxis

if (condicion1) {

    if (condicion2) {
        instrucciones;
    }

}

Ejemplo

Determinar si un n煤mero es positivo, negativo o cero.

#include <stdio.h>

int main() {

    int numero = 10;

    if (numero >= 0) {

        if (numero == 0) {
            printf("El numero es cero\n");
        }
        else {
            printf("El numero es positivo\n");
        }

    }
    else {
        printf("El numero es negativo\n");
    }

    return 0;
}

Explicaci贸n

  1. Primero se verifica si el n煤mero es mayor o igual a 0.
  2. Si lo es, se revisa si es exactamente 0.
  3. Si no es 0, entonces es positivo.
  4. Si el primer if es falso, el n煤mero es negativo.

Estructura switch

La estructura switch se utiliza cuando hay muchas opciones posibles basadas en el valor de una variable.

Es especialmente 煤til cuando se comparan valores espec铆ficos.

Sintaxis

switch(variable) {

    case valor1:
        instrucciones;
        break;

    case valor2:
        instrucciones;
        break;

    default:
        instrucciones;

}

El break evita que el programa contin煤e ejecutando los siguientes casos.


Ejemplo

Programa que muestra el d铆a de la semana.

#include <stdio.h>

int main() {

    int dia = 3;

    switch(dia) {

        case 1:
            printf("Lunes\n");
            break;

        case 2:
            printf("Martes\n");
            break;

        case 3:
            printf("Miercoles\n");
            break;

        case 4:
            printf("Jueves\n");
            break;

        case 5:
            printf("Viernes\n");
            break;

        default:
            printf("Dia no valido\n");
    }

    return 0;
}

Explicaci贸n

Si dia vale 3, el programa ejecuta:

case 3:
    printf("Miercoles");

switch con m煤ltiples casos

A veces varios valores deben producir el mismo resultado.

Ejemplo: identificar si un d铆a es fin de semana.

#include <stdio.h>

int main() {

    int dia = 6;

    switch(dia) {

        case 6:
        case 7:
            printf("Es fin de semana\n");
            break;

        default:
            printf("Es un dia de semana\n");
    }

    return 0;
}

Si dia es 6 o 7, se ejecuta la misma instrucci贸n.


switch combinado con if

Dentro de un switch tambi茅n pueden utilizarse estructuras if.

Esto permite tomar decisiones m谩s complejas.

Ejemplo

#include <stdio.h>

int main() {

    int opcion = 1;
    int edad = 16;

    switch(opcion) {

        case 1:

            if (edad >= 18) {
                printf("Puedes entrar al evento\n");
            }
            else {
                printf("No tienes la edad suficiente\n");
            }

            break;

        case 2:
            printf("Opcion de informacion\n");
            break;

        default:
            printf("Opcion no valida\n");
    }

    return 0;
}

Comparaci贸n entre if y switch

EstructuraCu谩ndo usarla
ifCuando se comparan condiciones complejas
if - elseCuando hay dos posibles resultados
if anidadosCuando hay varias decisiones dependientes
switchCuando se comparan muchos valores espec铆ficos

Errores comunes en principiantes

1. Usar = en lugar de ==

Incorrecto:

if (numero = 5)

Correcto:

if (numero == 5)

2. Olvidar el break en switch

Si se olvida el break, el programa continuar谩 ejecutando los siguientes casos.


Importancia de las estructuras de decisi贸n

Las estructuras de decisi贸n permiten que los programas:

  • reaccionen a la entrada del usuario
  • controlen el flujo del programa
  • implementen l贸gica en algoritmos
  • resuelvan problemas del mundo real

Sin estructuras de decisi贸n, los programas ejecutar铆an siempre las mismas instrucciones, sin importar las condiciones.

Por eso, dominar if, if-else y switch es uno de los pasos m谩s importantes para aprender programaci贸n en C.