C++

7. Control Program Flow (1)

Kelvin의 게임개발 2023. 12. 20. 01:30
728x90
반응형

1. if Statement


조건식의 결과는 bool (T,F)로 나타내야 한다

 

조건이 참이면 명령이 실행된다, 이때 명령은 들여쓰기를 해서 쓰는게 구문파악에 좋다

 

명령이 1줄이면 { }를 생략해도 되지만 그냥 쓰는게 좋다
 
{ }안에 선언한 변수는 지역변수로 { }에서만 사용이 가능하다

 

//if
if (조건식)
{
	명령;
}
int main()
{
	int num{ 0 };
	const int min{ 10 };
	const int max{ 100 };

	cout << "Enter a number between" << min << "and" << max << ": ";
	cin >> num;

	if (num >= min && num <= max) //조건문이 참이면
	{
		cout << num << "is greate than " << min << endl; //명령을 실행한다

		int diff = 100; // { }안에 선언한 변수 -> 지역변수이기 때문에 해당 { }안에서만 사용이 가능하다

		cout << diff << endl;
	}
}

 

 

2. else, else if Statement

 

if문의 조건이 참이 아니면 else문의 명령이 실행된다
 
else if문은 if문의 조건이 참이 아니면 else if문의 조건을 검사 후 참이면 명령을 실행한다 (여러개 사용이 가능하다, 참인 조건의 else if문의 명령을 실행하고 if문을 빠져나간다)

 

if()와 여러개의 else if()를 검사 후 전부 거짓이면 else문의 명령을 실행한다
 
if, else if 는 조건이 참이면 명령을 실행하고 if문을 빠져나간다

 

//if-else
if (조건식)
{
	명령;
}
else
{
	명령;
}


//if-else-else if
if (조건식)
{
	명령;
}
else if (조건식)
{
	명령;
}
else if (조건식)
{
	명령;
}
else
{
	명령;
}
int main()
{
	int num{};
	const int target{ 10 };

	cin >> num;

	if (num >= 10) //num이 10 이상이면 호출
	{
		cout << num << "is greater than or equal to target" << endl;
	}
	else if (num < 5) //if문의 조건이 false 이고 num 이 5보다 작을 때
	{
		cout << num << "is less than 5" << endl;
	}
	else //if, else if 조건이 전부 false 일 때
	{
		cout << num << "is less than target but greater than 5" << endl;
	}
}

 

 

3. Nested if Statement

 

if, else, else-if 문 안에 또 다른 if, else, else if를 계속해서 추가해서 사용이 가능하다 (이때 else, else if가 어떤 if에 속해있는지 잘 파악해야 한다)

 

너무 많은 if, else, else if를 안에 계속해서 사용하면 코드 가독성이 좋지 않다

 

int main()
{
	int score{ 95 };

	if (score > 90) //score가 90보다 클 때
	{
		if (score > 95) //score가 95보다 클 때
		{
			cout << "A+" << endl;
		}
		else //score가 90보다 크지만 95보다 작을 때
		{
			cout << "A" << endl;
		}
	}
	else //score가 90보다 작을 때
	{
		cout << "Under than 90" << endl;
	}
}

 

 

4. Switch-Case Statement & enum

 

Switch()의 평가대상과 맞는 값을 가진 case의 명령을 실행하고 break;를 만나 switch-case를 빠져나간다 (break를 쓰지 않으면 break를 만날때까지 밑의 case 값을 검사하지 않고 진행된다)

 

이때 맞는 Switch()의 평가대상과 같은 case값이 없다면 default:의 명령을 실행하고 switch-case를 빠져나간다 (default는 else와 비슷하다, break가 필요없다)

 

Switch()의 평가대상은 정수형 or enum형만 가능하다

 

case들의 값들은 상수(const, enum)만 들어갈 수 있다

 

switch (평가대상)
{
	case 값1:
		명령;
		break;
	case 값2:
		명령;
		break;
	case 값3:
		명령;
		break;
	default:
		명령;
}

 

int main()
{
	int InputValue{ 0 };

	cin >> InputValue;
	
    switch (InputValue) //정수 or enum만 들어간다
	{
	case 10: //상수, enum만 들어감
		cout << "InputValue is : 10 " << endl;
		break;
	case 20:
	{
		cout << "InputValue is : 20 " << InputValue << endl;
		break;

		int Test{ 100 }; //case내부에서도 지역변수 선언이 가능하다
	}
	case 30: //break;가 없기 때문에 case 40으로 넘어간다
	case 40:
		cout << "InputValue is : 30 or 40" << InputValue << endl;
		break;
	default: //맞는 case값이 없을 때 호출됨
		cout << "Not Correct Case" << endl;
}

 

enum의 이름은 타입으로 사용이 가능하며 같은 타입의 enum 내부 변수로 초기화가 가능하다

 

enum 변수값은 0부터 차례대로 초기화 된다 (순서대로 0, 1, 2....)
이때 중간값을 초기화 하면 그 값 + 1로 자동 초기화 된다

 

enum 변수값들은 상수이다

 

enum 변수값들은 정수형만 가능하고 컴파일 타임에 컴파일러에게 enum변수값이 무엇인지 알려주기 때문에 메모리에 할당되지 않는다 (메모리 낭비X)

 

enum 이름 
{
	변수,
	변수,
	변수
};

enum이름 변수명{ enum내부값 };

 

int main()
{	
    enum Color
	{
		Red, //0
		Green, //1
		Blue //2
	};
    
    enum Color2
	{
		Red, //0
		Green = 10, //중간에 10으로 초기화
		Blue //11
	};
    
	Color TempColor{ Red }; //enum이름을 타입으로 사용가능하다, 같은 타입의 enum의 변수값으로 초기화가 가능하다
	Color2 TempColor2{ Green };
}

 

 

 

728x90
반응형

'C++' 카테고리의 다른 글

9. Character & String  (134) 2024.01.08
8. Control Program Flow (2)  (113) 2023.12.21
6. Operators (연산자)  (131) 2023.12.12
5. Array And Vector  (202) 2023.12.09
4. Variables and Constants  (110) 2023.12.07