프로그래밍 언어/C#

C# 제어문 마스터하기: if문, for loop, while loop 완벽 가이드 - C# 5

eco7T 2024. 9. 2. 09:34
반응형

이번에는 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#의 주요 제어문들에 대해 자세히 살펴보았습니다. 이러한 제어문들을 적절히 활용하면 프로그램의 흐름을 효과적으로 제어할 수 있습니다. 

반응형