Menu
Coddy logo textTech

Complex Boolean Logic

Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 9번째.

여러 조건을 결합할 때 불리언 논리가 복잡해질 수 있습니다. 연산자 우선순위를 이해하고 괄호를 사용하면 명확하고 올바른 표현식을 작성하는 데 도움이 됩니다.

C#의 불린 연산자의 우선순위 순서는:

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

다음은 복잡한 불린 표현식의 예입니다:

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

드모건의 법칙을 사용하여 복잡한 부정을 단순화하세요:

// Instead of:
if (!(age >= 18 && score > 70))
{
    // This is equivalent to:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

단락 평가: && 및 ||를 사용하면 C#은 필요한 부분만 평가합니다:

// If user is null, C# won't evaluate the second condition
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

명확성을 위해 엄격히 요구되지 않더라도 명시적인 괄호를 사용하세요:

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

챌린지

중급

determineAccess라는 메서드를 생성하세요. 이 메서드는 다음 규칙에 따라 사용자가 시스템에 액세스할 수 있는지 결정합니다:

  1. 다섯 개의 매개변수를 받습니다:
    • isAdmin (bool): 사용자가 관리자인지 여부
    • isLoggedIn (bool): 사용자가 현재 로그인되어 있는지 여부
    • timeOfDay (int): 현재 시간 (0-23)
    • isMaintenanceMode (bool): 시스템이 유지보수 모드인지 여부
    • hasEmergencyAccess (bool): 사용자가 비상 액세스 권한이 있는지 여부
  2. 다음 조건들 중 어느 하나라도 참이면 true를 반환합니다:
    • 사용자가 관리자이고 로그인되어 있는 경우
    • 시간이 업무 시간(9-17 포함)이고 사용자가 로그인되어 있고 시스템이 유지보수 모드가 아닌 경우
    • 사용자가 비상 액세스를 가진 경우

치트 시트

C#에서 불리언 연산자 우선순위 (높은 순서부터 낮은 순서까지):

  1. 부정 (!)
  2. 그리고 (&&)
  3. 또는 (||)

복잡한 불리언 표현식:

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

부정의 단순화를 위한 드 모르간 법칙:

// 다음과 같이 하는 대신:
if (!(age >= 18 && score > 70))
{
    // 이것은 다음과 동일합니다:
    if (age < 18 || score <= 70)
    {
        Console.WriteLine("Not eligible");
    }
}

쇼트 서킷 평가(short-circuit evaluation)는 필요한 것만 평가하여 오류를 방지합니다:

// user가 null인 경우, C#은 두 번째 조건을 평가하지 않습니다
if (user != null && user.IsActive)
{
    Console.WriteLine("Active user");
}

명확성을 위해 명시적 괄호를 사용하세요:

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

직접 해보기

public class DetermineAccess
{
    // determineAccess 메서드를 구현하세요
    public static bool determineAccess(bool isAdmin, bool isLoggedIn, int timeOfDay, bool isMaintenanceMode, bool hasEmergencyAccess)
    {
        // 여기에 코드를 작성하세요
        
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 및 흐름의 모든 레슨