-
[C# 개념] 5.1 분기문Anna belly belly hard/C# 2023. 7. 10. 16:38반응형
- 분기문 : 프로그램의 흐름을 조건에 따라 여러 갈래로 나누는 흐름 제어 구문
- C# 에서는 if 문과 switch 문 제공
5.1.1 if,else,else if
using System; namespace IfElse { class MainApp { static void Main(string[] args) { Console.WriteLine("숫자를 입력하세요 : "); string input = Console.ReadLine(); // console.readline()은 사용자로 부터 문자열을 입력 받아 그결과를 반환하는 기능을 합니다. int number = Int32.Parse(input); if (number < 0) Console.WriteLine("음수"); else if (number > 0) Console.WriteLine("양수"); else Console.WriteLine("0"); if (number % 2 == 0) Console.WriteLine("짝수"); else Console.WriteLine("홀수"); } } }
5.1.2 if 문 중첩해서 사용하기
using System; namespace IfIf { class MainApp { static void Main(string[] args) { Console.WriteLine("숫자를 입력하세요. :"); string input = Console.ReadLine(); int number = Convert.ToInt32(input); if(number>0 ) { if(number %2 == 0 ) { Console.WriteLine("0보다 큰 짝수."); } else { Console.WriteLine("0보다 큰 홀수"); } } else { Console.WriteLine("0 보다 작거나 같은수"); } } } }
5.1.3 switch 문
- case 절이나 default 절 에 사용된 break 문은 각 swithc 절에서 실행 중이던 흐름을 switch 문 바깥으로 옮깁니다.
- 필요에 따라 break 문 대신 goto 나 return, throw 와 같은 점프문을 사용하는 것이 문법적으로 허용된다.
using System; namespace Switch { class MainApp { static void Main(string[] args) { Console.Write("요일을 입력하세요. (일,월,화,수,목,금,토) :"); string day = Console.ReadLine(); switch (day) { case "일": Console.WriteLine("Sunday"); break; case "월": Console.WriteLine("Monday"); break; case "화": Console.WriteLine("Tuesday"); break; case "수": Console.WriteLine("Wednesday"); break; case "목": Console.WriteLine("Thursday"); break; case "금": Console.WriteLine("Friday"); break; case "토": Console.WriteLine("Saturday"); break; default: Console.WriteLine($"{day}는(은) 요일이 아닙니다."); break; } } } }
1) switch 문과 패턴 매칭
- switch 레이블의 패턴에는 상수와 형식을 비롯해서 관계, 논리 등등 C# 이 지원하는 다양한 패턴을 적용할수 있다.
- 패턴의 종류는 다양하지만 switch 문, switch 식 등에 적용하는 방법은 같기 때문에 형식 패턴만 간단하기 넘어가겠습니다.
using System; namespace Switch2 { class MainAPP { static void Main(string[] args) { object obj = null; string s = Console.ReadLine(); if (int.TryParse(s, out int out_i)) // TryParse() 메소드 obj = out_i; else if (float.TryParse(s, out float out_f)) obj = out_f; else obj = s; switch (obj) { case int: Console.WriteLine($"{(int)obj}는 int 형식 입니다."); break; case float: Console.WriteLine($"{(float)obj}는 float 형식 입니다."); break; default: Console.Write($"{obj}는 모르는 형식 입니다."); break; } } } }
2) 케이스 가드
- 케이스 가드 : switch 문의 case 절의 패턴을 더 구체적으로 만들어주는 추가적인 조건 검사
- case 절에 뒤에 when 절을 붙여 사용한다, when 절은 if 문 처럼 true/false로 결과가 나오는 식을 입력 받는다.
5.1.4 switch 식
- 식(expression) : 결과값을 만들어 낼 수 있는 연산자와 연산자의 조합, 식은 계산해서 결과를 내놓는다.
- 문(statement) : 주어진 일을 한다. 결과를 내든 그렇지 않든.
- 어떤 작업에 분기가 필요할 때는 switch문을 사용하되, 분기를 거쳐 값을 내야하는 경우에는 switch 식을 사용! 게다가 break 같은 점프문도 필요 없다!
- switch 문
- switch 식
- switch 식에 케이스 가드 를 이용한 추가적인 분기 처리
using System; namespace SwitchExp { class MainApp { static void Main(string[] args) { Console.WriteLine("점수를 입력하세요."); int score = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("재수강 인가요?(y/n)"); string line = Console.ReadLine(); bool repeated = line == "y"?true:false; string grade = (int)(Math.Truncate(score / 10.0) * 10) switch { 90 when repeated == true => "B+", 90 => "A", 80 => "B", 70 => "C", 60 => "D", _ => "F" }; Console.WriteLine($"학점 : {grade}"); } } }
반응형'Anna belly belly hard > C#' 카테고리의 다른 글
[C# 개념] Chapter 05. 코드의 흐름 제어하기 (0) 2023.07.10 [C# 개념] 4.12 연산자의 우선순위 (0) 2023.07.10 [C# 개념] 4.11 null 병합 연산자 (0) 2023.07.10 [C# 개념] 4.10 할당 연산자 (0) 2023.07.10 [C# 개념] 4.9 비트 연산자 (0) 2023.07.10