안녕하세요. 명월입니다.
이 글은 C++에서 사용되는 제어문에 대한 글입니다.
C++에서 사용되는 제어문은 Java와 C#과 크게 다르지 않습니다. 사실 Java와 C#이 C와 C++를 모델로 탄생된 언어이기 때문에 Java와 C#이 문법을 따라한 것입니다.
제어문은 프로그램에서 가장 중요하고 핵심적인 문법입니다. 이 제어문으로 많은 알고리즘이 만들어지고 패턴이 만들어지기 때문입니다.
제어문은 거의 많은 프로그램 언어가 문법이 비슷하기 때문에, 아니 C와 C++에서 많이 모델링을 했기 때문에 비슷비슷합니다. 하나만 제대로 익혀도 다른 언어에서도 사용할 수 있기 때문에 잘 알아두는게 좋습니다.
제어문의 종류는 선택문, 반복문, 분기문이 있습니다.
선택문
선택문은 조건에 따리 처리하는 명령을 달리하는 문법입니다. 종류 : if ~ eles문, switch~case 문
1. if ~ else문
- if의 조건이 true(참)이면 if에 영역을 실행하고 false(거짓)이면 else를 실행합니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// a의 변수에 1를 넣는다.
int a = 1;
// a가 1인가? true(참)면 아래의 실행한다.
if (a == 1)
{
// 콘솔 출력
wcout << " if a == 1 ? " << endl;
}
// a가 0인가? true(참)면 아래를 실행한다.
if (a == 0)
{
// 콘솔 출력
wcout << " if a == 0 ? " << endl;
}
// false(거짓)면 아래를 실행한다.
else
{
// 콘솔 출력
wcout << " if a == 0 else . " << endl;
}
// a가 0인가? true(참)면 아래를 실행한다.
if (a == 0)
{
// 콘솔 출력
wcout << " if a == 0 ? " << endl;
}
// a가 1인가? true(참)면 아래를 실행한다.
else if (a == 1)
{
// 콘솔 출력
wcout << " else if a == 1 ? " << endl;
}
// 위 조건 모두 false(거짓)면 아래를 실행한다.
else
{
// 콘솔 출력
wcout << " if a == 0 else . " << endl;
}
return 0;
}
if문은 if문을 단독으로 실행 가능하고 if ~ else, if ~ else if ~ else로도 실행 가능합니다.
그러나 else if나 else는 실행 불가능합니다.
2. switch ~ case 문
- switch ~ case 문은 그 수식값이 맞는 곳을 처리하는 다중 선택문입니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// a의 변수에 1를 넣는다.
int a = 1;
// a를 다중 선택한다.
switch (a)
{
// 0이면 아래 영역을 실행
case 0:
// 콘솔 출력
wcout << " switch case 0 " << endl;
break;
// 1이면 아래 영역을 실행
case 1:
// 콘솔 출력
wcout << " switch case 1 " << endl;
break;
// 2이면 아래 영역을 실행
case 2:
// 콘솔 출력
wcout << " switch case 2 " << endl;
break;
// 위 모든 조건이 맞지 않을 경우 실행
default:
// 콘솔 출력
wcout << " default " << endl;
break;
}
return 0;
}
switch ~ case에서 a의 변수에 관해 값이 1이기 때문에 「switch case 1」이 출력됩니다.
그리고 break를 만나 switch 영역을 벗어납니다.
기본적으로 switch ~ case에서 break 키워드를 사용해서 특정 조건을 선택합니다.
break를 사용 안하면, 다중 선택이긴 하는데 다중 실행도 가능합니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// a의 변수에 1를 넣는다.
int a = 1;
// a를 다중 선택한다.
switch (a)
{
// 0이면 아래 영역부터 실행
case 0:
// 콘솔 출력
wcout << " switch case 0 " << endl;
// 1이면 아래 영역부터 실행
case 1:
// 콘솔 출력
wcout << " switch case 1 " << endl;
// 2이면 아래 영역부터 실행
case 2:
// 콘솔 출력
wcout << " switch case 2 " << endl;
// 위 모든 조건이 맞지 않을 경우 실행
default:
// 콘솔 출력
wcout << " default " << endl;
}
return 0;
}
a가 1이기 때문에 case 1 영역을 실행하고 끝이 아니라 break가 없어서 case2, default도 실행이 됩니다.
반복문
일정한 조건이 만족할 때까지 같은 명령을 반복적으로 처리하는 문법입니다. 종류 : for문, while문, do~while문
1. for문
for문은 초기값부터 종료 조건이 거짓이 될 때까지 증감치를 변화시키며 반복적인 명령을 수행하는 제어문입니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// for문의 초기 값은 i를 0으로 설정
// 조건식은 i < 10가 true(참)이면 아래의 영역을 실행한다.
// 아래의 영역을 실행후 증감치를 변환해서 i를 1 증가(i++), 다시 조건식을 비교하여 true(참)이면 실행, 다시 증감식을 실행 반복한다.
// 조건식이 false(거짓)이면 반복문을 멈춘다.
for (int i = 0; i < 10; i++)
{
// 콘솔 출력
wcout << " for 문 : i 값 - " << i << endl;
}
return 0;
}
2. while 문
- for문과 비슷합니다만 초기식과 증감식을 설정하는 것없이 조건식만 있는 반복문입니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// 변수 선언
int i = 0;
// 조건식 i < 10가 true(참)이면 아래의 영역을 실행한다.
while(i < 10)
{
// 콘솔 출력
wcout << " while 문 : i 값 - " << i << endl;
// 변수 i에 1을 증가한다.
i++;
}
return 0;
}
위 while문은 for문과 같은 결과가 나오게 구현했습니다.
3. do ~ while문
- do ~ while문은 while과 비슷합니다.
대신 조건식이 반복문을 실행하기 전이 아닌 일단 한번 실행하고 나서 조건을 비교하는 것이 특징입니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// 변수 선언
int i = 0;
// 일단 한번 실행한다.
do
{
// 콘솔 출력
wcout << " do while 문 : i 값 - " << i << endl;
// 변수 i에 1을 증가한다.
i++;
}
// 조건식 true(참)면 do로 다시 올라가서 반복문ㅇ르 실행ㅎ나다.
while (i < 0);
return 0;
}
보통은 반복문을 for와 while를 많이 사용합니다만, 사양에 따라 무조건 한번 실행하고 반복을 하는 조건이 있는데 그럴 때 사용하면 좋습니다.
분기문
강제로 명령어의 처리 순서를 바꾸는 문법입니다. 종류 : break문, continue문
1. break문
- break문은 switch ~ case에서도 사용했었네요.
분기문 for문이나 while문에서 조건식에 상관없이 반복문을 멈출때 사용할 수 있습니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// 변수 선언
int i = 0;
// 조건식이 true(참)이기 때문에 무한 루프가 된다.
while (true)
{
// if 선택문에서 i의 값이 1일 경우,
if (i == 1)
{
// break실행, 즉 while 반복문 탈출
break;
}
// 콘솔 출력
wcout << " while 문 : i 값 - " << i << endl;
// i의 값이 1증가
i++;
}
return 0;
}
2. continue
- continue는 break와 비슷합니다. break는 반복문을 벗어나는 기능이지만 continue는 시작 지점으로 되돌리는 기능입니다.
#include <stdio.h>
#include <iostream>
using namespace std;
// 실행 함수
int main()
{
// 변수 선언
int i = 0;
// 조건식이 true(참)이기 때문에 무한 루프가 된다.
while (true)
{
// if 선택문에서 i의 값이 10일 경우,
if (i == 10)
{
// break실행, 즉 while 반복문 탈출
break;
}
// if 선택문에서 i의 값이 1일 경우,
if (i == 1)
{
// i의 값을 10을 설정
i = 10;
// while (true)문으로 다시 시작
continue;
}
// 콘솔 출력
wcout << " while 문 : i 값 - " << i << endl;
// i의 값이 1증가
i++;
}
return 0;
}
분기문의 종류에는 goto문도 있습니다만, goto문은 사용을 권장하지 않기 때문에 생략했습니다.
여기까지 C++에서 사용되는 제어문에 대한 글이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.
'Study > C , C++ , MFC' 카테고리의 다른 글
[C++] 전처리문 (0) | 2020.03.17 |
---|---|
[C++] 클리스 선언과 사용법 (0) | 2020.03.17 |
[C++] 함수 사용법(가변 파라미터 stdarg.h, 함수 포인터 그리고 범용 포인터 void*) (0) | 2020.03.15 |
[C++] 배열과 포인터(메모리 주소) 그리고 할당(new){stack과 heap에 대해서} (0) | 2020.03.14 |
[C++] 연산자 (0) | 2020.03.11 |
[C++] 변수와 상수, 그리고 데이터 타입 (0) | 2020.03.10 |
[C++] CMake의 사용법 (0) | 2020.03.10 |
[C++] Make와 Makefile 작성법 (0) | 2020.03.09 |