본문 바로가기
C++/이론

[C++] 제어문과 선택문(if~else 문, switch 문)

by 씐 2023. 9. 28.
728x90

제어문

 

제어문이란?

  • 프로그램은 보통 물 흐르듯이 위에서 아래로 순차적으로 실행, 경우에 따라 특정 블록이 수행되거나 수행되지 않도록 해야 할 경우도 생김.
  • 그럴 때 필요한 것이 제어문.
  • 제어문은 프로그래머가 특정 문장을 건너뛰게도 하고 특정 문장을 반복 실행하게도 하면서 프로그램의 흐름을 조절하는 역할

 

제어문의 종류

구문 제어 명령
선택문 if문
if~else문
다중 if~else문
switch문
반복문 for문
while문
do~while문
보조 제어문 break문
continue문

이 게시물에서는 제어문 중에서 선택문에 대해 알아볼 예정이다.


if 문

 

if문이란?

  • 주어진 조건을 만족하는 경우에만 특정 문장을 수행하도록 하는 제어문
  • if문은 결과가 참 또는 거짓인 식을 if 다음의 괄호에 지정한다.
  • 이 조건을 만족하는 경우에는 특정 문장을 수행하지만 이 조건을 만족하지 않으면 어떠한 문장도 수행하지 않는다.
  • 따라서, if문은 특정 문장을 수행할 것인지의 여부를 결정할 때 주로 사용한다.

 

 

if문 기본 형식

[문장]

if (조건) {
  조건에 만족하면 수행되는 문장;
}

[다음 문장]
  • 조건에 만족할 문장을 {} 안에 기술하는 것이 보편적
  • 조건에 만족할 경우 수행할 문장이 한 개일 경우 {}를 생략
  • 수행할 문장이 2개 이상일 경우 {}는 필수적으로 기술

 

 

if문의 순서도

  • 조건의 결과가 참이면 if문 바로 다음에 나오는 문장을 수행
  • 조건의 결과가 거짓이면 이 문장을 수행하지 않고 바로 다음 문장을 수행

if~else문

 

if~else문이란?

  • if문 계열 중 가장 많이 사용하는 형식
  • 2가지 경우 중 한가지만 선택할 때 사용
  • if문과 마찬가지로 조건에 만족할 때 처리할 문장이 하나일 경우에는 중괄호 생략
  • 여러 문장을 수행해야할 경우 반드시 중괄호로 묶어주어야 함.

 

 

if-else문 기본 형식

[문장]

if(조건){
  조건에 만족할 때 수행되는 문장;
}
else{
  조건에 만족하지 않을 때 수행되는 문장;
}

[다음 문장]
  • if~else문은 if문 이전 문장을 수행하다가 if문을 만나면 조건을 검사

 

 

if~else문의 순서도

  • 조건의 결과가 참이면 if문 바로 다음에 나오는 {} 내부의 문장을 수행
  • 조건의 결과가 거짓이면 else문 다음에 나오는 {} 내부의 문장을 수행
  • 두 문장 중 하나가 수행된 후 다음 문장 수행

다중 if~else문

 

다중 if~else문이란?

  • if~else문은 참, 거짓을 선택하는 과정에서 한 번만 사용
  • 만일 그 경우의 수가 둘이 아닌 셋 이상에서 하나를 선택해야 할 경우에는 if~else문을 중첩해서 사용해야 한다.

 

 

다중 if~else문 기본 형식

[문장]

if(조건 1){
  문장 1: 조건 1에 만족할 때 처리할 문장;
}
else if(조건 2){
  문장 2: 조건 1에 만족하지 않지만 조건 2에 만족할 때 처리할 문장;
}
else if(조건 n){
  문장 n: 조건 1부터 조건 n-1에 만족하지 않지만 조건 n에 만족할 때 처리할 문장;
}
else{
  위에서 언급한 모든 조건에 대해서 만족하지 않을 때 처리할 문장;
}

[다음 문장]
  • if문의 조건 1이 참이면 문장 1을 수행하고 if 문 밖의 다음 문장으로 실행
  • 조건 1이 거짓일 경우 다음의 조건 2를 검사해서 참이면 문장 2를 수행하고 if문 밖의 다음 문장으로 실행
  • 조건 2도 거짓이라면 그 다음 조건식인 조건 n을 검사해서 참이면 문장 n을 수행하고 if문 밖의 다음 문장으로 실행
  • 언급한 모든 조건에 맞지 않으면 마지막 else 다음의 문장을 수행한 후 if문을 빠져나온다.

switch문

 

switch문이란?

  • switch문은 다중 if~else문과 같은 용도로 쓰인다.
  • 즉, 여러 조건 중 하나를 선택할 때 사용하는 다중 선택문
  • 하지만 다중 if~else문과 switch문은 그 형태가 다르다.
    • 다중 if~else문은 조건문을 검사해서 참이나 거짓의 결과로 문장을 수행.
    • switch문은 참이나 거짓의 결과를 반환하는 논리식이 아닌 정수식에 따라 분기

 

 

switch문 기본 형식

문장 1;

switch <정수식> {
  case 정수값1 : 문장2; break;
  case 정수값2 : 문장3; break;
  ...
  case 정수값n : 문장n+1; break;
  ...
  default : 문장 m; 
}

다음 문장;
  • switch문은 <정수식>의 결과값과 case 다음의 정수값이 일치하는 것을 찾아서 해당되는 행의 문장을 수행
  • case문의 정수값은 각각 달라야 함.
  • case문의 정수값의 순서는 크기의 순서와 상관없이 임의의 순서로 나타내도 상관없다.
  • switch 다음에 나오는 <정수식>에는 변수나 수식이 올 수 있으나, case 다음에 나오는 정수값에는 변수나 수식이 올 수 없다.
  • switch문의 정수식과 일치하는 case문의 값이 없을 경우를 처리하기 위해서 default가 존재
  • 그러나, switch문의 정수식과 일치하는 값이 없을 경우 아무런 처리도 하지 않는다면 default를 생략할 수도 있다.
  • 또한, switch문에서 break를 생략할 수도 있다.
    • 2가지 경우에 대해서 처리할 문장이 동일하다면 case 정수값1 : 다음에 아무런 문장을 기술하지 않고 break문도 생략한다.

 

'C++ > 이론' 카테고리의 다른 글

[C++] 보조 제어문 (break문, continue문)  (0) 2023.09.30
[C++] 반복문 (for문, while문)  (0) 2023.09.29
[C++] 연산자  (0) 2023.09.07
[C++] 자료형  (0) 2023.09.06
[C++] C++의 기초  (0) 2023.09.05