🔧 오늘 배운 내용
✅ 조건문과 반복문 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 정리 끝!
'팀스파르타 코딩' 카테고리의 다른 글
| 📚 TIL - 2025년 4월 15일 (월) / C# 객체지향 기본 (0) | 2025.04.15 |
|---|---|
| 📚 내일의 학습 목표 - 클래스와 객체 (C#) (0) | 2025.04.14 |
| 📚 TIL - 2025년 4월 14일 (월) / C# 입문 일지 (배열, 컬렉션, 메서드, 구조체) (0) | 2025.04.14 |
| 📚 TIL - 2025년 4월 12일 (토) / C# 입문 일지 (0) | 2025.04.12 |
| C# 객체 지향 프로그래밍(OOP) (0) | 2025.03.19 |