안녕하세요! 코딩하는 경제학도 쏘코입니다.
이번에는 각종 조건문들에 대해서 알아보도록 하겠습니다.
목차
0. bool
Bool은 0과 1로 구성된 아주 단순한 타입입니다.
0과 1이라고 했는데, 둘로 나눌 수 있으면 모두 해당될 수 있습니다.
ex) true/false, 0/1, 0/나머지 정수 등등
bool의 연산자는 아래와 같습니다.
- == (같은지)
- < (적은지)
- > (큰지)
- <= (적거나 같은지)
- >= (크거나 같은지)
- != (같지 않은지)
연산자를 이용하여 다양한 결과값을 만들어낼 수 있습니다.
- 10 < 20 (True)
- 10 >= 20 (False)
- x == 10
- x != y
- x+2 < y/10
bool을 계산하기 위해 논리 연산자를 사용할 수 있습니다.
- && (AND)
- || (OR)
- ! (NOT)
논리 연산자들의 우선순위는 ! > && > || 입니다.
특히 AND가 OR보다 우선순위가 높다는 사실은 헷갈리기 쉬우니 꼭 알아두시면 좋습니다!
전체 연산자 우선순위는 아래와 같습니다.
1. if/else
if는 뒤에 조건문이 붙어서 조건문의 조건이 성립한다면 { } 안의 요소들이 작동하게 됩니다.
if문의 사용법은 if 뒤에 () 안에 조건문이 들어가게 되고, { } 안에 명령문이 들어가게 됩니다.
아래는 if문의 예시입니다.
나눠지는 수(dividend)와 나누는 수(divisor)를 받아서 계산을 진행합니다.
만약 나누는 수(divisor)가 0이 아니라면 정상적으로 출력되고, 0이라면 출력이 되지 않습니다.
if문의 중괄호부분은 한 줄일 경우 생략할 수 있습니다.
만약 if문의 명령문에 여러 줄의 문장을 넣고 싶다면 반드시 { } 안에 넣어줘야 합니다.
아래 예시에서는 quotient라는 변수를 만들어서 그 곳에 나눈 값을 넣어주는 문장이 들어갔습니다.
총 문장이 2개이기 때문에 반드시 { } 안에 넣어야만 코드가 정상적으로 돌아갑니다.
컴파일러는 만약 { }를 빼먹는다면 if문의 명령문을 한 줄만 읽습니다.
이번에는 else입니다.
만약 if의 조건문에 걸리지 않는 경우에도 무언가 명령문을 실행시키고 싶다면 else를 사용할 수 있습니다.
사용법은 if와 같지만, if에 걸린 조건문을 제외한 모든 경우이기 때문에 따로 ( ) 안에 조건을 적을 필요가 없습니다.
원하는 명령문만 else 뒤에 넣어줍니다.
만약 두 줄 이상이라면 { } 안에 넣어줍니다.
2. 중첩된 if/else if
만약 조건문을 여러 번 걸어주고 싶다면 어떻게 하면 될까요?
if로 만든 조건문 안에 다시 if를 사용할 수 있습니다.
이것을 if 중첩문(nested if)이라고 부릅니다.
아래 예시에서는 값을 받아서 그 값이 0을 넘으면 if의 명령문을 실행시키고, 그 중에서도 10을 넘지 않으면 값이 acceptable하다고 출력합니다. 10을 넘는다면 large를 출력하겠죠?
첫 조건에서 만족하지 못하는 음수를 값으로 받았따면 바로 마지막 else문으로 넘어가서 small을 출력합니다.
잘 보시면 블럭에 맞춰서 들여쓰기가 되어있습니다.
필수는 아니지만 가독성에 굉장한 도움이 되기 때문에 되도록이면 블럭별로 들여쓰기를 해 주도록 합시다.
if/else를 여러번 사용해도 되지만, else if를 사용할 수도 있습니다.
else if는 if문에 걸리지 않았다면 다시 조건을 걸어주고, 조건에 걸리면 명령문을 실행시킵니다.
아래는 else if의 예시입니다. 0보다 작지 않고, 0이 아니고, 1이 아니고 2이기 때문에 two가 출력됩니다.
조건을 4번 확인하고 출력하죠?
else if를 쓰지 않으면 아래와 같이 중첩된 if문을 여러 번 써야 합니다. else if가 훨씬 보기 좋죠?
3. switch
switch문은 if/else구문을 더욱 깔끔하고 효율적으로 돌리기 위해서 사용합니다. (이 말은 모든 switch문은 if/else문으로 만들 수 있다는 말과 같습니다)
switch문의 형식은 switch ( ) { }인데, ( ) 안에는 보통 key값이 들어가게 됩니다.
이 key값의 각종 경우의 수들을 case 옆에 적고 콜론(:)을 붙이고 아랫쪽에 명령문을 작성하는 것이죠.
case에 만족하는 부분부터 명령문이 돌아갑니다. 이 과정에서 key에 맞는 case의 아래에 있는 다른 case문의 명령문도 순서대로 다 돌아가게 됩니다.
명령문이 한번 실행되기 시작하면 switch가 끝나거나, return문이 발생하거나, goto가 등장하거나, break가 등장하거나, exit()이나 예외 등을 통해 프로그램이 정상적으로 돌아갈 수 없는 경우를 제외하고 계속 실행됩니다.
즉 조건문과 똑같이 사용하기 위해서는 break;를 붙여주면 되겠죠?
만약 모든 케이스에 맞지 않는 경우에 실행할 요소가 있다면 default: 아래에 명령문을 적어주면 됩니다.
다만 이 경우에도 break;가 걸려있지 않다면 case를 만족한 경우 쭉 아래로 내려와서 default까지 모두 실행합니다.
아래 예시는 P/p를 입력하면 P를 입력했다고 출력하고 프로그램을 종료하고, Q/q를 입력하면 그대로 프로그램을 종료하는 프로그램입니다.
P/p case에 걸려있는 명령문을 실행할 때 출력 후 break;를 걸어줬고, Q/q case에 걸려있는 명령문을 실행할 때는 done을 true로 바꾼 후 break;를 걸어줬습니다.
오늘은 조건문에 대해서 알아봤습니다.
프로그램의 가장 기본이 되는 문법이기 때문에 꼭 알아두시면 좋을 것 같습니다!
그렇다면 다음 포스팅에서는 반복문으로 돌아오도록 하겠습니다!
읽어주셔서 감사합니다 :)
최근댓글