Prosto

if문(조건문) 이해, 예제 -C언어 본문

Programing/C Programing

if문(조건문) 이해, 예제 -C언어

Prosto 2016. 9. 10. 03:08

'IF - 만약... 이렇다면. 이렇게 처리하라.'

 

프로그래밍에서 IF문은 중요한 역활을 하고 있습니다.

이런 경우에는 이렇게, 또 저런 경우에는 저렇게... 여러 가지 조건에 따라 다른 결과를 보여줄 수 있도록 도와줍니다.

 

게임으로 예를 들면, 어느 게임 캐릭터가 점프를 할 수 있다고 해봅시다.

플레이어가 점프키를 누르면 공중으로 뛸 테고, 잠시 후면 중력을 받아 다시 땅으로 떨어질 것입니다.

그렇다면 기본적으로 이런 조건이 필요하겠네요.

 - 캐릭터가 점프 중이 아닌 상태(지면에 있음)이고.. 점프키를 누르면 공중으로 뛰어라.

이런 조건이 필요한 이유는 캐릭터가 점프 중일 때 다시 점프를 하면 땅을 박차고 뛰는 점프가 아니게 됩니다.

(별도로 이중점프가 아닌 일반 점프)

 

이렇듯 어떠한 경우에는 어떻게 처리를 해라. 라고 만들 수 있는 것이 if문 입니다.

 

if문의 기본적인 형태를 보면 아래와 같습니다.

if( 조건 ){

  //실행내용
}

 

->아까 그 게임 내용에서 설명한 조건은 이렇게 표현 되겠네요.

if( 캐릭터가 점프 중이 아니다(지면에 있는 상태다) ){

  캐릭터 점프 동작을 시작시킨다.
}

 

 

조건 부분에 원하는 조건을 입력하고, 그 조건이 맞다면 중괄호{  } 안의 내용들을 실행하게 됩니다.

(조건을 만족하지 않으면 실행 안 함)

 

 

예를 들면 어떠한 수를 보고 그 수가 10이상이면 출력을 하고

그렇지 않다면 출력을 하지 않는 프로그램이라면 아래와 같이 if문을 사용하면 됩니다.

 

int num=10;  //num변수를 10으로 초기화 선언.

if( num >= 10){  //num에 있는 숫자가 10 이상이면...

printf("num은 10이상으로 %d입니다.\n", num);

}

-실행결과-

 

그렇다면 num을 5로 초기화 한 다음 실행해보면 어떤 결과가 나올까요?

int num=5;  //num변수를 5로 초기화 선언.

if( num >= 10){  //num에 있는 숫자가 10 이상이면...

printf("num은 10이상으로 %d입니다.\n", num);

}

-실행결과-

 

이렇듯 if문 내의 조건이 만족하는 경우에만 실행하게 된다는 것을 확인할 수 있습니다.

 

그렇다면 조건에 만족하지 않을 때는 어떻게 처리할 수 있을까요?

그 때 필요한 게 else문입니다. else문은 if문과 함께 사용됩니다. if-else문이라고 할 수도 있죠.

else는 if내의 조건이 아니면... 이라는 뜻이 됩니다.

 

int num=5;  //num변수를 5로 초기화 선언.

if( num >= 10){  //num에 있는 숫자가 10 이상이면...

printf("num은 10이상으로 %d입니다.\n", num);

}

else {

printf("num은 10미만으로 %d입니다.\n", num);

}

여기서 else는 if내의 조건이 아니면 이라고 했으니

num이 10이상이 아니면 여기를 실행해라..라는 뜻으로 볼 수 있습니다.

-실행결과-

 

이렇게 하면 if와 else가 무엇인지 알 수 있습니다.

 

 

if와 else를 했으니 마지막으로 else if에 대하여 알아봅시다.

else if는 else(아니면)과 if(만약)가 함께 있는 형태입니다.

위치적으로는 if 다음, else 전에 위치하고 있다고 볼 수 있죠.

여러 조건들이 나열되어 있다면 이런 순으로도 있을 수 있겠습니다. [ if -> else if -> else if -> else ]

이렇게 사용하여 특정 상황에 맞는 조건이 나올 때까지 쭉 찾아볼 수 있는 것입니다.

 

int num=5;

if( num >= 10){

printf("num은 10이상으로 %d입니다.\n", num);

}

else if( num >= 5){

printf("num은 5이상 10미만으로 %d입니다.\n", num);

}

 

 

else {

printf("num은 10미만으로 %d입니다.\n", num);

}

여기서 else if는 if내의 조건이 아니면 다음으로 확인하다고 했으니

num이 10이상이 아니면 이 조건(num이 5이상)은 맞는지 확인하는 과정을 거치게 됩니다.

그 결과 조건에 맞으면 { }안의 내용인 printf("num은 5이상 10미만으로 %d입니다.\n", num);가 실행되는 것이죠.

(여기서 이 결과도 만족하지 않다면 마지막인 else가 실행되겠죠?)

 

1. num이 5일 때의 결과

-실행결과-

 

 

2. num이 3일 때의 결과

-실행결과-

 

 

연습문제를 통해 직접 해봐야겠죠?

몇 가지 문제를 드릴테니 공부하시는 분들은 한번씩 해보시길 바라겠습니다.

(각각의 완성 소스는 밑에 있으니 비교해보세요.)

 

문제 1. 사용자에게 세 과목의 점수를 입력받고, 그 세과목의 평균 점수가 80점 이상이면 '우수', 60점 이상이면 '통과', 그리고 두 조건 모두 만족하지 않으면(60점 미만) '낙제'라고 출력되는 프로그램을 만드시오.

(출력 결과 예)

 

문제 2. 사용자의 캐릭터 레벨을 입력받고 아래의 각 조건에 맞는 결과를 보여주세요.

조건(등급 표시)

1. 레벨이 10 미만이면 '초보자'

2. 레벨이 10이상, 20 미만이면 '중급자'

3. 레벨이 20이상, 35 미만이면 '고급자'

4. 레벨이 35이면 '최고레벨'

5. 레벨이 35를 초과하면 '알수없음'    ->    예외처리.

(출력 결과 예)

 

 

문제 3. 이번에는 문자를 비교해볼까요?

사용자에게 문자를 하나 입력받고(%c와 char 사용) 그 문자가 'A'이면 "안녕", 'B'이면 "학생", 'C'이면 "게임" 그리고 그 외에는 "???"를 출력하시오.

(출력 결과 예)

scanf_s를 사용하여 문자나 문자열을 입력받을 때는 마지막에 문자 수를 알려주어야 정상적으로 받을 수 있습니다.

예 : scanf_s("%c", &charVal, 1);

 

 

 

 

//완성 소스(주석도..) + 결과

-1번 문제

 

-2번 문제

 

-3번 문제

 

 

 

프로그래밍 작성 요령과 if문 이해에 도움이 되었다면 좋겠네요.

Comments