팀스파르타 코딩

📚 TIL - 2025년 4월 13일 (일) / C# 입문 일지

creator2041 2025. 4. 13. 23:52

🔧 오늘 배운 내용

✅ 조건문과 반복문 1 - 조건문

조건문은 특정 조건에 따라 프로그램의 흐름을 분기하는 제어 구조이다. 조건이 참일 경우에는 특정 코드를 실행하고, 거짓일 경우에는 다른 흐름을 따라간다. 복잡한 판단 로직 구현에 필수적이다.

1. if 문

if 문은 조건이 참일 경우 특정 코드를 실행하는 기본적인 조건문이다. 단일 조건 검사가 가능하며, 가장 간단한 분기 구조다.

int number = 10;
if (number > 0)
{
    Console.WriteLine("양수입니다.");
}

2. else 문

if 문의 조건이 거짓일 경우 실행되는 대체 경로를 정의한다. if 문과 함께 사용되며, 조건이 하나일 때 예외 처리를 위해 사용된다.

int number = -5;
if (number > 0)
{
    Console.WriteLine("양수입니다.");
}
else
{
    Console.WriteLine("0 또는 음수입니다.");
}

3. else if 문

if 문 이후 추가적인 조건을 검사할 때 사용한다. 여러 조건을 순차적으로 검사하여 해당하는 조건의 코드를 실행한다.

int score = 85;
if (score >= 90)
{
    Console.WriteLine("A 학점입니다.");
}
else if (score >= 80)
{
    Console.WriteLine("B 학점입니다.");
}
else
{
    Console.WriteLine("C 학점 이하입니다.");
}

4. 중첩 조건문

if 문 내부에 또 다른 if 문을 포함하는 구조다. 다단계 조건 검사가 필요한 경우 사용되며, 조건이 계층적으로 연결된 경우 적합하다.

int itemLevel = 3; // 아이템 레벨
string itemType = "Weapon"; // 아이템 종류

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

5. switch 문

하나의 변수에 대해 여러 값 중 일치하는 경우를 찾아 실행한다. case 문으로 각 조건을 구분하며, break 문으로 블록을 종료한다.

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




//예제
int day = 3;
switch (day)
{
    case 1:
        Console.WriteLine("월요일입니다.");
        break;
    case 2:
        Console.WriteLine("화요일입니다.");
        break;
    case 3:
        Console.WriteLine("수요일입니다.");
        break;
    default:
        Console.WriteLine("기타 요일입니다.");
        break;
}

6. 삼항 연산자

조건식 ? 참일 때 값 : 거짓일 때 값 형태로 표현하는 간결한 조건 분기 연산자이다. 단순한 조건문을 한 줄로 표현할 수 있어 코드가 간결해진다.

// 삼항 연산자 기본 구조
(조건식) ? 참일 경우 값 : 거짓일 경우 값;

// 예제

int number = 7;
string result = (number % 2 == 0) ? "짝수" : "홀수";
Console.WriteLine(result);

✅ 조건문과 반복문 2 - 조건문 심화 실습

조건문을 응용한 간단한 실습 문제들을 통해 조건 분기 구조를 직접 구현해보며, 실전 감각을 익혔다.

실습 1 - 홀짝 판별

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

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

실습 2 - 등급 출력

int playerScore = 100;
string playerRank = "";

switch (playerScore / 10)
{
    case 10: //이건 몰랐다. case가 밑과 동일하면 내용없이 적어도 되는구나.
    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 + "입니다.");

실습 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("로그인 실패...");
}

실습 4 - 알파벳 판별

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

if (input >= 'a' && input <= 'z' || input >= 'A' && input <= 'Z')
{//오...알파벳 소문자 대문자 따로해야하는거랑, a와 z사이라고 하면 알파벳 인식하는거 처음암.
    Console.WriteLine("알파벳입니다.");
}
else
{
    Console.WriteLine("알파벳이 아닙니다.");
}

✅ 조건문과 반복문 3 - 반복문

반복문은 일정한 명령을 반복해서 실행할 때 사용하는 제어문이다. 대표적으로 for, while, do-while, foreach 반복문이 있으며, 각기 다른 용도와 실행 방식이 있다.

(1) for

for문은 초기화, 조건, 증감식을 한 줄에 작성하여 반복 횟수가 명확할 때 사용하는 반복문이다. 일반적으로 반복 횟수가 명확히 정해져 있을 때 가장 많이 사용된다.

for (초기식; 조건식; 증감식) // for(몇일때, 몇까지, 얼마씩)
{
    // 조건식이 참인 경우 실행되는 코드
}

(2) while

while문은 조건식이 참(true)인 동안 코드 블록을 반복적으로 실행하는 제어문이다. 조건을 먼저 검사하기 때문에 조건이 처음부터 거짓이라면 한 번도 실행되지 않을 수 있다.

// while문 기본 구조
while (조건식)
{
    // 조건이 참인 경우 실행되는 코드
}
// while문 예제
int count = 0;
while (count < 10)
{
    Console.WriteLine("적을 처치했습니다! 남은 적 수: " + (10 - count - 1));
    count++;
}
Console.WriteLine("축하합니다! 게임에서 승리하셨습니다!");
```csharp
int count = 0;
while (count < 5)
{
    Console.WriteLine("카운트: " + count);
    count++;
}

(3) for vs while

두 반복문의 구조는 유사하지만, 사용 목적에 따라 선택적으로 사용된다. for문은 반복 횟수가 명확할 때 적합하고, while문은 조건 기반 반복에 유리하다.

/ for문을 이용한 합계 계산
int sum = 0;
for (int i = 1; i <= 5; i++)
{
    sum += i;
}
Console.WriteLine("1부터 5까지의 합은 " + sum + "입니다.");

// while문을 이용한 동일 로직
sum = 0;
int j = 1;
while (j <= 5)
{
    sum += j;
    j++;
}
Console.WriteLine("1부터 5까지의 합은 " + sum + "입니다.");

(4) do-while

do-while문은 조건을 나중에 검사하는 반복문으로, 조건이 참이든 거짓이든 최소 한 번은 실행된다. 사용자 입력, 메뉴 반복 등에 자주 쓰인다.

//do-while문 기본 구조
do
{
    // 조건이 참이든 거짓이든 최초 1회 실행
} while (조건식);
// 예제: 0보다 큰 수 입력받기
int number;
do
{
    Console.Write("0보다 큰 수 입력: ");
    number = int.Parse(Console.ReadLine());
} while (number <= 0);

(5) foreach

컬렉션이나 배열의 요소를 하나씩 순회할 때 사용. 인덱스를 직접 다루지 않아도 되어 편리함.

//기본구조
foreach (자료형 변수 in 배열 또는 컬렉션)
{
    // 배열 또는 컬렉션의 모든 요소에 대해 반복적으로 실행되는 코드
}



//예시
string[] inventory = { "검", "방패", "활", "화살", "물약" };

foreach (string item in inventory)
{
    Console.WriteLine(item);
}

(6) 중첩 반복문

반복문 내부에 또 다른 반복문을 넣는 구조로, 2차원 배열 처리 등에서 활용됨.

for (int i = 1; i <= 3; i++)
{
    for (int j = 1; j <= 2; j++)
    {
        Console.WriteLine($"i: {i}, j: {j}");
    }
}

(7) break & continue

  • break: 반복문을 강제로 종료함.
  • continue: 다음 반복으로 넘어감.
for (int i = 0; i < 5; i++)
{
    if (i == 3) continue; // 3은 건너뜀
    if (i == 4) break;    // 4에서 반복 종료
    Console.WriteLine(i);
}

💭 오늘의 회고

오늘은 조건문과 반복문의 구조를 정리하고, 실습을 통해 익혔다. 단순히 'if'와 'for'로 끝나는 줄 알았던 제어문들이 사실은 각각 목적과 상황에 따라 세세하게 나뉘어 있음을 깨달았다.

  • if, else, else if, switch 같은 조건문은 프로그램의 흐름을 조절하는 데 있어 매우 강력하며, 특히 switch 문에서 case 10: case 9:와 같이 여러 조건을 하나로 묶을 수 있는 구조는 신선하게 다가왔다.
  • while, do-while, for, foreach 등의 반복문은 형태는 달라도 결국 '조건을 기준으로 반복한다'는 공통점을 가지고 있다는 걸 직접 구현해보며 이해했다.
  • 반복문마다 장단점이 있다는 것을 깨달았고, 특히 foreach는 배열 순회에 직관적이었고, do-while은 무조건 1회 실행되는 특징이 기억에 남았다.

실습 예제를 직접 작성하며 '조건'과 '반복'이 실제 어떤 상황에 쓰일 수 있는지 체감할 수 있었고, 특히 로그인 프로그램과 아이템 판별 예제는 실무와 게임 로직 양쪽에서 매우 자주 쓰일 법한 구조라 기억해두고 싶다.

오늘 하루, 코드를 머리가 아니라 손으로 써보는 게 얼마나 중요한지를 다시 느꼈다. 혼자 보면 놓칠 수 있었던 구조적인 포인트들도 배운 내용을 정리하고 복기하며 한 번 더 깊게 이해할 수 있었다.

📌 내일 학습 계획

  • 배열의 개념과 선언 방법 학습
  • 배열을 활용한 기초 반복 처리 예제 연습
  • 배열과 반복문을 함께 사용하는 방식 익히기
  • foreach 문과 배열 활용 심화 실습
  • 문자열과 배열의 관계, 문자 단위 접근 연습
  • 간단한 배열 기반 문제 해결 실습 예정 (최대값, 합계, 평균 등)

이상, 2025년 4월 13일의 TIL 정리 끝!