Menu
Coddy logo textTech

Logica booleana complessa

Fa parte della sezione Logica e flusso del percorso C# di Coddy. Lezione 9 di 66.

La logica booleana può diventare complessa quando si combinano più condizioni. Comprendere la precedenza degli operatori e usare le parentesi aiuta a scrivere espressioni chiare e corrette.

L'ordine di precedenza degli operatori booleani in C# è:

  1. NOT (!)
  2. AND (&&)
  3. OR (||)

Ecco un esempio di espressione booleana complessa:

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

Usa le leggi di De Morgan per semplificare le negazioni complesse:

// Invece di:
if (!(age >= 18 && score > 70))
{
    // Questo equivale a:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

Valutazione con cortocircuito: con && e ||, C# valuta solo ciò che è necessario:

// Se user è null, C# non valuterà la seconda condizione
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

Usa parentesi esplicite per maggiore chiarezza, anche quando non sono strettamente necessarie:

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

Sfida

Medio

Crea un metodo chiamato determineAccess che determina se un utente ha accesso a un sistema in base alle seguenti regole:

  1. Accetta cinque parametri:
    • isAdmin (bool): indica se l'utente è un amministratore
    • isLoggedIn (bool): indica se l'utente ha effettuato l'accesso
    • timeOfDay (int): l'ora corrente (0-23)
    • isMaintenanceMode (bool): indica se il sistema è in modalità di manutenzione
    • hasEmergencyAccess (bool): indica se l'utente dispone dell'accesso di emergenza
  2. Restituisce vero quando ANY di queste condizioni è vera:
    • L'utente è un amministratore E ha effettuato l'accesso
    • L'ora è compresa nell'orario lavorativo (9-17 inclusi) E l'utente ha effettuato l'accesso E il sistema NON è in modalità di manutenzione
    • L'utente dispone dell'accesso di emergenza

Provalo tu

public class DetermineAccess
{
    // Implementa il metodo determineAccess
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // Scrivi il tuo codice qui
        
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore C# online