05 실행 흐름 제어하기 (선택문)

김민영·2023년 1월 3일
0

C# 기초 프로그래밍

목록 보기
5/18

📬 선택문이란

1. 목적

: 특정 조건을 만족할 때 실행할 코드를 지정하여 실행 흐름의 분기점을 만들기 위해 사용


📬 조건을 판단하기 위하여

1. 진리값

1) 명제의 내용이 참인지 거짓인지 나타내는 값
2) 데이터의 참, 거짓 판단은 비트에 달려있음

  • 저장된 비트가 모두 0인 경우 거짓
  • 그 외의 값은 모두 참

3) 타입별 거짓인 값 (이외의 값은 모두 참)

  • int: 0
  • float: 0.0
  • string: null
  • bool: false

2. 불리언 타입 (bool)

: 참(true)과 거짓(false)이라는 데이터를 저장하는 타입

3. 논리연산자

1) not 연산자

  • !
  • true를 false로, false를 true로 전환

2) or 연산자

  • |, ||
  • 양쪽 항 중 하나만 true이면 true

3) and 연산자

  • &, &&
  • 양쪽 항 모두 true일 때만 true

4) xor 연산자

  • ^
  • 양쪽 항이 같으면 false, 다르면 true

4. 단축평가

1) 논리 and와 or 연산 시 앞 항만 평가해도 진리값을 판별할 수 있는 경우 뒤쪽 항의 평가를 진행하지 않는 것

A && B
A와 B 두 피연산자가 모두 true일 때만 true를 반환합니다.
따라서 A (앞 항)이 false일 경우, B를 평가하지 않고 false를 반환합니다.

A || B
A와 B 두 피연산자 중 하나만 true여도 true를 반환합니다.
따라서 A (앞 항)이 true일 경우, B를 평가하지 않고 true를 반환합니다.

2) 단축평가에 유의하여 더 효율적인 코드를 작성할 수 있음

5. 드모르간의 법칙

1) not (A or B) == not A and not B
2) 드모르간 법칙을 이용해 가독성 좋은 코드를 작성할 수 있음

만약 로그인 성공 조건이

isValidID == true && isValidPassword == true && isBrowserLatestVersion == true

라면 로그인이 실패하는 조건에 대한 코드를 작성하기 위해 아래와 같은 방법을 사용할 수 있다.

!(isValidID && isValidPassword && isBrowserLatestVersion)

이 조건에 대한 가독성을 높이기 위해 드모르간의 법칙을 이용한다면

!isValidId || !isValidPassword || !isBrowserLatestVersion

과 같이 작성할 수 있다.

6. 비교 연산자

1) == : 좌우 항이 같은지 비교
2) != : 좌우 항이 다른지 비교



📬 실행 흐름 제어 방법

1. if문

if(판정할 조건)
{
	// 조건이 true일 때 실행할 코드
}
else
{
	// 조건이 false일 때 실행할 코드
}

1) 특정 조건일 경우에만 실행할 코드를 작성할 수 있음
2) else절은 필수가 아니므로 생략할 수 있음
3) 다른 조건을 추가할 경우 else if 절을 작성할 수 있음

if(판정할 조건 1)
{
	// 조건1이 true일 때 실행할 코드
}
else if(판정할 조건2)
{
	// 조건1이 false이고 조건2가 true일 때 실행할 코드
}
else
{
	// 두 조건이 모두 false일 때 실행할 코드
}
  • else if절이 있는 경우 다음과 같이 코드가 실행된다.
  • if의 조건 검사 → false일 경우 else if의 조건 검사 → 아닐 경우 else로 이동

2. switch문

switch(평가할 식)
{
	case 1:
    	// 평가한 식이 1일 때 실행할 코드
        break;
    case 2:
    	// 평가한 식이 2일 때 실행할 코드
        break;
    case n:
    	goto case 1;
    default:
    	// 위의 모든 case에 해당하지 않을 때 실행할 코드
        break;
 }

1) 해당하는 case를 만나면, break;를 만날 때까지 해당하는 코드를 실행

  • 즉, 만약 break;를 알맞게 작성하지 않으면 그 case의 아래에 작성된 모든 switch문 속 코드가 실행됨

  • fall-thorough: break;를 의도적으로 작성하지 않고 작성하는 기법

    case 'a': case 'i': case 'e': case 'o': case 'u':
    	Console.WriteLine("모음이다.");
       break;
  • 위와 같이 여러 case 중 하나라도 만족하는 경우 실행하고 싶은 코드가 있을 때 활용할 수 있음

    3) goto: 특정 case로 실행 흐름을 옮김
    4) default

  • 어떤 case에도 해당하지 않고, switch문의 가장 아래로 내려왔을 때 실행

  • 보통 예외처리에 사용


3. 삼항연산자

조건식 ? 조건식이 참일 때 실행할 코드 : 조건식이 거짓일 때 실행할 코드;

  • 단점: 조건이 길어질 경우 가독성이 좋지 않다

0개의 댓글