눈으로 하는 코딩이 아닌! 직접 타이핑하는 코딩은 실력 향상에 엄청난 도움이 됩니다.




안녕하세요! 정선생이예요. 오늘은 조건문에 대해서 알아볼거예요.


조건문에 들어가기에 앞서 조건이 무엇인지를 알아봐야겠죠?

조건은 Condition 이라고도 표현을 하구요.

보통 조건에 대한 결과값은 참(True)과 거짓(False)이 나와요.

조건이라는 것 자체는 비교를 한다고 생각하면 되겠죠? 같은지, 다른지, 이상인지, 이하인지, ... 등등

x ( ) y 에 대해서 ( ) 에는 다음과 같은 값들이 들어갈 수 있어요.(써드린게 끝은 아니고 더 있어요)

  1.     <        x가 y보다 작다

  2.     >        x가 y보다 크다

  3.    <=       x가 y보다 작거나 같다.

  4.    >=       x가 y보다 크거나 같다.

  5.     !=       x가 y랑 같지 않다.


이 외에도 몇 가지 더 있답니다. 그러나 이 게시글에서 다루지는 않을거라서 넘어가도록하죠!


조건에 대해서 이해를 하셨다면 조건문으로 넘어가보죠.


조건문의 종류에는 크게 두 가지가 있어요. if와 switch.

if는 만약~라면 이라는 뜻을 가지고 있어요. 사용법은 if(조건){ ... }이예요.

if(10<30) 이라고 작성이 되어있으면 10이 30 미만이면~ 인거겠죠?

조금 더 깊게 가볼까요

int x = 10;
if(x < 30){
    printf("x가 30 미만입니다.\n");
}

정수형 변수 x에 10을 대입해놓고 조건 비교를 하네요

x(현재 10)이 30보다 작습니까? 이 조건이 참(True)이라면 "    x가 30 미만입니다.    " 가 출력이 되겠죠?

조금 더 생각보면 이런 생각을 하게 되요. 조건이 거짓이 되면 30 이상이라는 출력 구문을 만들고 싶다..

이런 생각 들어야해요!!!! 

이럴 때 쓰이는 구문은 if ~ else 구문이예요.

if(조건) { ... }

else { ... }


if에서 쓰이는 else는 '그게 아니면'으로 해석하면 이해하기 쉬워져요

if(조건){ ...1 } // 만약 조건이 참이면 ...1 을 실행하고

else{ ...2 } // 그게 아니면 ...2 를 실행한다.


어때요? 쉽죠? ㅎㅎ


여기에서 또 추가가 될 수 있어요. if문의 최종판??

if(조건){ ...1 }

else if(조건){ ...2}

else{ ... }


어느정도 추리가 가능하시겠죠?!

if(조건) -> 만약 조건이 참이면 1을 실행하고

else if(조건2) -> 그게 아니면서 만약 조건2가 참이면 2를 실행하고

else -> 그것도 아니면 3을 실행한다.


else if(조건)는 여러개가 들어갈 수 있어요. if ~ else if ~ else if ~ ... ~ else ~


아래 코드를 보시고 이해하실 수 있으면 됩니다!!

int x = 10;
if(x < 30){
    printf("x가 30 미만입니다.\n");
}
else if(x < 20){
    printf("x가 20 미만입니다.\n");
}
else{
    printf("x가 30보다 크거나 같습니다.\n");
} 


다음으로 switch 문이 있어요

switch(?){
  case 1:
    ...
    break;
  case 2:
    ...
    break;
  case 3:
    ...
    break;
  ...
  default:
    ...
    break;
}

가 기본 구문이예요. 한 줄씩 해석해봅시다.

switch(?)

왜 ? 로 표시를 했냐면 여기에는 변수 하나가 들어가거든요. 문자형 변수(char)나 정수형 변수(int)가 대표적이예요. 이 외에는 넣어본 기억이 저는 없네요. :(

아까 if문의 예시에서의 변수 x를 넣는다고 가정하고 쭉 설명 드릴게요.

switch(x)가 되겠네요


결국 switch문은 x 변수를 사용해서 case에 맞게 실행을 하겠다. 라는 소리예요

case ?: ... break;

여기에서 사용한 ?는 조건이 들어가요. 보통은 단일 문자, 숫자예요.

일정 범위(<30)는 들어갈 수 없어요! case <30: 이 안된다는 얘기입니다! 문자열의 경우도 들어갈 수 없어요. case == "Jeong"; 도 안됩니다!

이어서 말씀드리면 변수 x가 1이면 case 1: ~ 을 실행하는거예요.


처음보는게 있네요? break;

이 명령어는 지금 하고 있는 블록구문( {, } )을 빠져나간다. 라는 뜻이예요.

[현재는 switch(){ ... break; ... } 이렇게 되어있죠? switch()블록에 쌓여있으니까 이 switch() 구문을 빠져나간다. 라는 소리가 되요.]



프로그램 진행 순서예요! 이해 되셨나요?! :)



자 그렇다면 다시 돌아와서

x가 3이면 case 3: 을 실행해요

case로 작성이 안되어있는 숫자는 default: 구문이 실행이되요. 

x가 4였다면 default로 이동을 하는거죠.

default는 모든 case를 작성하고 맨 마지막에 작성해요. 프로그램의 진행 순서는 순차처리 방식이라고해서 위에서 아래로 이동을 합니다.

그래서 default case에서는 break; 를 생략해도 된답니다! :) default가 마지막에 써있기 때문이예요.



조건문에 대한 설명은 여기서 마치도록 할게요. 다음의 문제를 한 번 풀어보세요~!


 문제 :

정선생은 현재 3과목 점수의 평균을 이용하여 등급을 확인해보고 싶어한다. 다음의 프로그램을 작성하라.

평균이 90점 이상이면 "A", 80점 이상이면 "B", 70점 이상이면 "C", 그 외에는 "F"로 작성한다.


 입력 :

C언어 점수는? 90

JAVA 점수는? 70

HTML 점수는? 90


 출력 :

평균 점수는 83입니다.

따라서 등급은 B입니다.


쌤요!!!! 평균은 실수형인데 어떻게 할까요? 

=> 정수형으로 출력하시면 됩니다. 실수형 타입을 설정 안하셔도 되요. ^^ 데이터 타입에 집중하라는 문제가 아니예요!!!


예시는 다음과 같아요


 문제 :

키보드로 하나의 소문자를 입력 받아서 다음과 같은 출력을 할 수 있도록 한다.

a를 입력하였을 경우 apple, b를 입력하였을 경우 banana, c를 입력하였다면 cherry, 그 외에는 Undefined 를 출력하라.

switch 문을 이용하여 작성한다.

 입력 :

 하나의 문자 입력 : c

 출력 : 

 c로 시작하는 과일 : cherry

 입력 : 

 하나의 문자 입력 : z

 출력 : 

 z로 시작하는 과일 : Undefined


문자 하나를 비교할때는 case 'a': 로 하면 됩니다.

if문에서도 마찬가지예요 if(x == 'a') 이렇게 조건을 걸면 x가 'a'이면~ 이 됩니다. :)





오늘 준비한 내용은 여기까지 입니다. 조건문.. 어떻게보면 쉽고 어떻게보면 어려운 부분이예요~ 조건문만 확실하게 이해하시면 다음에 나올 반복문, 함수 등등 쉽게 다가올겁니다. 화이팅입니다 여러분 ^^7





게시글을 보시다가 궁금한 내용, 이게 맞나? 하는 내용, 이건 틀렸어!하는 내용들은 과감하게 댓글 달아주시면 감사하겠습니다.


이론적인 내용에 대한 궁금증은 검색을 통해 궁금증을 해결하는 것이 좋아요!!

실습적인 내용에 대한 궁금증은 최대한 생각을 해보고 검색을 하는 것이 좋아요!!

'Programming > C' 카테고리의 다른 글

[C] 함수  (0) 2018.05.15
[C] 반복문  (0) 2018.05.06
[C] 변수와 형식지정자  (0) 2018.04.30
[C] 기본 입/출력  (0) 2018.04.24
[C] 기본 구조  (0) 2018.04.19

+ Recent posts