C/C++ 제어문

제어문의 종류

C언어의 제어문에는 조건문 반복문 분기문이 있으며 종류는 아레와 같다

조건문 반복문 분기문
if for goto
if~else while continue
switch~case do~while break

이중 if와 for문의 사용빈도가 가장 높다.

if문

if (참){
	참일경우 실행문
} else if (조건){
	참이 아니며 조건이 맞을 경우
} else {
	거짓일경우 실행문
}

위 처럼 사용한다. else if는 여러 조건을 나눠야 할때 쓰인다. 특정상황에는 switch case문은 else if를 대체할 수 있다.

switch~case

switch(조건식){ //조건식은 결과가 정수형(int, char, enum)인 수식만 가능
	case 상수1 : //조건식의 결과가 상수1이면, if(조건식==상수1)
	문장1;
	break; //switch~case문 루프를 벗어남
	case 상수2 : //조건식의 결과가 상수2이면, else if(조건식==상수2)
	문장2;
	break;

	case 상수n:
	문장n;
	break;
    
	default : //만족하는 경우가 없을 때, 다중 if~else의 마지막 else에 해당
	문장;
	break;//없어도 되지만 통일감을 위해 쓰는 것이 좋음
}//switch~case문 루프 끝

주로 조건이 명확하게 나누어지고 처리해야할 분기가 균일할때 쓰인다.
아레는 계산기 예시를 c++ switch~case문으로 만들어 본것이다.

#include <iostream>
using namespace std;

int main() {
    char op;
    int num1, num2;
    
    while (true) {
        cout << "덧셈과 뺄셈만 가능합니다\n";
        cout << "끝내려면 0+0을 입력하세요\n"; //추가
        cout << "계산하려는 수식(예:10+20)을 입력하세요:";
        cin >> num1 >> op >> num2; //10+20

        if (num1 == 0 && num2 == 0) break;

        switch (op) {
            case '+':
                cout << "덧셈 결과는 " << (num1 + num2) << "입니다.\n";
                break;
            case '-':
                cout << "뺄셈 결과는 " << (num1 - num2) <<"입니다.\n";
                break;
            case '*':
                cout << "곱셈 결과는 " << (num1 * num2) <<"입니다.\n";
                break;
            case '/':
                cout << "나눗셈 결과는 " << ((double)num1 / num2) <<"입니다.\n";
                break;
            default:
                cout <<"다시 입력하세요\n";
                break;
        }
    }

    return 0;
}

for문

for (변수생성;조건;증감){
	실행문
}

for문은 위 처럼 쓰며 아레는 c++에서 반복문을 이용, setw의 사용법이다.

for(int i=1;i<=10;i++){
	std::cout<< std::setw(2) << i << " : Hello\n";
} //setw는 Set Width의 약자이며 2인경우 i를 2칸 넓이로 쓴다는 의미이다. 

using namespace std::cout;
using namespace std::setw;
for(int i=1;i<=10;i++){
	cout<< setw(2) << i << " : Hello\n";
}

using namespace std::cout;
for(int i=1;i<=10;i++){
	cout.width(2); //다음에 출력되는 하나(i)를 두칸에 출력
	cout<< i << " : Hello\n";
}

for(int i=1;i<=10;i++){
	std::cout.width(2); //다음에 출력되는 하나(i)를 두칸에 출력
	std::cout<< i << " : Hello\n";
}

while문

#include <iostream>
using namespace std;

int main() {
    int menu;
    
    do {
        cout << "메뉴" << endl;
        cout << "1:추가" << endl;
        cout << "2:삭제" << endl;
        cout << "3:저장" << endl;
        cout << "4:변경" << endl;
        cout << "원하는 작업을 선택하세요->";
	} while (!(menu >= 1 && menu <= 3));	

	cout <<"선택한 메뉴 번호는 "<< menu <<"입니다."<<endl;
	return 0;
}

무한루프로 사용하기

 for (; ;) {
 	printf("Hi ");
 }
 
 while (1) {
 	printf("Hi ");
 }
 
 do {
 	printf("Hi ");
 } while (1);

 

출처 : Smile Han C언어 - YouTube