이번에는 C# 프로그래밍의 제어문에 대해 전체적으로 살펴보겠습니다. 주요 제어문에 대해서 실제로 적용 가능한 예시 코드를 통해 설명하여 실제 코딩에서 올바른 제어문 작성을 할 수 있도록 정리해 보겠습니다.
C# 제어문
C#에서 제어문은 프로그램의 실행 흐름을 제어하는 중요한 요소입니다. 제어문을 사용하면 조건에 따라 코드를 실행하거나 특정 코드 블록을 반복할 수 있습니다. 이 학습서에서는 C#의 주요 제어문들을 자세히 살펴보고, 각각의 사용법과 예시를 통해 실제 적용 방법을 살펴보겠습니다.
if 문
if 문은 가장 기본적인 조건문으로, 특정 조건이 참(true)일 때 코드 블록을 실행합니다.
if (조건)
{
// 조건이 참일 때 실행될 코드
}
if-else 문
if-else 문을 사용하면 조건이 거짓(false)일 때 실행할 코드도 지정할 수 있습니다.
if (조건)
{
// 조건이 참일 때 실행될 코드
}
else
{
// 조건이 거짓일 때 실행될 코드
}
else if 문
여러 조건을 검사해야 할 때는 else if 문을 사용합니다.
if (조건1)
{
// 조건1이 참일 때 실행될 코드
}
else if (조건2)
{
// 조건1이 거짓이고 조건2가 참일 때 실행될 코드
}
else
{
// 모든 조건이 거짓일 때 실행될 코드
}
다음은 학생의 점수에 따라 등급을 부여하는 예시입니다.
using System;
class Program
{
static void Main()
{
Console.Write("학생의 점수를 입력하세요: ");
int score = Convert.ToInt32(Console.ReadLine());
string grade;
if (score >= 90)
{
grade = "A";
}
else if (score >= 80)
{
grade = "B";
}
else if (score >= 70)
{
grade = "C";
}
else if (score >= 60)
{
grade = "D";
}
else
{
grade = "F";
}
Console.WriteLine($"학생의 등급은 {grade}입니다.");
}
}
이 예시에서는 사용자로부터 점수를 입력받아 해당 점수에 따른 등급을 출력합니다. 90점 이상은 A, 80점 이상은 B, 70점 이상은 C, 60점 이상은 D, 그 미만은 F로 등급이 매겨집니다.
switch 문
switch 문은 여러 가지 경우(case)에 따라 다른 코드를 실행해야 할 때 사용합니다. if-else 문의 연속보다 가독성이 좋고 효율적인 경우가 많습니다.
switch (변수)
{
case 값1:
// 변수가 값1일 때 실행될 코드
break;
case 값2:
// 변수가 값2일 때 실행될 코드
break;
// ... 추가 case들 ...
default:
// 어떤 case에도 해당하지 않을 때 실행될 코드
break;
}
예시 다음은 요일에 따라 다른 메시지를 출력하는 예시입니다.
using System;
class Program
{
static void Main()
{
Console.Write("요일을 입력하세요 (월~일): ");
string day = Console.ReadLine();
switch (day.ToLower())
{
case "월":
Console.WriteLine("월요일입니다. 한 주의 시작이에요!");
break;
case "화":
Console.WriteLine("화요일입니다. 힘내세요!");
break;
case "수":
Console.WriteLine("수요일입니다. 절반 왔어요!");
break;
case "목":
Console.WriteLine("목요일입니다. 주말이 다가오고 있어요.");
break;
case "금":
Console.WriteLine("금요일입니다. 주말이 코앞이에요!");
break;
case "토":
case "일":
Console.WriteLine("주말입니다. 즐거운 휴식 되세요!");
break;
default:
Console.WriteLine("올바른 요일을 입력해주세요.");
break;
}
}
}
이 예시에서는 사용자가 입력한 요일에 따라 다른 메시지를 출력합니다. 'ToLower()' 메서드를 사용하여 입력된 문자열을 소문자로 변환함으로써 대소문자 구분 없이 처리할 수 있습니다. 또한, 토요일과 일요일의 경우 같은 메시지를 출력하도록 두 개의 case를 연속으로 사용했습니다.
for 루프
for 루프는 특정 횟수만큼 코드 블록을 반복 실행할 때 사용합니다. 주로 배열이나 컬렉션의 요소를 순회할 때 많이 사용됩니다.
for (초기화; 조건; 증감)
{
// 반복 실행될 코드
}
- 초기화: 루프를 시작하기 전에 한 번만 실행됩니다. 주로 카운터 변수를 초기화합니다.
- 조건: 각 반복 전에 평가되며, 이 조건이 참인 동안 루프가 계속됩니다
- 증감: 각 반복 후에 실행됩니다. 주로 카운터 변수를 증가 또는 감소시킵니다.
다음은 1부터 10까지의 숫자를 출력하는 예시입니다.
using System;
class Program
{
static void Main()
{
Console.WriteLine("1부터 10까지의 숫자를 출력합니다:");
for (int i = 1; i <= 10; i++)
{
Console.Write($"{i} ");
}
Console.WriteLine(); // 줄 바꿈
}
}
이 예시에서는 변수 i를 1로 초기화하고, i가 10 이하일 때까지 루프를 반복하며, 매 반복마다 i를 1씩 증가시킵니다. 각 반복에서 현재의 i 값을 출력합니다.
while 루프
while 루프는 특정 조건이 참인 동안 코드 블록을 반복 실행합니다. 반복 횟수를 미리 알 수 없을 때 유용합니다.
while (조건)
{
// 조건이 참인 동안 반복 실행될 코드
}
다음은 사용자가 'exit'를 입력할 때까지 메시지를 계속 출력하는 예시입니다.
using System;
class Program
{
static void Main()
{
string input = "";
while (input.ToLower() != "exit")
{
Console.Write("메시지를 입력하세요 ('exit' 입력 시 종료): ");
input = Console.ReadLine();
if (input.ToLower() != "exit")
{
Console.WriteLine($"입력한 메시지: {input}");
}
}
Console.WriteLine("프로그램을 종료합니다.");
}
}
이 코드에서는 사용자가 'exit'를 입력할 때까지 계속해서 입력을 받고 그 입력을 출력합니다.
'ToLower()' 메소드를 사용하여 대소문자 구분 없이 'exit'를 처리합니다.
do-while 루프
do-while 루프는 while 루프와 비슷하지만, 조건을 검사하기 전에 코드 블록을 최소한 한 번은 실행합니다.
do
{
// 최소한 한 번은 실행되고, 이후 조건이 참인 동안 반복 실행될 코드
} while (조건);
다음은 1부터 시작하여 사용자가 입력한 숫자까지의 합을 계산하는 예시입니다.
using System;
class Program
{
static void Main()
{
int sum = 0;
int number;
do
{
Console.Write("양의 정수를 입력하세요: ");
number = Convert.ToInt32(Console.ReadLine());
if (number <= 0)
{
Console.WriteLine("양의 정수를 입력해주세요.");
}
} while (number <= 0);
for (int i = 1; i <= number; i++)
{
sum += i;
}
Console.WriteLine($"1부터 {number}까지의 합은 {sum}입니다.");
}
}
do-while 루프를 사용하여 사용자로부터 올바른 입력(양의 정수)을 받을 때까지 반복합니다. 그 후 for 루프를 사용하여 1부터 입력받은 숫자까지의 합을 계산합니다.
foreach 루프
foreach 루프는 배열이나 컬렉션의 각 요소를 순회할 때 사용합니다. for 루프보다 간단하고 가독성이 좋습니다.
foreach (변수타입 변수 in 배열또는컬렉션)
{
// 각 요소에 대해 실행될 코드
}
다음은 문자열 배열의 각 요소를 출력하는 예시입니다.
using System;
class Program
{
static void Main()
{
string[] fruits = { "사과", "바나나", "오렌지", "포도", "키위" };
Console.WriteLine("과일 목록:");
foreach (string fruit in fruits)
{
Console.WriteLine($"- {fruit}");
}
}
}
이 예시에서는 foreach 루프를 사용하여 fruits 배열의 각 요소를 순회하며 출력합니다. 각 반복에서 현재 요소가 fruit 변수에 할당됩니다.
break와 continue 문
break와 continue 문은 루프의 흐름을 제어하는 데 사용됩니다.
- break 문은 현재 루프를 즉시 종료하고 루프 다음 코드로 이동합니다.
- continue 문은 현재 반복을 중단하고 다음 반복으로 즉시 이동합니다.
다음은 1부터 20까지의 숫자 중 3의 배수를 출력하되, 첫 번째 15는 건너뛰는 예시입니다.
using System;
class Program
{
static void Main()
{
Console.WriteLine("1부터 20까지의 숫자 중 3의 배수 (첫 번째 15는 제외):");
bool firstFifteenSkipped = false;
for (int i = 1; i <= 20; i++)
{
if (i % 3 == 0)
{
if (i == 15 && !firstFifteenSkipped)
{
firstFifteenSkipped = true;
continue; // 첫 번째 15를 건너뜁니다.
}
Console.Write($"{i} ");
}
if (i > 15 && firstFifteenSkipped)
{
break; // 15 이후의 첫 번째 3의 배수를 출력한 후 루프를 종료합니다.
}
}
Console.WriteLine(); // 줄 바꿈
}
}
이 예시에서는 1부터 20까지의 숫자를 반복하면서 다음과 같은 작업을 수행합니다.
- 3의 배수인 경우에만 출력합니다 (`if (i % 3 == 0)`).
- 첫 번째 15를 만났을 때, `continue` 문을 사용하여 해당 숫자를 건너뜁니다.
- 15 이후의 첫 번째 3의 배수를 출력한 후, `break` 문을 사용하여 루프를 종료합니다.
이 코드를 실행하면 다음과 같은 출력을 얻게 됩니다.
1부터 20까지의 숫자 중 3의 배수 (첫 번째 15는 제외):
3 6 9 12 18
결론 지금까지 C#의 주요 제어문들에 대해 자세히 살펴보았습니다. 이러한 제어문들을 적절히 활용하면 프로그램의 흐름을 효과적으로 제어할 수 있습니다.
'프로그래밍 언어 > C#' 카테고리의 다른 글
메서드 오버로딩으로 C# 코드 가독성 향상하기 - C#7 (0) | 2024.09.10 |
---|---|
C# 메서드 개념과 구조, void, return, 매개변수 구조 - C# 6 (0) | 2024.09.05 |
C# 연산자와 표현식 입문자를 위한 산술, 비교, 논리 및 람다 예제 - C# 4 (0) | 2024.08.27 |
C# 변수와 데이터 타입 종류, 선언과 초기화 방법 - C# 3 (0) | 2024.08.23 |
Visual Studio와 .NET SDK로 C# 개발환경 설정 및 첫 번째 프로젝트 만들기 - C# 2 (0) | 2024.08.19 |