수색…


If-Else Statement

프로그래밍은 일반적으로 다른 입력 또는 조건에서 코드가 작동하는 방식을 설명하기 위해 코드 내의 decision 또는 branch 필요로합니다. C # 프로그래밍 언어 (및이 문제에 대한 대부분의 프로그래밍 언어) 내에서 프로그램 내에서 분기를 만드는 가장 단순하고 때로는 가장 유용한 방법은 If-Else 문을 사용하는 것입니다.

100까지의 점수를 나타내는 int 매개 변수를 취하는 메서드 (일명 함수)가 있다고 가정하고 메소드는 통과 또는 실패 여부를 나타내는 메시지를 출력합니다.

static void PrintPassOrFail(int score)
{
    if (score >= 50) // If score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If score is not greater or equal to 50
    {
        Console.WriteLine("Fail!");
    }
}

이 방법을 살펴보면 Ifscore >= 50 코드 줄 ( score >= 50 )이 나타날 수 있습니다. 이는 boolean 조건으로 볼 수 있습니다. 조건이 true 로 평가 if { } 사이에있는 코드가 실행됩니다.

예를 PrintPassOrFail(60); 메서드가 다음과 같이 호출 된 경우 PrintPassOrFail(60); , 메소드의 출력은 Pass!를 말하는 Console Print가됩니다 . 매개 변수 값 60은 50보다 크거나 같습니다.

그러나 메소드가 다음과 같이 호출 된 경우 PrintPassOrFail(30); , 메서드의 출력은 Fail! . 이는 값 30이 50보다 크거나 같지 않으므로 If 문 대신 else { } 사이의 코드가 실행되기 때문입니다.

이 예에서 우리는 점수 가 100 까지 올라야 한다고 말했지만 전혀 계산되지 않았습니다. 100을 넘지 않거나 0 이하로 떨어지는 점수 를 계산하려면 If-Else If-Else Statement 예를 참조하십시오.

If-Else If-Else Statement

If-Else Statement 예제에 이어 이제는 Else If 문을 소개 할 차례입니다. Else If 문은 If-Else If-Else 구조의 If 문 바로 뒤에 오지만 본질적으로 If 문과 비슷한 구문을가집니다. 간단한 If-Else 문이 수행 할 수있는 것보다 더 많은 분기를 코드에 추가하는 데 사용됩니다.

If-Else Statement 의 예제에서, 점수는 100까지 올라가도록 지정되었습니다. 그러나 이것에 대한 어떤 수표도 결코 없었다. 이 문제를 해결하려면 If-Else Statement 의 메소드를 다음과 같이 수정하십시오.

static void PrintPassOrFail(int score)
{
    if (score > 100) // If score is greater than 100
    {
        Console.WriteLine("Error: score is greater than 100!");
    }
    else if (score < 0) // Else If score is less than 0
    {
        Console.WriteLine("Error: score is less than 0!");
    }
    else if (score >= 50) // Else if score is greater or equal to 50
    {
        Console.WriteLine("Pass!");
    }
    else // If none above, then score must be between 0 and 49
    {
        Console.WriteLine("Fail!");
    }
}

이 모든 명령문은 조건이 충족 될 때까지 위에서 아래로 순서대로 실행됩니다. 이 새로운 메소드 업데이트에서 우리는 이제 두 개의 새로운 브랜치를 추가 하여 범위를 벗어나는 스코어를 수용했습니다.

예를 들어, 우리 코드에서 PrintPassOFail(110); 이라고 불렀다면 PrintPassOFail(110); , 출력은 Error : score가 100보다 큰 콘솔 프린트 가됩니다! ; PrintPassOrFail(-20); 과 같은 코드 PrintPassOrFail(-20); 메서드를 호출하면됩니다 PrintPassOrFail(-20); 출력은 Error : score가 0보다 작습니다. .

명령문 전환

switch 문을 사용하면 변수 목록에 대해 동등 함을 테스트 할 수 있습니다. 각 값을 대 / 소문자라고하며, 켜져있는 변수는 각 대문자로 확인됩니다.

switch 문은 종종 단일 변수에 대해 여러 가능한 값을 테스트 할 때 if...else if... else.. 문보다 간결하고 이해할 수 있습니다.

구문은 다음과 같습니다.

switch(expression) {
   case constant-expression:
      statement(s);
      break;
   case constant-expression:
      statement(s);
      break;
  
   // you can have any number of case statements
   default : // Optional
      statement(s);
      break;
}

switch 문을 사용하는 동안 고려해야 할 sevaral 것들이 있습니다.

  • switch 문에 사용 된 표현식은 정수형 또는 열거 형이거나 클래스가 정수 또는 열거 형 유형에 대한 단일 변환 함수를 갖는 클래스 유형이어야합니다.
  • 스위치 내에서 원하는 수의 case 문을 사용할 수 있습니다. 각 경우 다음에 비교할 값과 콜론이옵니다. 비교할 값은 각 switch 문 내에서 고유해야합니다.
  • switch 문은 선택적인 기본 경우를 가질 수 있습니다. 모든 경우가 사실이 아닐 때 작업을 수행하는 데 기본 경우를 사용할 수 있습니다.
  • 각 사례는 빈 문장이 아닌 한 break 문으로 끝나야합니다. 이 경우 실행은 그 아래의 경우 계속됩니다. break 문은 return , throw 또는 goto case 문이 사용될 때 생략 될 수도 있습니다.

예를 들면 현명한 성적을 부여 할 수 있습니다.

char grade = 'B';

switch (grade)
{
    case 'A':
        Console.WriteLine("Excellent!");
        break;
    case 'B':
    case 'C':
        Console.WriteLine("Well done");
        break;
    case 'D':
        Console.WriteLine("You passed");
        break;
    case 'F':
        Console.WriteLine("Better try again");
        break;
    default:
        Console.WriteLine("Invalid grade");
        break;
}

명령문 조건이 표준 불린 식과 값인 경우

다음 진술

if (conditionA && conditionB && conditionC) //...

~와 정확히 같다.

bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...

즉, "if"문 내부의 조건은 보통 부울 식을 형성합니다.

조건문을 작성할 때 흔히 범하는 실수는 truefalse 를 명시 적으로 비교하는 것 true .

if (conditionA == true && conditionB == false && conditionC == true) // ...

이것은 다음과 같이 재 작성 될 수있다.

if (conditionA && !conditionB && conditionC)


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow