1. if else 문
프로그램이 외부 상황이 어떻게 바뀌든 항상 똑같은 일만 한다면 별로 쓸모가 없겠지. 프로그램은 다양한 상황에 맞춰서 어떤 때는 이걸 하고, 또 어떤 때는 저걸 할 수 있어야 해.
C#에서는 이걸 조건문이라는 특별한 키워드로 구현해. 조건의 참/거짓에 따라 서로 다른 명령 블록을 실행할 수 있게 해주는 거야.
조건문은 세 부분으로 이루어져 있어: 조건, 명령1, 그리고 명령2. 조건이 참이면 명령1이 실행되고, 아니면 명령2가 실행돼. 명령들은 절대 동시에 실행되지 않아. 이 문법의 기본 형태는 이래:
if (조건)
명령1;
else
명령2;
if-else
if는 "만약에", else는 "그렇지 않으면"이란 뜻이야. 자연스럽게 말하면 이렇게 쓸 수 있어:
만약에 조건이 참이면,
명령1;
그렇지 않으면
명령2;
if-else 자연어 버전
예시:
//화면에 출력: 너 아직 아이야
int age = 17;
if (age < 18)
Console.WriteLine("너 아직 아이야");
else
Console.WriteLine("넌 이제 어른이야");
//화면에 출력: 따뜻해
int temperature = 5;
if (temperature < 0)
Console.WriteLine("밖에 추워");
else
Console.WriteLine("따뜻해");
//화면에 출력: 운전면허 시험 볼 수 있어
int age = 18;
if (age == 18)
Console.WriteLine("운전면허 시험 볼 수 있어");
else
Console.WriteLine("차 살 돈 모아야 해");
2. 명령 블록
조건이 참이거나 거짓일 때 여러 개의 명령을 실행하고 싶으면, 그 명령들을 명령 블록으로 묶을 수 있어.
명령들을 블록으로 묶으려면 중괄호로 감싸면 돼. 일반적으로 이렇게 써:
{
명령1;
명령2;
명령3;
}
블록 안에는 명령이 몇 개든 들어갈 수 있어. 심지어 0개도 가능해.
if-else와 명령 블록을 같이 쓰는 예시:
//화면에 출력: 너 아직 아이야. 어른한테 말대꾸하지 마
int age = 17;
if (age < 18)
{
Console.WriteLine("너 아직 아이야");
Console.WriteLine("어른한테 말대꾸하지 마");
}
else
{
Console.WriteLine("넌 이제 어른이야");
Console.WriteLine("요즘 젊은이들 참...");
}
//화면에 출력: 따뜻해
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("밖에 추워");
Console.WriteLine("모자 써라");
}
else
Console.WriteLine("따뜻해");
//빈 명령 블록이 실행됨. 화면에 아무것도 안 나옴.
int age = 21;
if (age == 18)
Console.WriteLine("군대 가세요");
else
{
}
3. if 문 간단히 쓰기
else 블록에 코드가 없으면 그냥 생략해도 돼. 그러면 if 문은 이렇게 돼:
if (조건)
명령1;
if
예시:
int age = 19;
if (age >= 18)
{
Console.WriteLine("성인입니다!");
}
어떻게 동작하냐면?
조건이 참이면 코드 블록이 실행돼. 거짓이면 아무 일도 안 일어나고 프로그램은 그냥 다음으로 넘어가.
else 블록이 있긴 한데, 중괄호 안에 아무 명령도 없으면 그냥 빼도 돼. 프로그램 동작엔 아무 차이 없어.
4. 조건 조합하기: else if
가끔은 단순히 "예/아니오"가 아니라 여러 가지 중에서 골라야 할 때가 있어. 이럴 때 else if가 등장하지:
if (조건1)
{
// 조건1이 참이면 실행
}
else if (조건2)
{
// 조건2가 참이고, 조건1은 거짓일 때 실행
}
else
{
// 위 조건들 중 아무것도 아니면 실행
}
예시:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("좋은 아침!");
}
else if (hour < 18)
{
Console.WriteLine("좋은 오후!");
}
else
{
Console.WriteLine("좋은 저녁!");
}
여기서 무슨 일이 일어나냐면?
- 12시 전이면 — 아침.
- 12시부터 18시까지 — 오후.
- 그 이후면 — 저녁.
- 프로그램은 오직 하나만 골라서 실행해! 조건이 맞으면 나머지는 아예 검사도 안 해.
5. 도식적 설명: 분기 다이어그램
이걸 다이어그램으로 그리면 이렇게 돼:
조건이 여러 개일 때는 이렇게:
이거 완전 TRPG에서 갈림길 만나는 거랑 비슷하지? 왼쪽 가면 이거, 오른쪽 가면 저거, 직진하면 또 다른 거!
6. 어떤 조건을 검사할 수 있을까?
if 뒤의 괄호 안에는 논리식이 들어가야 해 — 결과가 true 아니면 false가 나오는 거지.
주요 비교 연산자:
| 연산자 | 의미 | 예시 |
|---|---|---|
| == | 같다 | x == 5 |
| != | 같지 않다 | x != 10 |
| > | 크다 | x > 0 |
| < | 작다 | age < 18 |
| >= | 크거나 같다 | score >= 100 |
| <= | 작거나 같다 | count <= 50 |
조건 예시:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
참고: = (하나)은 대입이고, == (두 개)은 비교야. 이거 헷갈려서 실수하는 초보 진짜 많아! 만약 이렇게 쓰면:
if (x = 5) // 오류!
— 컴파일러가 바로 에러 내줄 거야. 아주 잘하는 거지.
7. 조건에서 문자열 다루기
숫자뿐만 아니라 문자열도 비교할 수 있어:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("로그인 성공!");
}
주의: C#에서 ==로 문자열 비교하면 일반적인 경우엔 문자열 내용(값) 자체를 비교하니까 잘 동작해. (객체 참조만 비교하는 게 아님) 문자열 메서드랑 로케일 관련 특성은 나중에 더 자세히 다룰 거야.
8. 팁과 주의사항:
중괄호: 꼭 써야 할까?
if나 else 뒤에 명령이 하나만 있으면 중괄호 생략해도 돼:
if (age > 18)
Console.WriteLine("18살 넘었네!");
// 하지만 항상 중괄호 쓰는 게 더 안전해:
if (age > 18)
{
Console.WriteLine("18살 넘었네!");
}
팁: 항상 중괄호 쓰는 습관 들여. 코드 늘릴 때 실수 방지에 최고야.
논리적 실수: 조건문 조심!
이렇게 쓰면:
if (age > 18)
Console.WriteLine("18살 넘었네!");
Console.WriteLine("환영합니다!");
컴파일러는 이렇게 읽어:
if (age > 18)
{
Console.WriteLine("18살 넘었네!");
}
Console.WriteLine("환영합니다!");
두 번째 줄은 항상 실행돼 — 둘 다 "분기" 안에 넣으려면 중괄호 꼭 써야 해.
GO TO FULL VERSION