Menu
Coddy logo textTech

Lógica booleana compleja

Parte de la sección Lógica y Flujo del Journey de C# de Coddy. Lección 9 de 66.

La lógica booleana puede volverse compleja al combinar múltiples condiciones. Comprender la precedencia de operadores y usar paréntesis ayuda a escribir expresiones claras y correctas.

El orden de precedencia para los operadores booleanos en C# es:

  1. NO (!)
  2. Y (&&)
  3. O (||)

Aquí hay un ejemplo de una expresión booleana compleja:

bool isValid = age >= 18 && (score > 70 || hasPriorExperience) && !isBlacklisted;

Utiliza las Leyes de De Morgan para simplificar negaciones complejas:

// En lugar de:
if (!(age >= 18 && score > 70))
{
    // Esto es equivalente a:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

Evaluación de cortocircuito: Con && y ||, C# evalúa solo lo necesario:

// Si user es null, C# no evaluará la segunda condición
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Usa paréntesis explícitos para mayor claridad, incluso cuando no sean estrictamente necesarios:

bool result = (isWeekend || isHoliday) && (hour > 10 && hour < 20);
challenge icon

Desafío

Intermedio

Crea un método llamado determineAccess que determine si un usuario tiene acceso a un sistema según estas reglas:

  1. Acepta cinco parámetros:
    • isAdmin (bool): Indica si el usuario es administrador
    • isLoggedIn (bool): Indica si el usuario ha iniciado sesión actualmente
    • timeOfDay (int): La hora actual (0-23)
    • isMaintenanceMode (bool): Indica si el sistema está en modo de mantenimiento
    • hasEmergencyAccess (bool): Indica si el usuario tiene acceso de emergencia
  2. Devuelve true cuando ANY de estas condiciones sea verdadera:
    • El usuario es administrador AND ha iniciado sesión
    • La hora está dentro del horario laboral (de 9 a 17 inclusive) AND el usuario ha iniciado sesión AND el sistema NO está en modo de mantenimiento
    • El usuario tiene acceso de emergencia

Pruébalo tú mismo

public class DetermineAccess
{
    // Implementa el método determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Escribe tu código aquí
        
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C# online