switch-case 조건문

if문과 다르게 맞는 조건 뒤에 로직은 모두 동작한다.
멈추고 싶다면 break;를 사용한다.
{}scope를 사용가능하다 if문과 다르게 {}가 없더라도 여러줄 인식이된다.

주의할점
switch문 앞부분에 변수를 선언할 수 있으나 초기화는 못한다.
case문에서 값을 정해줄 수 있다.
{}scope가 없을시 case문에서 선언한 변수는 
switch문 앞부분에 선언한 것처럼 적용된다.

 

#include <iostream>

using namespace std;

enum class Colors
{
	BLACK,
	WHITE,
	RED,
	GREEN,
	BLUE,
};

void printColorName(Colors c)
{
	switch (c) {
		//여기에 선언된것과 같다.
		//int a;
	case Colors::BLACK:
		//{}scope가 있으면 내부에서만 적용된다.
		int a;
		a = 5;
		cout << "BLACK";
		break;
	case Colors::GREEN:
		//GREEN이 선택되면 a의 값은 garbage값이 출력된다.
		cout << a << endl;
		cout << "GREEN";
		break;
	default:
		cout << "X" << endl;
	}
	cout << endl;
}

int main()
{
	printColorName(Colors::BLACK);
	
	return 0;
}

goto


반복문 대신에 과거에 자주사용했다.
어셈블리어로 가면 동작은 거의 같다.
지정한곳으로 가게 명령하는 것이다.
레이블이름을 지어 그위치로 돌아간다.
책갈피로 생각하면된다.

 

돌아갈곳 지정은 돌아갈곳(이름지정):
돌아가기 작동은 goto 돌아갈곳;으로 한다.

주의할점
지금은 거의 사용하지 않는다.

 

#include <iostream>

using namespace std;

int main()
{
	double x;

//돌아갈곳 설정하기
notGood :

	cout << "cin start" << endl;
	cin >> x;
	if (x < 0.0)//goto문 실행방법
		goto notGood;

	return 0;
}

프로그래밍은 CPU에서 할일은 지정해주는것이다.
할일을 지정해줄때 분기,반복등 여러 조건을 정해줄 수 있다.
중단Halt
- exit(숫자)
점프Jump
- goto,break,continue
조건분기Conditional branches
- if,switch
반복(루프)Loops
- while,do while,for
예외처리
- try,catch.throw

등이 있다.

 

중단Halt

exit(0)

#include <iostream>
#include <cstdlib>

using namespace std;

int main() 
{
	//출력 2번하는 프로그램
	cout << "test" << endl;
	//return은 return type에 맞춰서 값을줘야하지만 exit(숫자)는 상관없이 종료한다.
	exit(0);
	cout << "good" << endl;
	
	return 0;
}

조건문 if
if(bool타입){}조건으로 사용한다.
if문다음 else if()는 다음 조건을 설정할 수 있다.
else{}는 if의 조건이 안맞을때 실행된다.
논리연산자 사용이 가능하다.
return을 사용할 수 있다.

주의할점
{}(scope)을 안쓰면 아래 한줄만 동작한다.
if(조건)안에 정수가 0(false)이아니면 true로 인식한다.
논리연산자가 아닌 =을 사용하면 값을 대입하고 그값으로 if문이 작동한다.

 

#include <iostream>

using namespace std;

int main()
{
	int x,y;
	cin >> x;
	cin >> y;
	//논리연산자 사용
	if (x == y && x > 0) {
		cout << "x = y && x > 0" << endl;
	}
	
	if (x > 10) {
		cout << x << endl;
	}
	else if (x > 5) {
		cout << x << " = 10 > x > 5 " << endl;
	}
	else {
		cout << x << " < 5" << endl;
	}

	//0이 아니면 true로 본다.
	if (1) {
		cout << "if(1)" << endl;
		x = 10;
	}

	cout << x << endl;

	//return하는 if
	if (x == 10) {
		return 10;
	}
	return 0;
}

조건문

- 조건의 개수가 적을때 if문, 많을때는 switch문을 사용한다. 


if문

- if문 내부의 조건을 검사해 프로그램의 진행 결로를 결정한다.

- if문은 조건의 개수가 많지 않을때 사용하는것이 유리하다.


if (조건1) {

//조건 1에 부합할 때

}else if (조건2) {

//조건 1에 부합하지 않고 조건2에 부합할 때

}else{

//위 조건들에 모두 부합하지 않을때

}


실습 내용


실습 결과


Switch문

- 다양한 조건이 존재할 때 사용하면 소스코드를 짧게 유지할 수 있다.

- 조건을 정확히 판별할때 유용하게 사용가능하다.

- swtich문은 조건에 부합하는 경우 아래쪽의 case도 모두 만족시킨다.

- 따라서 일반적인 경우case문의 마지막에 break를 넣어 특정부분만 실행시키도록한다.


switch (확인 대상) {

case 값1:

//값 1에 부합할 때

break;

case 값2:

//값 2에 부합할 때

break;

Default:

//모든경우

}


실습 내용


실습결과




반복문


for문

- for문 내부의 조건에 부합하면 계속해서 실행한다.

- 반복문을 탈출하고자 하는 위치에 break 구문을 삽입한다.

주의할점

- 무한루프

+ 무한루프란 종료 조건 없이 무한반복되는 것을 말한다.

+ 일부러 무한루프를 만드는 경우는 거의 없고 개발자의 실수로 인해 발생한다.


for( 초기화; 조건; 반복 끝 명령어) {

//반복적으로 실행할 부분

}


실습 내용

실습 결과



while문

- while문의 조건에 부합하면 계속해서 반복한다.

- 반복문을 탈출하고자 하는 위치에 break 구문을 삽입한다.

while (조건) {

//반복적으로 실행할 부분

}


실습 내용


실습 결과


중첩된 반복문(2중for문)

- 중첩된 반복문이란 반복문 내부에 다른 반복문이 존재하는 형태의 반복문을 말한다.

- 반복문이 중첩될수록 연산 횟수는 제곱형태로 늘어난다.


실습내용


실습결과


for문과 while문의 관계

- 모든 for문은 while문으로 변경할 수 있으며 모든 while문은 for문으로 변경할 수 있다.

- C언어 소스코드가 최적화 되면서 어셈블리어 단에서는 동일한 명령어로 동작한다.

조건문

 if 

 구문은 조건하에 명령문을 수행하는 것이다.

 switch 

 구문은 선택된 명령문을 수행하는 것이다.


if문

if <-첫번째 조건이다.

else if <-바로 위에 조건에 부합하지않는다면 체크한다.

else <-위에 모든 조건에 부합하지않는다면 실행한다.

ex)
if(조건) {

실행할 로직

}else if(조건) {위에 조건에 부합하지 않는다면 체크한다.

실행할 로직

}else{위에 모든 조건에 부합하지 않으면(나머지 경우) 실행한다.

실행할 로직

}

switch문

case에는 변수를 넣을 수 없고 값만 들어간다.

switch(변수){

case "비교변수":

break;

default://나머지

}


if문 문 사용 코드.


switch 문 사용 코드.


숫자비교 방법

x == y <- x는 y와 같다.

x != y <- x는 y와 다르다.

x > y <- x는 y보다 크다.

x < y <- x는 y보다 작다.

x >= y <- x는 y보다 크거나 같다.

x <= <- x는 y보다 작거나 같다.


문자열비교 방법

equals

"text" == "text"

->결과 true로 나오긴 하지만

text글자를 비교한것이 아니라

메모리 위치를 비교한 것이다.

자세한 설명->

2018/01/25 - [개발 소발/개발 java] - java 문자열 개념, 문자열 비교


"text".equals("text")

->equals가 text란 글자로 비교하는 것 이다.

     즉, equals를 사용하는 게 맞다.


!"text".equals("text")

->"text".equals("text")의 반대

text와 다르다 의미이다.



+ Recent posts