클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

선택문 1 - if문 본문

프로그래밍 언어/C 언어

선택문 1 - if문

huenuri 2024. 7. 30. 05:41

오늘 학습한 C 언어 프로그래밍 부분은 선택문이다. 조건문에는 선택문과 반복문이 있는데, 선택문은 if~else, switch문을 말한다.

프로그램은 연산 결과나 입력값이 따라 처리 방법을 바꿔야 할 때가 많으므로 조건에 따라 실행 문장을 선택할 수 있는 구문이 필요하다.

먼저 선택문으로 가장 많이 사용되는 if문을 살펴볼 것이다.

 

 

시작하기 전에

 

이전까지는 항상 차례대로 실행되는 프로그램을 다뤘다. 그런데 조건에 따라 실행되거나 실행되지 않을 때도 있는데 그때 필요한 것이 제어문이다.

 


 

 

 

 

1. if문의 기본 형식

전제인 조건식과 조건을 만족해야 수행되는 실행문으로 구성된다.

 

 

a가 10보다 클 때만 성립되는 조건문이다. 기본 if문은 조건식을 만족하지 않으면 실행문을 실행하고, 만족하지 않으면 실하지 않고 지나간다.

 

 

 

🌞 if문의 기본 형식

 
#include <stdio.h> 
int main(void) 
{ 
  int a = 20; 
  int b = 10; 
  
  if (a > 10) 
  { 
    b = a; 
  } 
  printf("a : %d, b : %d\n", a, b); 
  return 0; 
 }

 

 

알기 쉬운 코드를 위한 규칙

if문은 중괄호 {}를 사용하고 들여쓰기해 실행문을 명확히 구분하는 것이 좋다

실행할 문장이 두 문장 이상이면 반드시 중괄호로 묶어야 한다

 

 

실행문을 중괄호로 묶지 않으면 어떻게 될까? 첫문장만 if문의 조건식에 따라 실행되며 그 이후의 문장은 조건식과 관계없이 항상 실행된다.

 


 

 

 

2. if ~ else문

조건을 만족하지 못할 때 수행되는 실행문을 작성하려면 어떻게 해야 할까? if~else문을 쓰면 된다.

 

 

🌞 if ~ else문의 사용

 
#include <stdio.h> 
int main(void) 
{ 
  int a = 10; 
  if (a >= 0) { 
   a = 2; 
  } 
  else { 
  a = -2; 
  } 
  printf("a : %d\n", a); 
  return 0; 
 }

 

두 문장 중 하나만 실행되며, 반드시 하나는 실행되는 구조를 갖는다.

 

 

if ~ else문의 규칙

if ~ else문의 else에는 조건을 사용하지 않는다.

실행할 문장이 두 문장 이상이면 반드시 중괄호로 묶는다.

경우에 따라 if문을 두 번 사용하는 것보다 if ~ else문을 한 번 사용하는 것이 좋다.

 

if문을 두 번 사용하면 항상 조건식을 두 번 검사하므로 한 번 겅사할 때보다 실행 속도가 느려질 수 있다. 따라서 2개의 실행문 중 하나를 선택하는 경우에는 주어 없이 if~else문을 쓰는 것이 좋다.

 


 

 

 

3. if ~ else if ~ else문

3개 이상의 실행문에서 반드시 하나를 선택하는 경우 if ~ else if ~ else문을 사용한다.

 

 

🌞 if ~ else if ~ else문의 사용

#include <stdio.h> int main(void) { int a = 0, b = 0; if (a > 0) { b = 2; } else if (a == 0) { b = 3; } else { b = 4; } printf("b : %d\n", b); return 0; }

 

if ~ else if ~ else문의 규칙

각 조건에 따라 실행할 문장이 두 문장 이상이면 반드시 줄괄호로 묶는다.

조건식을 차례로 검사하므로 이전 조건의 결과가 반영된다.

 

 

오른쪽의 경우 불필요한 조건 검사를 더 많이 하므로 조건식의 순서를 논려적 흐름에 맞게 작성해서 중복 검사를 피하는 것이 좋다.

순서가 중요하지 않다면 참이 될 가능성이 많은 조건식을 먼저 사용해 조건식을 검사하는 횟수를 줄일 수 있다.

 


 

 

 

단원 마무리

 

 

 

 

 

 

 

 

 

 

 

 

연습문제

 

🧊 문제 1

 

조건에 맞게 if 문을 채우시오.

가슴둘레가 90보다 작거나 같으면 S 선택

가슴둘레가 90보다 크고 100보다 작거나 같으면 M 선택

가슴둘레가 100보다 크면 L 선택

 
#include <stdio.h> 
int main(void) { 
  int chest = 95; 
  char size; 
  if (chest <= 90) { 
    size = 'S'; 
  } 
  else if (chest <= 100) { 
  size = 'M'; 
  } 
  else size = 'L'; 
 }

이 문제는 출력문이 없으므로 출력은 되지 않는다.

 

 

🧊 문제 2

 

키가 187.5cm 이상이고 몸무게가 80.0kf 미만이면 ok를 출력하고, 그 이외의 경우에는 cancel을 출력하는 프로그램이 완성되도록 빈칸을 채우시오(키는 179.5, 몸무게는 75.0의 double로 초기화한다).

#include <stdio.h> 
int main(void) { 
  double height = 179.5; 
  double weight = 75.0; 
  if ((height >= 187.5) && (weight < 80)) { 
    printf("ok\n"); 
  } 
  else { 
  printf("cancel\n"); 
  } 
  return 0; 
}
 

처음이 값이 주어졌으므로 조건에 해당되는 'cancel'이 출력된다.

 

 

 

오늘의 학습을 마치고

 

if문은 for문에 비하면 쉽지만 조건을 만드는 건 까다로운 문제이다. 처음에는 앞의 조건이 왜 생략이 되는지 몰랐으나 이제는 &&을 붙이지 않아도 자연스럽게 쓸 수 있게 되었다.

이제 다음 단원에서 switch문에 대해서도 학습해볼 것이다.