본문 바로가기
제출용/TIL

내일배움캠프 10일차 TIL + 조건문이란 무엇인가

by 유린테 2024. 4. 26.

오늘의 키워드

  • if
  • else
  • if else
  • switch

 


 

 

조건문

조건문엔 종류가 상당히 많았다

if 하나인 줄 알았지 .. 이렇게 많을 줄이야 호달달.

 

 

(1) if 

(실행할 코드가 한줄인 경우, 중괄호를 생략해도 되지만 처음 배우는 단계에서는 중괄호를 쓰는 것이 좋다)

if (조건식)
{
    // 조건식이 참이라면 진행할 코드
}

 

(2) else

if 문이 거짓일 경우 실행 (if가 아닐경우 무조건 else가 되는거임)

if (조건식)
{
    // 조건식이 참이라면 진행할 코드
}
else
{
   // 조건식이 거짓이면 진행할 코드
}

 

(3)  else if

else if 문은 if 문의 조건식이 거짓일 때, 새로운 조건식을 사용하여 실행 여부를 결정하는 조건문

else 는 if가 아니면 무조건 이거. 느낌이면

if else 는 if가 아니면 요거,, else if도 아니면 요거,,, 한번 더 거르는 느낌

if (조건식1)
{
    // 조건식1이 참일 경우 실행할 코드
}
else if (조건식2)
{
    // 조건식2가 참일 경우 실행할 코드
}
else
{
    // 모든 조건식이 거짓일 경우 실행할 코드
}

 

나 항상 헷갈리는거 if else 인가 else if 인가..

인데 C#에서는 else if 로 치면 if 만 인식해서 오류가 나는걸로 보아

if else 가 맞는 것 같다. 

은근 이거 잘못 썼다가 제대로 안돌아가는 경우가 많아서 주의해야 할 듯

나만 헷갈려? 흑흑

 

(4) 중첩 조건문

조건문 안에 조건문

and or 이런걸로 해주면 너무 길어지기 때문에

중첩 조건문을 이용해준다

if (itemType == "Weapon")
{
    if (itemLevel == 1)
    {
        // 레벨 1 무기 효과
        Console.WriteLine("공격력이 10 증가했습니다.");
    }
    else if (itemLevel == 2)
    {
        // 레벨 2 무기 효과
        Console.WriteLine("공격력이 20 증가했습니다.");
    }
    else
    {
        // 그 외 무기 레벨
        Console.WriteLine("잘못된 아이템 레벨입니다.");
    }
}

요런식으로 if 중괄호 안에 또 if가 들어있는 것!!! 을 중첩 조건문이라 하는 것 같다.

얼마전에 튜터님 말씀 들어보니 아직은 중첩 3개 이상은 안하는게 좋다고 하셨다.

 

(5) switch 문

변수나 식의 결과에 따라 다른 코드블록을 실행

case문을 이용해 변수나 식의 결과에 따라 실행할 코드를 지정

switch (변수나 식)
{
    case 값1:
        // 값1이 나온 경우 실행되는 코드
        break;
    case 값2:
        // 값2가 나온 경우 실행되는 코드
        break;
    // ...
    default:
        // 모든 case문에 해당하지 않는 경우 실행되는 코드
        break;
}

 

case 1에서 값이 나오면 break!

switch를 벗어나준다는 뜻임!!!!!!

사실 스위치문도 처음 강의로 들었을 땐 무슨 소리일까. 잠시 이해를 못했었는데, 개인프로젝트 하면서 스위치문을 계속

사용하다 보니 이해가 많이 됐다!!! 역시 직접 해보는게 최고야

 

그리고 사실 switch는 어제 TIL에서 텍스트게임 쓰면서 적었었는데, 이런식으로 개념 정리는 안했으니까 또 쓴다.

사실 나는 switch문이 마음에 든다... 왜인진 모르겠음

 

저 switch 문 볼 때 마다 if 문이랑 참 비슷하다 생각했는데, 같은 반복문의 일종이라 생각하면 그렇구나 싶다.

뭔가 느낌이 비슷해서 한가지 작동을 if문으로도 switch문으로도 각각 만들 수 있을 것 같다.

상황에 따라 잘 선택해서 쓰면 될듯!

 

(6) 3항 연산자

if문의 간단한 형태, 조건식의 결과에 따라 두 값을 선택하는 연산자

(조건식) ? 참일 경우 값 : 거짓일 경우 값;
int currentExp = 1200;
int requiredExp = 2000;

# 삼항 연산자
string result = (currentExp >= requiredExp) ? "레벨업 가능" : "레벨업 불가능";
Console.WriteLine(result);


# if else 문
if (currentExp >= requiredExp)
{
    Console.WriteLine("레벨업 가능");
}
else
{
    Console.WriteLine("레벨업 불가능");
}

3항 연산자는 if else와 같다  (근데 이제 짧게 적는?)

음. 이건 솔직히 제대로 이해 못했다.

근데 이것도 프로젝트 하면서 강제로 사용하다 보니 약간은 알겠는 느낌..??

 

조건문 심화

 

(1) 홀수 / 짝수 구분하기

% 나머지 연산을 이용하여 짝수 구분

   Console.Write("번호를 입력하세요");
   int number = int.Parse(Console.ReadLine());

   if (number %2 ==0)
   {
       Console.WriteLine("짝수입니다");
   }
  else
   {
       Console.WriteLine("홀수입니다");
   }

이건 신기했던 점

홀수 짝수 구분을 어떻게 할까? 라고 생각했는데 2로 나눴을 때 나머지가 남는지 아닌지로 구분한다니!!

정말 최고다

나는 저런 간단한거를 생각 못해내서 한참 고민하는데

역시 코딩에도 센스가 있어야 하는듯 (난없음)

 

(2) 등급 출력하기

else if 문에서 사용된 예시를 switch 문으로 변경

int playerScore = 100;
string playerRank = "";

switch (playerScore / 10)
{
	case 10:
	case 9:
		playerRank = "Diamond";
		break;
	case 8:
		playerRank = "Platinum";
		break;
	case 7:
		playerRank = "Gold";
		break;
	case 6:
		playerRank = "Silver";
		break;
	default:
		playerRank = "Bronze";
		break;
}

Console.WriteLine("플레이어의 등급은 " + playerRank + "입니다.");

아까 if 로 하던거를 switch로 처리한거임

사실상 playerScore를 10으로 나눈 몫으로 등급을 처리한거임

99~90 : 9

89~80 : 8  이런식으로 될테니

여기서는 96/10 하면 9.6인데 int 니까 정수만 해서 9로 됨! 

 

여기서 스코어가 100일 때 case가 10이 되는데

case는 위에서 아래로 쭉 읽어나가기 때문에 

case9 위에 10을 붙여주면 그냥 9와 같은 결과로 나옴@@

 

 

(3) 로그인 프로그램

&& 와 || 논리연산자에 대해 다시 확인해봅시다.

string id = "myid";
string password = "mypassword";

Console.Write("아이디를 입력하세요: ");
string inputId = Console.ReadLine();
Console.Write("비밀번호를 입력하세요: ");
string inputPassword = Console.ReadLine();

if (inputId == id && inputPassword == password)
{
    Console.WriteLine("로그인 성공!");
}
else
{
    Console.WriteLine("로그인 실패...");
}

 

(inputId == id && inputPassword == password)

입력한 id와 id / 입력한 패스워드와 패스워드가 둘 다 같아야 && 로그인 성공!

else 아닐 시 로그인 실패.

 

(4) 알파벳 판별 프로그램

입력한 문자가 알파벳인지 여부를 판단

Console.Write("문자를 입력하세요: ");
char input = Console.ReadLine()[0];

if (input >= 'a' && input <= 'z' || input >= 'A' && input <= 'Z')
{
    Console.WriteLine("알파벳입니다.");
}
else
{
    Console.WriteLine("알파벳이 아닙니다.");
}

인풋이 a보다 크거나 같고, z보다 작거나 같을때 ||(or) A보다 크거나같고 Z보다 작거나 같을때

알파벳입니다

알파벳의 대소 구분은 알파벳 순서로 하는듯

 

else 아닐시 알파벳아님

 

알파벳의 대소구분을 뭘로 하는지 궁금했는데 알파벳 순서로 한다니 신기하다!

그런거는 자동으로 인식을 하는건가? 

역시 컴퓨터는 똑똑해

 

 


 

 

조건문은 간단하지만.. 생각할수록 어려운 친구였다.

코딩을 안해봤을 땐 약간 코딩 밈? 그런거에서만 봐서

if 어쩌구 많길래 간단한건 줄 알았는데 .. 아니잖아@@@@@@!!!!

 

다음주부터는 팀프로젝트라는데 진짜 걱정이다

처음인것도 처음인데 내가 너무 못해서 팀원들한테 민폐가 될까봐.. 으아아

팀프로젝트는 진짜 밤 새서라도 해내야지... ㅎ

편의점에 핫식스 2+1 하던데 주말에 가서 좀 쟁여와야 할 것 같다.