C# 제어문 마스터하기: if, switch, for, while 루프 🚀

콘텐츠 대표 이미지 - C# 제어문 마스터하기: if, switch, for, while 루프 🚀

 

 

안녕하세요, 코딩 열정 가득한 여러분! 오늘은 C# 프로그래밍의 핵심 중 하나인 제어문에 대해 깊이 있게 알아보려고 해요. 제어문은 프로그램의 흐름을 조절하는 중요한 요소로, 이를 잘 이해하고 활용하면 여러분의 코딩 실력이 한층 더 업그레이드될 거예요! 😎

우리가 오늘 살펴볼 주요 제어문들은 다음과 같아요:

  • ✅ if 문: 조건에 따라 코드 실행 여부를 결정해요
  • ✅ switch 문: 여러 조건을 간편하게 처리할 수 있어요
  • ✅ for 루프: 정해진 횟수만큼 코드를 반복해요
  • ✅ while 루프: 조건이 참인 동안 계속해서 코드를 실행해요

이 글을 통해 여러분은 마치 재능넷에서 C# 전문가의 강의를 듣는 것처럼 제어문의 세계로 빠져들게 될 거예요. 자, 그럼 우리 함께 C#의 제어문 마스터가 되어볼까요? 🏆

1. if 문: 조건부 실행의 마법 🧙‍♂️

if 문은 C#에서 가장 기본적이면서도 강력한 제어문 중 하나예요. 특정 조건이 참일 때만 코드 블록을 실행하고 싶을 때 사용하죠. 마치 우리가 일상생활에서 결정을 내릴 때와 비슷해요!

if 문의 기본 구조:


if (조건)
{
    // 조건이 참일 때 실행할 코드
}
    

예를 들어, 우리가 날씨 앱을 만든다고 생각해볼까요? 기온이 30도 이상이면 "더워요!"라고 알려주는 코드를 작성해볼게요.


int temperature = 32;
if (temperature >= 30)
{
    Console.WriteLine("더워요! 시원한 곳을 찾아보세요.");
}
  

이 코드를 실행하면 콘솔에 "더워요! 시원한 곳을 찾아보세요."라고 출력될 거예요. 왜냐하면 temperature 변수의 값이 32로, 조건 (temperature >= 30)이 참이기 때문이죠.

if-else 문: 두 가지 선택지

때로는 조건이 참일 때와 거짓일 때 각각 다른 동작을 수행해야 할 때가 있어요. 이럴 때 if-else 문을 사용합니다.

if-else 문의 구조:


if (조건)
{
    // 조건이 참일 때 실행할 코드
}
else
{
    // 조건이 거짓일 때 실행할 코드
}
    

우리의 날씨 앱 예제를 조금 더 발전시켜볼까요?


int temperature = 25;
if (temperature >= 30)
{
    Console.WriteLine("더워요! 시원한 곳을 찾아보세요.");
}
else
{
    Console.WriteLine("날씨가 쾌적해요. 즐거운 하루 되세요!");
}
  

이 코드를 실행하면 "날씨가 쾌적해요. 즐거운 하루 되세요!"라고 출력될 거예요. temperature가 25로 30보다 작기 때문에 else 블록의 코드가 실행되는 거죠.

else if: 여러 조건 처리하기

때로는 두 가지 이상의 조건을 검사해야 할 때가 있어요. 이럴 때 else if를 사용하면 편리해요.

else if 문의 구조:


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

우리의 날씨 앱을 더욱 세밀하게 만들어볼까요?


int temperature = 18;
if (temperature >= 30)
{
    Console.WriteLine("더워요! 시원한 곳을 찾아보세요.");
}
else if (temperature >= 20 && temperature < 30)
{
    Console.WriteLine("날씨가 쾌적해요. 즐거운 하루 되세요!");
}
else
{
    Console.WriteLine("쌀쌀해요. 따뜻하게 입고 나가세요.");
}
  

이 코드를 실행하면 "쌀쌀해요. 따뜻하게 입고 나가세요."라고 출력될 거예요. temperature가 18로 첫 번째와 두 번째 조건을 모두 만족하지 않기 때문이에요.

중첩된 if 문: 복잡한 조건 처리하기

때로는 조건 안에 또 다른 조건을 넣어야 할 때가 있어요. 이를 중첩된 if 문이라고 해요.

중첩된 if 문의 예:


int temperature = 28;
bool isRaining = true;

if (temperature >= 25)
{
    if (isRaining)
    {
        Console.WriteLine("덥고 비가 와요. 우산을 챙기세요!");
    }
    else
    {
        Console.WriteLine("덥지만 날씨가 맑아요. 자외선 차단제를 바르세요!");
    }
}
else
{
    if (isRaining)
    {
        Console.WriteLine("쌀쌀하고 비가 와요. 우산과 외투를 챙기세요!");
    }
    else
    {
        Console.WriteLine("쌀쌀하지만 날씨가 맑아요. 가벼운 외투를 입으세요.");
    }
}
    

이 코드는 온도와 비 오는 여부를 모두 고려해서 적절한 메시지를 출력해요. 실행하면 "덥고 비가 와요. 우산을 챙기세요!"라고 나올 거예요.

삼항 연산자: 간단한 if-else 대체하기

매우 간단한 if-else 문은 삼항 연산자로 대체할 수 있어요. 이는 코드를 더 간결하게 만들어줍니다.

삼항 연산자의 구조:

결과 = (조건) ? 참일 때의 값 : 거짓일 때의 값;

예를 들어, 온도에 따라 "덥다" 또는 "춥다"를 출력하는 코드를 삼항 연산자로 작성해볼까요?


int temperature = 28;
string feeling = (temperature >= 25) ? "덥다" : "춥다";
Console.WriteLine($"지금은 {feeling}!");
  

이 코드를 실행하면 "지금은 덥다!"라고 출력될 거예요.

if 문은 C# 프로그래밍에서 정말 중요한 요소예요. 여러분이 재능넷에서 C# 관련 서비스를 제공하거나 받을 때, 이 기본적인 제어 구조를 잘 이해하고 있다면 훨씬 더 효과적으로 코드를 작성하고 이해할 수 있을 거예요.

다음으로는 switch 문에 대해 알아볼 텐데요, 이는 여러 조건을 더욱 깔끔하게 처리할 수 있게 해주는 강력한 도구예요. 계속해서 C# 제어문의 세계를 탐험해볼까요? 💪

2. switch 문: 다중 조건의 마법사 🧙‍♀️

switch 문은 여러 가지 경우의 수를 간편하게 처리할 수 있게 해주는 제어문이에요. 특히 하나의 변수나 표현식에 대해 여러 가지 경우를 비교해야 할 때 매우 유용하죠. if-else 문의 연속보다 더 깔끔하고 읽기 쉬운 코드를 만들 수 있어요.

switch 문의 기본 구조:


switch (변수 또는 표현식)
{
    case 값1:
        // 값1에 해당하는 코드
        break;
    case 값2:
        // 값2에 해당하는 코드
        break;
    // ... 더 많은 case들 ...
    default:
        // 어떤 case에도 해당하지 않을 때의 코드
        break;
}
    

예를 들어, 요일에 따라 다른 메시지를 출력하는 프로그램을 만들어볼까요?


string day = "월요일";
switch (day)
{
    case "월요일":
        Console.WriteLine("월요병을 이겨내세요!");
        break;
    case "화요일":
    case "수요일":
    case "목요일":
        Console.WriteLine("열심히 일하는 평일이에요.");
        break;
    case "금요일":
        Console.WriteLine("불금이에요! 신나게 보내세요.");
        break;
    case "토요일":
    case "일요일":
        Console.WriteLine("주말이에요. 푹 쉬세요.");
        break;
    default:
        Console.WriteLine("올바른 요일을 입력해주세요.");
        break;
}
  

이 코드를 실행하면 "월요병을 이겨내세요!"라고 출력될 거예요. day 변수의 값이 "월요일"이기 때문이죠.

switch 문의 특징

  • 📌 break 문: 각 case 블록의 끝에는 반드시 break 문이 있어야 해요. 이는 해당 case의 실행이 끝났음을 나타내며, 다음 case로 실행이 이어지는 것을 방지해요.
  • 📌 여러 case 묶기: 위 예제에서 볼 수 있듯이, 같은 동작을 하는 여러 case를 한 번에 처리할 수 있어요.
  • 📌 default: 어떤 case에도 해당하지 않을 때 실행되는 부분이에요. 예외 처리나 오류 메시지 출력에 유용해요.

switch 문과 열거형(enum) 함께 사용하기

switch 문은 열거형(enum)과 함께 사용할 때 특히 강력해요. 열거형은 관련된 상수들의 집합을 정의할 때 사용하는 사용자 정의 데이터 형식이에요.


enum Season
{
    Spring,
    Summer,
    Autumn,
    Winter
}

Season currentSeason = Season.Summer;

switch (currentSeason)
{
    case Season.Spring:
        Console.WriteLine("봄이에요. 꽃구경 가세요!");
        break;
    case Season.Summer:
        Console.WriteLine("여름이에요. 시원한 아이스크림 어떠세요?");
        break;
    case Season.Autumn:
        Console.WriteLine("가을이에요. 단풍구경 가세요!");
        break;
    case Season.Winter:
        Console.WriteLine("겨울이에요. 따뜻하게 입으세요!");
        break;
}
  

이 코드를 실행하면 "여름이에요. 시원한 아이스크림 어떠세요?"라고 출력될 거예요.

C# 7.0 이상의 switch 문 개선사항

C# 7.0부터는 switch 문이 더욱 강력해졌어요. 패턴 매칭을 지원하여 더 복잡한 조건도 간단하게 처리할 수 있게 되었죠.

패턴 매칭을 사용한 switch 문 예제:


object item = 5;

switch (item)
{
    case int n when n > 0:
        Console.WriteLine($"{n}은 양수입니다.");
        break;
    case int n when n < 0:
        Console.WriteLine($"{n}은 음수입니다.");
        break;
    case int n:
        Console.WriteLine($"{n}은 0입니다.");
        break;
    case string s:
        Console.WriteLine($"'{s}'은 문자열입니다.");
        break;
    default:
        Console.WriteLine("알 수 없는 타입입니다.");
        break;
}
    

이 코드는 item의 타입과 값에 따라 다른 메시지를 출력해요. 실행하면 "5은 양수입니다."라고 나올 거예요.

switch 식 (C# 8.0 이상)

C# 8.0부터는 switch 식이라는 새로운 기능이 추가되었어요. 이를 사용하면 switch 문을 더욱 간결하게 작성할 수 있죠.


string GetDayType(DayOfWeek day) => day switch
{
    DayOfWeek.Saturday or DayOfWeek.Sunday => "주말",
    _ => "평일"
};

Console.WriteLine(GetDayType(DayOfWeek.Friday));  // 출력: 평일
Console.WriteLine(GetDayType(DayOfWeek.Sunday));  // 출력: 주말
  

이 코드에서 _ 는 default case를 나타내요. 또한 or를 사용해 여러 조건을 한 번에 처리할 수 있어요.

switch 문은 여러 조건을 처리해야 할 때 코드를 깔끔하고 읽기 쉽게 만들어주는 강력한 도구예요. 재능넷에서 C# 프로그래밍 관련 서비스를 제공하거나 받을 때, switch 문을 잘 활용하면 더욱 효율적인 코드를 작성할 수 있을 거예요.

이제 우리는 조건에 따라 코드의 실행을 제어하는 방법을 배웠어요. 하지만 프로그래밍에서는 같은 작업을 여러 번 반복해야 할 때가 많죠. 그럴 때 사용하는 것이 바로 반복문이에요. 다음으로는 C#의 대표적인 반복문인 for 루프에 대해 알아볼까요? 🔄

3. for 루프: 반복의 마법사 🔄

for 루프는 C#에서 가장 많이 사용되는 반복문 중 하나예요. 특정 횟수만큼 코드를 반복해야 할 때 매우 유용하죠. 마치 요리 레시피에서 "5번 저어주세요"라고 하는 것과 비슷해요!

for 루프의 기본 구조:


for (초기화; 조건; 증감)
{
    // 반복할 코드
}
    
  • 📌 초기화: 루프를 시작하기 전에 실행되는 부분. 주로 카운터 변수를 초기화해요.
  • 📌 조건: 각 반복 전에 검사하는 조건. 이 조건이 참일 동안 루프가 계속 실행돼요.
  • 📌 증감: 각 반복이 끝날 때마다 실행되는 부분. 주로 카운터 변수를 증가시키거나 감소시켜요.

간단한 예제로 시작해볼까요? 1부터 5까지 숫자를 출력하는 for 루프를 만들어봐요.


for (int i = 1; i <= 5; i++)
{
    Console.WriteLine(i);
}
  

이 코드를 실행하면 콘솔에 1부터 5까지 숫자가 각각 새 줄에 출력될 거예요.

for 루프의 다양한 활용

for 루프는 단순히 숫자를 세는 것 외에도 다양한 방식으로 활용할 수 있어요. 몇 가지 예를 더 살펴볼까요?

1. 배열의 모든 요소 순회하기


string[] fruits = { "사과", "바나나", "오렌지", "포도", "키위" };
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine($"{i+1}번째 과일: {fruits[i]}");
}
  

이 코드는 fruits 배열의 모든 요소를 순서대로 출력해요.

2. 역순으로 반복하기


for (int i = 5; i > 0; i--)
{
    Console.WriteLine($"카운트다운: {i}");
}
Console.WriteLine("발사!");
  

이 코드는 5부터 1까지 카운트다운을 한 후 "발사!"를 출력해요.

3. 2씩 증가하기


for (int i = 0; i <= 10; i += 2)
{
    Console.WriteLine($"짝수: {i}");
}
  

이 코드는 0부터 10까지의 짝수를 출력해요.

중첩된 for 루프

for 루프 안에 또 다른 for 루프를 넣을 수 있어요. 이를 중첩된 for 루프라고 해요. 2차원 배열을 다루거나 복잡한 패턴을 만들 때 유용하죠.


for (int i = 1; i <= 5; i++)
{
    for (int j = 1; j <= i; j++)
    {
        Console.Write("*");
    }
    Console.WriteLine();
}
  

이 코드를 실행하면 다음과 같은 별 패턴이 출력돼요:

*
**
***
****
*****
  

for 루프와 break, continue

때로는 특정 조건에서 루프를 중단하거나 현재 반복을 건너뛰고 싶을 때가 있어요. 이럴 때 break와 continue 문을 사용할 수 있어요.

break 사용 예:


for (int i = 1; i <= 10; i++)
{
    if (i == 5)
    {
        break;
    }
    Console.WriteLine(i);
}
  

이 코드는 1부터 4까지만 출력하고 루프를 종료해요.

continue 사용 예:


for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0)
    {
        continue;
    }
    Console.WriteLine(i);
}
  

이 코드는 1부터 10까지의 홀수만 출력해요. 짝수일 때는 continue로 인해 다음 반복으로 넘어가버리죠.

for 루프의 응용: 피보나치 수열

for 루프를 사용해 조금 더 복잡한 문제를 해결해볼까요? 피보나치 수열의 처음 10개 항을 계산하는 프로그램을 만들어봐요.


int n1 = 0, n2 = 1, n3;
Console.WriteLine("피보나치 수열의 처음 10개 항:");
Console.Write($"{n1} {n2} ");

for (int i = 2; i < 10; i++)
{
    n3 = n1 + n2;
    Console.Write($"{n3} ");
    n1 = n2;
    n2 = n3;
}
  

이 코드를 실행하면 "0 1 1 2 3 5 8 13 21 34"가 출력돼요. 피보나치 수열의 처음 10개 항이죠!

foreach 루프: 컬렉션을 위한 특별한 for 루프

C#에는 for 루프의 특별한 형태인 foreach 루프가 있어요. 이는 배열이나 컬렉션의 모든 요소를 순회할 때 매우 편리해요.


string[] colors = { "빨강", "주황", "노랑", "초록", "파랑", "남색", "보라" };

foreach (string color in colors)
{
    Console.WriteLine($"무지개 색: {color}");
}
  

이 코드 는 colors 배열의 모든 요소를 순회하면서 각 색상을 출력해요. foreach 루프는 for 루프보다 더 간결하고 읽기 쉬운 코드를 만들어줘요.

for 루프는 C# 프로그래밍에서 정말 중요한 도구예요. 재능넷에서 C# 관련 프로젝트를 진행할 때, 데이터를 처리하거나 반복적인 작업을 수행해야 하는 경우가 많을 거예요. 이럴 때 for 루프를 잘 활용하면 효율적이고 깔끔한 코드를 작성할 수 있답니다.

이제 우리는 특정 횟수만큼 코드를 반복하는 방법을 배웠어요. 하지만 때로는 반복 횟수를 미리 알 수 없고, 특정 조건이 만족될 때까지 계속 반복해야 할 때가 있죠. 이럴 때 사용하는 것이 바로 while 루프예요. 다음 섹션에서 while 루프에 대해 자세히 알아볼까요? 🔄

4. while 루프: 조건부 반복의 마법사 🔁

while 루프는 특정 조건이 참인 동안 계속해서 코드 블록을 반복 실행하는 제어문이에요. for 루프와 달리, 반복 횟수를 미리 알 수 없을 때 특히 유용하죠. 마치 "배가 부를 때까지 계속 먹어!"라고 하는 것과 비슷해요.

while 루프의 기본 구조:


while (조건)
{
    // 반복할 코드
}
    

조건이 참인 동안 코드 블록이 계속해서 실행돼요. 조건이 거짓이 되면 루프가 종료되고 프로그램은 while 루프 다음 코드로 넘어가요.

while 루프의 간단한 예제

1부터 5까지의 숫자를 출력하는 while 루프를 만들어볼까요?


int i = 1;
while (i <= 5)
{
    Console.WriteLine(i);
    i++;
}
  

이 코드를 실행하면 1부터 5까지의 숫자가 각각 새 줄에 출력돼요.

while 루프의 실제 활용 예제

while 루프는 사용자 입력을 받거나, 파일을 읽거나, 네트워크 연결을 처리할 때 자주 사용돼요. 예를 들어, 사용자가 "종료"라고 입력할 때까지 계속해서 입력을 받는 프로그램을 만들어볼까요?


string input = "";
while (input != "종료")
{
    Console.Write("메시지를 입력하세요 (종료하려면 '종료' 입력): ");
    input = Console.ReadLine();
    if (input != "종료")
    {
        Console.WriteLine($"입력한 메시지: {input}");
    }
}
Console.WriteLine("프로그램을 종료합니다.");
  

이 프로그램은 사용자가 "종료"를 입력할 때까지 계속해서 메시지를 입력받고 출력해요.

do-while 루프: 조건을 나중에 검사하기

while 루프의 변형인 do-while 루프도 있어요. 이 루프는 코드 블록을 최소한 한 번은 실행한 후에 조건을 검사해요.

do-while 루프의 기본 구조:


do
{
    // 반복할 코드
} while (조건);
    

예를 들어, 사용자로부터 1부터 10 사이의 숫자를 입력받는 프로그램을 만들어볼까요?


int number;
do
{
    Console.Write("1부터 10 사이의 숫자를 입력하세요: ");
    number = int.Parse(Console.ReadLine());
} while (number < 1 || number > 10);

Console.WriteLine($"입력한 숫자: {number}");
  

이 프로그램은 사용자가 올바른 범위의 숫자를 입력할 때까지 계속해서 입력을 요구해요.

while 루프와 break, continue

for 루프와 마찬가지로, while 루프에서도 break와 continue를 사용할 수 있어요.

break 사용 예:


int sum = 0;
int i = 1;
while (true)
{
    sum += i;
    if (sum > 100)
    {
        break;
    }
    i++;
}
Console.WriteLine($"1부터 {i}까지의 합이 100을 초과: {sum}");
  

이 코드는 1부터 차례대로 더해가다가 합이 100을 초과하면 루프를 종료해요.

continue 사용 예:


int i = 0;
while (i < 10)
{
    i++;
    if (i % 2 == 0)
    {
        continue;
    }
    Console.WriteLine(i);
}
  

이 코드는 1부터 10까지의 홀수만 출력해요.

while 루프의 주의점: 무한 루프

while 루프를 사용할 때는 무한 루프에 빠지지 않도록 주의해야 해요. 조건이 항상 참이 되어 루프가 끝나지 않는 상황을 무한 루프라고 해요.


// 주의: 이 코드는 무한 루프에 빠집니다!
while (true)
{
    Console.WriteLine("이 메시지는 계속 출력됩니다.");
}
  

무한 루프를 의도적으로 사용하는 경우도 있지만, 대부분의 경우 프로그램의 오류로 인해 발생해요. 항상 루프를 종료할 수 있는 조건이나 break 문을 포함시키는 것이 좋아요.

while 루프의 응용: 최대공약수 찾기

while 루프를 사용해 두 수의 최대공약수를 찾는 프로그램을 만들어볼까요? 이는 유클리드 알고리즘을 사용한 예제예요.


int FindGCD(int a, int b)
{
    while (b != 0)
    {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

int num1 = 48;
int num2 = 18;
int gcd = FindGCD(num1, num2);
Console.WriteLine($"{num1}과 {num2}의 최대공약수: {gcd}");
  

이 프로그램은 48과 18의 최대공약수인 6을 출력할 거예요.

while 루프는 조건에 따라 반복을 제어해야 할 때 매우 유용해요. 재능넷에서 C# 프로그래밍 서비스를 제공하거나 받을 때, 데이터 스트림을 처리하거나 사용자 입력을 받는 등의 작업에서 while 루프를 효과적으로 활용할 수 있을 거예요.

이제 우리는 C#의 주요 제어문들을 모두 살펴봤어요. if 문으로 조건을 처리하고, switch 문으로 다중 조건을 깔끔하게 처리하며, for 루프로 정해진 횟수만큼 반복하고, while 루프로 조건에 따라 반복할 수 있게 되었죠. 이 도구들을 잘 활용하면 다양한 프로그래밍 문제를 효과적으로 해결할 수 있을 거예요. 여러분의 C# 코딩 실력이 한층 더 업그레이드된 것을 축하드려요! 🎉

마무리: C# 제어문 마스터하기 🏆

여러분, 정말 대단해요! 우리는 C#의 핵심 제어문들을 모두 살펴봤어요. 이제 여러분은 프로그램의 흐름을 자유자재로 제어할 수 있는 능력을 갖추게 되었죠. 😊

우리가 배운 내용을 간단히 정리해볼까요?

  • if 문: 조건에 따라 코드 실행 여부를 결정해요.
  • switch 문: 여러 조건을 깔끔하게 처리할 수 있어요.
  • for 루프: 정해진 횟수만큼 코드를 반복해요.
  • while 루프: 조건이 참인 동안 계속해서 코드를 실행해요.

이 제어문들은 마치 레고 블록과 같아요. 이 기본적인 도구들을 조합하면 복잡한 프로그램도 만들 수 있답니다. 여러분이 재능넷에서 C# 관련 프로젝트를 진행하거나 서비스를 제공할 때, 이 제어문들을 적재적소에 활용하면 효율적이고 강력한 프로그램을 만들 수 있을 거예요.

기억하세요, 프로그래밍은 실전이 중요해요. 이론을 배웠다면 이제 직접 코드를 작성해보세요. 작은 프로젝트부터 시작해 점점 규모를 키워나가면 실력이 쑥쑥 늘 거예요. 오류가 나더라도 좌절하지 마세요. 오류를 해결해나가는 과정도 배움의 일부랍니다.

C# 제어문 마스터로 향하는 여러분의 여정을 응원합니다! 화이팅! 💪😄