ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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}");
            }
        }
    }

     

     

    반응형
Designed by Tistory.