[C++] 제어문 - 조건문, 반복문

꿈별·2022년 8월 30일
0

C++

목록 보기
4/27

✔조건문

  • 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문
    (1) if문
    (2) if / else문
    (3) if / else if / else문
    (4) switch문

if문

  • 조건식의 결과가 참이면 주어진 명령문을 실행하고, 거짓이면 아무것도 실행하지 않음
if (조건식)
{
	조건식의 결과가 참일 때 실행하는 명령문;
}

if / else문

  • else문은 주어진 조건식의 결과가 거짓일 때 주어진 조건문을 실행함
if (조건식)
{
	조건식의 결과가 참일 때 실행하는 명령문;
}
else
{
	조건식의 결과가 거짓일 때 실행하는 명령문;
}

if / else if / else문

  • 두 개의 if / else 문이 연달아 나온 것
  • 이 때, else if 문은 여러 번 나와도 되지만 if문과 else문은 한 번만 사용 가능
  • else if문은 앞선 if문이 거짓일 때 실행됨
if (조건식1)
{
	조건식1의 결과가 참일 때 실행하는 명령문;
}
else if (조건식2)
{
	조건식2의 결과가 참일 때 실행하는 명령문;
}
else
{
	조건식1, 2의 결과가 모두 거짓일 때 실행하는 명령문;
}

  • 상황에 따라 if문을 여러 번 사용하기도 한다.
//방향키를 동시에 누를 경우를 고려한 조건문
//만약 else if문으로 작성한다면 동시 입력은 제어할 수 없다.
if (temp == 'w')
{ ... }
if (temp == 'a')
{ ... }
if (temp == 's')
{ ... }
if (temp == 'd')
{ ... }

삼항 연산자에 의한 조건문

  • 조건식 ? 반환값1 : 반환값2
    -> 조건식이 참이면 반환값1을, 거짓이면 반환값2을 반환

switch문

  • if / else 문과 마찬가지로 주어진 조건 값의 결과에 따라 프로그램이 다른 명령을 수행하도록 하는 조건문
  • 조건 값으로는 int형으로 승격할 수 있는 값만 사용할 수 있다.
    -> char형, short형, int형 변수, 리터럴, 열거체
  • default 절은 반드시 존재하지는 X, 필요할 때만 선언할 수 있음
  • break 키워드는 조건 값에 해당하는 case나 default절이 실행된 뒤 전체 switch문을 빠져나가게 해준다.
    -> 각 case 및 default절에 반드시 포함해야 한다.
switch (조건 값)
{
	case1:
    	조건 값이 값1일 때 실행하는 명령문;
    	break;
	case2:
    	조건 값이 값2일 때 실행하는 명령문;
    	break;
	...
    default:
    	조건 값이 어떠한 case절에도 해당하지 않을 때 실행하는 명령문;
        break;
}
  • 여러 개의 case절을 사용해 여러 개의 조건을 한 번에 검사할 수도 있다.
switch (ch)
{
	case 'a':
	case 'A':
    	명령문;
    	break;
	case 'b':
	case 'B':
    	명령문;
    	break;
	...
    default:
    	명령문;
        break;
}

✔반복문

  • 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 하는 명령문
    (1) while문
    (2) do / while문
    (3) for문
    (4) 범위 기반의 for문

while문

  • 특정 조건을 만족할 때까지 주어진 명령문을 반복 실행함
  • 루프에 진입하기 전에 조건식부터 검사함
  • while문 내부에 조건식의 결과를 변경하는 명령문이 존재하지 않을 때는 프로그램이 무한 루프에 빠지게 된다.
    -> while문을 작성할 때는 조건식의 결과가 어느 순간 false를 갖도록 조건식의 결과를 변경하는 명령문을 반드시 포함시켜야 한다.
while (조건식)
{
	조건식의 결과가 참인 동안 반복 실행할 명령문;
}

do / while문

  • 조건식 결과와 상관없이, 먼저 루프를 한 번 실행한 후에 조건식을 검사함
do {
	조건식의 결과가 참인 동안 반복 실행할 명령문;
   ...
   조건식의 결과를 변경하는 명령문;
} while (조건식)

for문

  • 초기식, 조건식, 증감식을 포함하는 반복문
  • for문 안에서만 사용하는 변수를 초기식에서 직접 선언할 수 있으며, 이 변수는 for문이 종료되면 함께 소멸한다.
for (초기식; 조건식; 증감식)
{
	조건식의 결과가 참인 동안 반복 실행할 명령문;
}

범위 기반의 for문

  • 시작과 끝점을 알려주지 않아도 전체 순회를 해주는 반복문이다.
  • 배열을 자동으로 인식하며, 컨테이너 클래스에서 많이 사용된다.
    -> 데이터 타입 : 데이터 리스트로부터 하나씩 받아올 데이터의 타입
    -> 변수명 : 데이터 리스트로부터 받아온 데이터를 가지고 있는 변수
    -> 데이터 리스트 : 배열, vector와 같이 순회가 가능한 데이터 리스트, 앞에 꼭 : (콜론) 을 붙여줘야 한다.
for (데이터 타입 변수명 : 데이터 리스트)
{
	변수를 이용한 명령문;
}
  • for문과의 차이점
    (1) 범위기반 for문에는 index 정보가 존재하지 않는다.
    (2) 범위기반 for 배열의 요소를 변경할 수 없다. (배열에서 데이터를 복사해올 뿐이지, 배열 자체의 요소를 바꿀 순 없음)

💡심화


✔기타 제어문

  • 일반적으로 조건식의 검사를 통해 루프로 진입하면, 다음 조건식을 검사하기 전까지 루프 안의 모든 명령문을 실행한다.
    -> continue문과 break문을 사용해 루프의 흐름을 사용자가 직접 제어할 수 있다.

continue

  • 루프 내에서 사용하여, 해당 루프의 나머지 부분을 건너뛰고 바로 다음 조건식의 판단으로 넘어가게 해준다.
  • 보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용한다.
//1~100 정수 중에 짝수를 제외하고 홀수만 출력하는 예제
int except_num = 2
for (int i = 0; i <= 100; i++)
{
	if (i % except_num == 0)
    {
    	continue;
    }
    cout << i << " ";
}

break문

  • 루프 내에서 사용하여. 해당 반복문을 완전히 종료시킨 뒤, 반복문 바로 다음에 위치한 명령문을 실행한다.
    -> 루프 내에서 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용한다.


참고
http://www.tcpschool.com/cpp/cpp_control_condition
https://blockdmask.tistory.com/319

0개의 댓글