본문으로 바로가기

이번엔 제어문의 조건문에 대해서 포스팅 해보도록 하겠습니다.

 

컴퓨터 프로그램은 명령어가 서술된 순서에 따라 무조건 위에서 아래로 실행되는데,

조건을 지정해서 진행 순서를 변경할 수 있다.

이렇게 프로그램의 순서를 변경할 때 사용하는 명령문을 제어문이라고 한다.

if 문, switch~case, for문, while 문, break, continue, goto 문 등이 있다.

 

1) 조건문  [ if,  if else,  switch~case]

 

2) 반복문 [ for, while, do while ]

 

3) 점프문 [ break, continue, goto, return ]

 

1) 조건문 

if문은 조건식의 결과에 따라 중괄호 { } 로 묶어놓은 블록의 실행여부가 결정되는 조건문이다.

 

조건문을 정의하자면 조건에 따라 문장(각각의 조건에 해당되는)을 실행하는 문장이라고 할 수 있다.

 

1. 단일 if 문 : 한 가지 조건을 주고 그 조건에 맞을 때만 조건문 내부의 코드를 수행한다.

 

2. if ~ else 문 : 한 가지 조건을 주고 그 조건에 맞지 않을 때 수행해야 할 코드까지 작성한다.

(보통 둘 중 하나의 코드를 수행할 때 사용한다.)

 

3. 다중 if문 : 연관된 여러 조건을 비교할 때 사용한다.

    

 

조건식에는 True 또는 False 값을 산출할 수 있는 연산식이나 boolean 변수가 올 수 있다.

 

boolean 타입이란?

- 간단히 bool 타입이라고도 한다.

한국말로는 논리 자료형이라고 하는 이 타입은 참(True) 또는 거짓(False)을 나타내는 자료형이다.

 

-bool 타입 사용법 

  - stdbool.h 헤더 파일을 include 한다.

  - bool, true, false 모두 예약어처럼 사용한다.

 

 #include <stdio.h>
 #include <stdbool.h>
 
int main()
{
 
  bool b1 = true;
 
  if (b1 == true)
    printf("참\n");
  else
    printf("거짓\n");
 
  return 0;
}

결괏값 : 참
cs

 

#include로 stdbool.h 헤더 파일을 포함한 뒤 자료형 bool과 값 true, flase를 사용하면 된다.

여기서는 변수 b1에 true를 할당하였고,  if 조건문으로 b1이 true인지 비교하였다.

물론 같은 true 이므로 "참"이 출력된다.

 

4. switch ~case 문 : if문은 조건이 참과 거짓인 경우의 두 가지만 판별하여 제어를 이동해야 하므로

   분기할 문장이 여러 곳이면 중첩 if를 여러 번 사용하는 불편함이 있었다.

   switch 문을 사용하면 분기할 곳이 여러 곳이여도 간단하게 처리할 수 있다.

 

if문 예제

1) 숫자가 짝수인지 홀수인지 판별하는 프로그램 작성 (순서도 포함)

 

 #include <stdio.h>
 
int main(){
  
  int num1;
  scanf("%d"&num1);
 
  if ( num1 % 2 == 0 )
    printf("짝수입니다.\n");
  else
    printf("홀수입니다.\n");
}
 
 
cs

 

 

2) 1~10까지의 숫자 중에서 짝수의 합과 홀수의 합을 각각 구하는 프로그램 작성 (순서도 포함)

( if문과 for문 사용)

 #include <stdio.h>
 
int main(){
  
  int a = 10, even = 0, odd = 0;
 
  for (int i = 1; i <= a; ++i)
  {
    if (i % 2 == 0)
      even += i;
 
    else
      odd += i;
  }
  printf("%d, %d\n", even, odd);
}
cs

 

3) 사용자가 두 수를 입력했을 때 큰 값이 출력되는 프로그램 작성

 #include <stdio.h>
 
int main(){
  
  int num1, num2, max;
 
  scanf("%d %d"&num1, &num2);
 
  if ( num1 > num2 )
  max = num1;
 
  else
  max = num2;
 
  printf("두 값 중 큰 값은 %d 입니다.", max);
}
 
cs

4) 점수에 대한 학점을 출력하는 프로그램 작성 - 다중 if 문 사용

순서도를 그리기엔 힘들어서 넘어가기루..

 

 #include <stdio.h>
 
int main(){
  
  int jum;
 
  scanf("%d"&jum);
 
  if (jum > 100 || jum < 0)
    printf("잘못 입력하셨습니다.");
  
  else if (jum >= 90)
    printf("입력하신 점수는 'A' 등급 입니다.");
  
  else if (jum >= 80)
    printf("입력하신 점수는 'B' 등급 입니다.");
  
  else if (jum >= 70)
    printf("입력하신 점수는 'C' 등급 입니다.");
 
  else if (jum >= 60)
    printf("입력하신 점수는 'D' 등급 입니다.");
 
  else 
    printf("입력하신 점수는 'F' 등급 입니다.");
  
}
 
 
cs

 

5) if문을 사용하여 간단한 계산기 프로그램을 작성

 #include <stdio.h>
 
int main(){
  
  int num1, num2, hap;
  char sign;
 
  printf(" 사칙연산 계산기 입니다.\n");
  
  printf("첫 번째 값을 입력하세요. ==> ");
  scanf("%d"& num1);
 
  printf("(1)덧셈\n(2)뺄셈\n(3)곱셈\n(4)나눗셈\n번호를 입력해주세요.==>");
  scanf("%d"&sign);
 
  printf("두 번째 값을 입력하세요. ==>");
  scanf("%d"& num2);
 
  if (sign == 1){
    hap = num1 + num2;
    printf("%d + %d = %d\n", num1, num2, hap);
  }
  if (sign == 2){
    hap = num1 - num2;
    printf("%d - %d = %d\n", num1, num2, hap);
  }
  if (sign == 3){
    hap = num1 * num2;
    printf("%d * %d = %d\n", num1, num2, hap);
  }
  if (sign == 4){
    hap = num1 / num2;
    printf("%d / %d = %d\n", num1, num2, hap);
  }
}
 
cs

결과

 

switch ~ case 문

기본 형태는 이러하다.

 #include <stdio.h>
 
int main(){
  
  switch (식){
  
  case 1:
    실행할 문장1:
    break;
 
  case 2:
    실행할 문장2:
    break;
 
  case 3:
    실행할 문장3:
    break;
 
  default:
    실행할 문장4:
    break;
  }
}
cs

defualt는 if 문의 else 역할이라고 생각하면 된다.

 

 #include <stdio.h>
 
int main(){
  
  int Menu;
  
  printf("(1)소주\t\t(2)맥주\t\t(3)양주\t\t(4)와인\n");
  printf("원하는 주류를 선택하세요.\n");
  scanf("%d"&Menu); 
 
  switch (Menu)
  {
    case 1:
      printf("소주를 선택했습니다.\n");
      break;
 
    case 2:
      printf("맥주를 선택했습니다.\n");
      break;
 
    case 3:
      printf("양주를 선택했습니다.\n");
      break;
 
    case 4:
      printf("와인을 선택했습니다.\n");
      break;
 
    default:
      printf("메뉴판에 없는 번호입니다.\n");
      break;
  }
  return 0;
}
 
 
cs

break; 는 점프문을 포스팅할 때 다루어보겠다.

 

제어문의 조건문 끝