C 언어
복잡한 if-else 체인을 깔끔하고 읽기 쉬운 switch 문으로 대체하는 방법을 실전 예제와 함께 알아봅니다.
switch 문은 단일 식을 평가하여 일치하는 case 블록을 실행함으로써 의사결정을 단순화합니다. 긴 if-else 사다리보다 간결하고 유지보수하기 쉽습니다.
기본 구조:
switch (variableOrExpression) {
case value1:
// value1일 때 코드
break;
case value2:
// value2일 때 코드
break;
// …
default:
// 어떤 case도 일치하지 않을 때 코드
}
식과 일치하는 case가 실행되며, break를 만나면 switch를 빠져나갑니다. 일치하는 case가 없으면 default 블록이 실행되어 else 역할을 합니다.
break 없이 실행되면 "fall through"되어 후속 case로 이어지는데, 이는 버그 원인이 되곤 합니다. break 문에 대한 깊은 내용은 공식 문서의 C# break 문을 참조하세요.
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch)) {
case 'a':
Console.WriteLine("Vowel");
break;
case 'e':
Console.WriteLine("Vowel");
break;
case 'i':
Console.WriteLine("Vowel");
break;
case 'o':
Console.WriteLine("Vowel");
break;
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
실행 결과:
Enter an alphabet X Not a vowel
사용자 입력을 소문자로 변환하여 모음 case와 매칭. 모음이 아니면 default 메시지 출력.
모든 모음 case가 같은 동작을 하므로 그룹화할 수 있습니다:
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char ch;
Console.WriteLine("Enter an alphabet");
ch = Convert.ToChar(Console.ReadLine());
switch(Char.ToLower(ch)) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
Console.WriteLine("Vowel");
break;
default:
Console.WriteLine("Not a vowel");
break;
}
}
}
}
출력은 동일하지만 코드가 훨씬 깔끔합니다.
switch 문은 특정 데이터 타입만 지원합니다:
using System;
namespace Conditional {
class SwitchCase {
public static void Main(string[] args) {
char op;
double first, second, result;
Console.Write("Enter first number: ");
first = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter second number: ");
second = Convert.ToDouble(Console.ReadLine());
Console.Write("Enter operator (+, -, *, /): ");
op = (char)Console.Read();
switch(op) {
case '+':
result = first + second;
Console.WriteLine("{0} + {1} = {2}", first, second, result);
break;
case '-':
result = first - second;
Console.WriteLine("{0} - {1} = {2}", first, second, result);
break;
case '*':
result = first * second;
Console.WriteLine("{0} * {1} = {2}", first, second, result);
break;
case '/':
result = first / second;
Console.WriteLine("{0} / {1} = {2}", first, second, result);
break;
default:
Console.WriteLine("Invalid Operator");
break;
}
}
}
}
실행 예:
Enter first number: -13.11 Enter second number: 2.41 Enter operator (+, -, *, /): * -13.11 * 2.41 = -31.5951
두 피연산자와 연산자를 입력받아 switch로 연산 수행. 입력은 ReadLine()과 Read() 사용. 입출력詳細は C# 기본 입출력 참조.
if-else 체인으로 대체 가능하지만, switch는 의도가 명확하고 이산 값에 대해 더 빠른 실행을 제공합니다.
C 언어
반복문은 코드 블록을 여러 번 실행하게 합니다. C는 3가지 기본 반복문과 루프 제어문을 제공합니다. 상황별 최적 선택과 패턴을 익히세요. 3대 반복문 비교 반복문조건 검사 시점최소 실행 횟수적합한 상황 while루프 진입 전 (사전 검사)0회반복 횟수 모름, 조건 기반 for루프 진입 전 (사전 검사)0회횟수 정해짐, 카운터 필요 do-while루프 실행 후 (사후 검사)1회최소 1회 실행 보장, 메뉴 등 while 문 while (조건) { // 본문 } 패턴: 센티널 제어 루프 int sum = 0, input
같은 코드 블록을 여러 번 실행해야 할 상황이 있습니다. 일반적으로 문장은 순차적으로 실행되지만, 프로그래밍 언어는 더 복잡한 실행 경로를 위한 제어 구조를 제공합니다. 반복문(Loop Statement)은 문장이나 문장 그룹을 여러 번 실행할 수 있게 하며, 일반적인 형태는 다음과 같습니다. C# 반복문 종류 번호반복문 타입 및 설명 1while 루프조건이 참인 동안 문장/문장 그룹을 반복합니다. 루프 본문 실행 전 조건을 테스트합니다. 2for 루프문장