일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- c# c#프로그래머스
- 유니티서바이벌게임만들기
- 유니티상호작용
- c#기본문법
- 유니티3dui
- unity게임만들기
- c#
- 시샵
- 스파르타코딩클럽
- c#기초문법
- 유니티공부
- c# 백준
- c#코딩기초트레이닝
- c#코테
- c#프로그래머스기초문법
- 시샵문법
- Unity
- unity3d
- 티스토리챌린지
- unity게임
- unity공부
- 스파르타
- 유니티게임만들기
- 유니티
- c#문제
- 오블완
- unity3dservival
- C#문법
- C++문법
- unity3d게임만들기
- Today
- Total
나 개발자 진짜 되냐?
[ C++ 기본 문법 8 ] 분기문 본문
드디어! 데이터를 마치고
이 데이터를 다루고 만지는 문법들을 배우려고한다
사실 c#과 비슷한 내용이 많을 거 같지만
한번 정리하면 도움이 될 것 같아서!
분기문에 대해 알아보자
사실 분기문을 처음 익혀보는데..
분기문은 조건문과 반복문 사이에서
흐름을 정해주는 친구라고 한다.
일정 조건에 따라 다르게 적히는 것을 의미한다.
사실 제어문이라는 큰 틀 안에 분기문, 반복문 있는거긴 한데
하나씩 공부해보자
IF
만약, 전제조건이랑 맞다면??
이라고 해석할 수 있다.
예시를 하나 들어보자
int hp = 100;
int damage = 100;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
cout << " 몬스터 깨꼬닥 " << \n;
즉,
if문 괄호 안에 있는 () 값이 참일 경우
if문 밑에 있는 식이 무조건적으로 실행된다.
참이 아닐 경우 밑의 식은 고대로 넘어간다.
지금 예시로는 bool값을 넣긴 했지만 뭐 식을 넣어도 되고 참만 되면 상관없다.
int hp = 100;
int damage = 90;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
cout << " 몬스터 깨꼬닥 " << \n;
if(isDead == false)
cout << " 몬스터 안 깨꼬닥 " << \n;
만약에 대미지가 살짝 모자라면 어떻게 될까?
hp가 0이 안되기 때문에
첫 번째 if문은 넘어가고 두 번째 if문만 실행될 것이다.
isDead == false 보단 그래도! isDead를 쓰는 편이 더 간단하고 편하긴 하다.
하지만 가독성에서 조금 아쉬운 부분이 있어서, 되도록이면 편해도 다 써 버릇하는 것도 좋다.
다 회사에 가서.. 코드컨벤션으로 익힐 것이긴 하지만..
자, 본론으로 다시 돌아와서..
if문이 저렇게 여러 개 있으니 참 복잡해 보인다.
그래서 우리는 더 간단해지고 업그레이드된 if문을 사용하게 된다.
그것은 if / else 문
int hp = 100;
int damage = 90;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
cout << " 몬스터 깨꼬닥 " << \n;
else
cout << " 몬스터 안 깨꼬닥 " << \n;
이렇게 해주면 컴퓨터도 좀 더 편..? 해진다.
지금은 한 줄이지만, 두줄로 쓰고 싶을 땐?
int hp = 100;
int damage = 90;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
{
cout << " 몬스터 깨꼬닥 " << \n;
cout << " 다음 몬스터를 사냥해보자! " << \n;
}
else
{
cout << " 몬스터 안 깨꼬닥 " << \n;
}
이렇게 괄호로 나타낸다.
if문 내에서 또 조건이 생기면
또 if문안에 if문을 넣고 넣고 넣고 하면 엄청 if문이 많아지는데..
if문이 많다고 좋은 게 저얼대 아니다.
이렇게 체력 20 이상일 때,도망가도록 하게 만들려면
int hp = 100;
int damage = 90;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
cout << " 몬스터 깨꼬닥 " << \n;
else
{
if (hp>20)
cout << " 몬스터가 날 공격해! " << \n;
else
cout << " 몬스터 도망간다ㅏㅏ " << \n;
}
하지만.. 이렇게 점점 늘어나면 정말 좋은 코드가 아니다.
그래서 나온 친구가 if / else if / else이다.
이렇게 해주면
int hp = 100;
int damage = 90;
hp -= damage;
bool isDead = ( hp <=0 );
if(isDead)
cout << " 몬스터 깨꼬닥 " << \n;
else if (hp>20)
cout << " 몬스터가 날 공격해! " << \n;
else
cout << " 몬스터 도망간다ㅏㅏ " << \n;
이렇게 사용 가능하다. 아까보다 짧고 굵다.
또 다른 예시를 가져왔습니다.
const int ROCK = 0;
const int SCISSORS = 1;
const int PAPER = 2;
int input = ROCK;
if (input == ROCK)
cout << "바위를 냈습니다." << \n;
else if (input == SCISSORS)
cout << "가위를 냈습니다." << \n;
else if (input == PAPER)
cout << "보를 냈습니다." << \n;
else
cout << "가위바위보를 할줄 몰라?" << \n;
자 꽤나 잘 만들었다고 생각하겠지만.. 참 아쉬운 게 있다.
그것은 바로 비슷한 부분을.. 너무 반복하는 것
그런 부분에 특화되어있는 친구가 있다.
그 친구는
SWITCH
이 닌텐도 스위치 같은 녀석은 상황에 따라 그에 맞춰 작동된다.
switch( 평가할 대상 )
{
case 1:
break;
case 2;
break;
}
형태는 이렇게 생겼다.
switch(input)
{
case ROCK:
cout << "바위를 냈습니다." << \n;
break;
case SCISSOR:
cout << "가위를 냈습니다." << \n;
break;
case PAPER:
cout << "보를 냈습니다." << \n;
break;
}
엇! break;가 뭔가요?
이 스위치라는 친구, 들어오는 건 쉽지만 나가는 건 마음대로 못나간다.
그래서 나갈 수 있게 문고리를 만들어줘야한다.
그것이 break;
이 break가 있으면
그 기점으로 이 스위치를 완전히 빠져나간다.
즉 input이 바위였다면 밑에 가위랑 보는 쳐다도 안보고 나가게 된다.
그래서 break를 쓰지않는다면 그밑에도 다 돌아서
3줄이 다 나오게 된다.
아까 if문에는 아닌걸로 else가 있는데 switch엔 없나?
아니요 있습니다. default라고 해서 사용하며 옵션이다. 꼭 필수로 쓸 필요는 없다.
switch(input)
{
case ROCK:
cout << "바위를 냈습니다." << \n;
break;
case SCISSOR:
cout << "가위를 냈습니다." << \n;
break;
case PAPER:
cout << "보를 냈습니다." << \n;
break;
default:
cout << "가위바위보를 할줄 몰라?" << \n;
break;
}
이렇게 사용 할 수 있다.
break 말고 또다른 친구가 있다 continue
이름과 비슷하게 이 친구는 계속 이어서 할거에요! 라는 뜻을 가지고 있다.
그래서 continue를 쓰면 그 밑으로 자연스럽게 내려가게 된다.
흠 그러면 안쓰는거랑 같은 뜻 아닌가? 싶다.
마지막으로 switch문은 한정적으로 사용할 수 있다.
안에 괄호에는 꼭 정수만 넣을 수 있다.
float를 넣으면 빨간줄이 뜨는걸 볼 수 있다.
'C++을 시작해봐요! > 문법정리를 해보았어요!' 카테고리의 다른 글
[ C++ 기본 문법 10 ] 열거문 (0) | 2025.03.04 |
---|---|
[ C++ 기본 문법 9 ] 반복문 (0) | 2025.03.03 |
[ C++ 기본 문법 7 ] const 는 상수화 (0) | 2025.03.01 |
[ C++ 기본 문법 6 ] 비교 연산! 논리 연산! (0) | 2025.02.26 |
[ C++ 기본 문법 5 ] 산술 연산 (0) | 2025.02.22 |