✔조건문
- 주어진 조건식의 결과에 따라 별도의 명령을 수행하도록 제어하는 명령문
(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문을 여러 번 사용하기도 한다.
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 (조건 값)
{
case 값1:
조건 값이 값1일 때 실행하는 명령문;
break;
case 값2:
조건 값이 값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
- 루프 내에서 사용하여, 해당 루프의 나머지 부분을 건너뛰고 바로 다음 조건식의 판단으로 넘어가게 해준다.
- 보통 반복문 내에서 특정 조건에 대한 예외 처리를 하고자 할 때 자주 사용한다.
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