C#

C# 조건문과 반복문

anvil925 2025. 1. 31. 22:00
728x90
반응형

// if 문은 조건식의 결과에따라 실행 여부를 결정하는 조건문입니다.
// 조건식이 참이면 if문의 블록이 실행되고, 거짓이면 실행되지 않습니다.
// if문은 if, else if, else 키워드를 사용하여 조건식을 표현합니다.
// else if문은 if문이 거짓일 때 다른 조건을 검사하는데 사용됩니다.
// else문은 if문과 else if문이 모두 거짓일 때 실행되는 블록입니다.
// if문은 중첩하여 사용할 수 있습니다.
// 중첩된 if문은 if문의 블록 내에 다른 if문을 사용하는 것을 의미합니다.
// 중첩된 if문은 if문의 블록 내에 다른 if문을 사용하여 복잡한 조건을 표현할 때 사용합니다.
// if문은 특정 조건을 만족할 때 코드를 실행할 때 사용합니다.
// if문은 특정 조건을 만족하지 않을 때 코드를 실행할 때 사용합니다.

class ConditionalStatementsAndLoops
{   
    public static void WhatIsIf()
    {
        int playerScore = 100; // 플레이어의 점수
        if (playerScore > 100) // 플레이어의 점수가 100보다 큰지 검사
        {
            Console.WriteLine("플레이어의 점수가 100보다 큽니다."); // 플레이어의 점수가 100보다 크면 출력
        }
        else if (playerScore == 100) // 플레이어의 점수가 100인지 검사
        {
            Console.WriteLine("플레이어의 점수가 100입니다."); // 플레이어의 점수가 100이면 출력
        }
        else
        {
            Console.WriteLine("플레이어의 점수가 100보다 작습니다."); // 플레이어의 점수가 100보다 작으면 출력
        }
        int itemCount = 0; // 아이템의 개수
        string itemName = "물약"; // 아이템의 이름
        if (itemName == "물약") // 아이템의 이름이 물약인지 검사
        {
            if (itemCount > 0) // 아이템의 개수가 0보다 큰지 검사
            {
                Console.WriteLine("물약을 사용합니다."); // 아이템의 개수가 0보다 크면 출력
            }
            else
            {
                Console.WriteLine("물약이 부족합니다."); // 아이템의 개수가 0이면 출력
            }
        }  
    }
    // switch문은 특정 변수의 값을 기준으로 분기하는 조건문입니다.
    // switch문은 switch, case, default 키워드를 사용하여 변수의 값을 비교합니다.
    // switch문은 변수의 값이 case문의 값과 일치하면 해당 case문의 블록을 실행합니다.
    // default문은 case문의 값과 일치하는 값이 없을 때 실행되는 블록입니다.
    // switch문은 break 키워드를 사용하여 switch문을 종료합니다.
    // switch문은 if문의 다중 조건식을 간단하게 표현할 때 사용합니다.
    
    public static void WhatIsSwitch()
    {
        int playerScore = 100; // 플레이어의 점수
        switch (playerScore) // 플레이어의 점수에 따라 분기
        {
            case 100: // 플레이어의 점수가 100일 때
                Console.WriteLine("플레이어의 점수가 100입니다."); // 출력
                break; // switch문을 종료
            case 200: // 플레이어의 점수가 200일 때
                Console.WriteLine("플레이어의 점수가 200입니다."); // 출력
                break; // switch문을 종료
            default: // 플레이어의 점수가 100, 200이 아닐 때
                Console.WriteLine("플레이어의 점수가 100, 200이 아닙니다."); // 출력
                break; // switch문을 종료
        }
    }
    // 3항 연상자는 if문을 간단하게 표현하는 연산자입니다.
    // 3항 연산자는 조건식 ? 참일 때 값 : 거짓일 때 값 형태로 사용합니다.
    // 3항 연산자는 if문과 else문을 한 줄로 표현할 때 사용합니다.
    // 3항 연산자는 중첩하여 사용할 수 있습니다.
    // 3항 연산자는 중첩된 if문을 간단하게 표현할 때 사용합니다.
    // 3항 연산자는 특정 조건을 만족할 때 코드를 실행할 때 사용합니다.

    public static void WhatIsTernaryOperator()
    {
        int playerScore = 100; // 플레이어의 점수
        string result = playerScore > 100 ? "플레이어의 점수가 100보다 큽니다." : "플레이어의 점수가 100보다 작거나 같습니다.";
        Console.WriteLine(result); // 플레이어의 점수에 따라 결과 출력
    }

    // 반복문은 특정 조건을 만족할 때까지 코드를 반복 실행하는 제어문입니다.
    // 반복문은 for, while, do-while 키워드를 사용하여 반복 실행합니다.
    // for문은 초기식, 조건식, 증감식을 사용하여 반복 실행합니다.
    // while문은 조건식이 참일 때 반복 실행합니다.
    // do-while문은 먼저 코드를 실행한 후 조건식을 검사하여 반복 실행합니다.
    // break문은 반복문을 종료하고, continue문은 반복문의 처음으로 돌아가는 제어문입니다.
    // foreach문은 배열이나 컬렉션의 요소를 반복 실행하는 제어문입니다.

    public static void WhatIsLoop()
    {
        for (int i = 0; i < 5; i++) // 0부터 4까지 5번 반복
        {
            Console.WriteLine(i); // i 출력
        }
        int j = 0; // j 초기화
        while (j < 5) // j가 5보다 작을 때 반복
        {
            Console.WriteLine(j); // j 출력
            j++; // j 증가
        }
        int k = 0; // k 초기화
        do // 먼저 실행한 후 조건 검사
        {
            Console.WriteLine(k); // k 출력
            k++; // k 증가
        } while (k < 5); // k가 5보다 작을 때 반복
        foreach (int number in new int[] { 1, 2, 3, 4, 5 }) // 배열의 요소를 반복
        {
            Console.WriteLine(number); // number 출력
        }
        for (int i = 0; i < 5; i++) // 0부터 4까지 5번 반복
        {
            if (i == 3) // i가 3일 때
            {
                break; // 반복문 종료
            }
            Console.WriteLine(i); // i 출력
        }
        int sum = 0; // 합계 초기화
        for (int i = 0; i < 5; i++) // 0부터 4까지 5번 반복
        {
            if (i == 3) // i가 3일 때
            {
                continue; // 반복문 처음으로
            }
            sum += i; // 합계 계산
        }
    }
    public static void RocksScissorsPaper()
    {
       // 가위바위보
       string[] choices = { "가위", "바위", "보" }; // 가위, 바위, 보 배열
       string playerChoice = ""; // 플레이어의 선택
       string computerChoice = choices[new Random().Next(0,3)]; // 컴퓨터의 선택

       while(playerChoice != computerChoice)
       {
              Console.Write("가위, 바위, 보 중 하나를 선택하세요: ");
              playerChoice = Console.ReadLine(); // 플레이어의 선택

              if (playerChoice == computerChoice)
              {
                  Console.WriteLine("비겼습니다.");
              }
              else if (playerChoice == "가위" && computerChoice == "바위" ||
                       playerChoice == "바위" && computerChoice == "보" ||
                       playerChoice == "보" && computerChoice == "가위")
              {
                  Console.WriteLine("컴퓨터가 이겼습니다.");
              }
              else
              {
                  Console.WriteLine("플레이어가 이겼습니다.");
              }
       }
    }

    public static void UpAndDown()
    {
        int targetNumber = new Random().Next(1, 101); // 1부터 100까지의 숫자 중 랜덤으로 선택
        int guessNumber = 0; // 플레이어의 추측 숫자
        int tryCount = 0; // 시도 횟수
        Console.WriteLine("1부터 100까지의 숫자 중 하나를 맞춰보세요.");

        while(guessNumber != targetNumber)
        {
            Console.Write("숫자를 입력하세요: ");
            guessNumber = int.Parse(Console.ReadLine()); // 플레이어의 추측 숫자
            tryCount++; // 시도 횟수 증가

            if (guessNumber > targetNumber)
            {
                Console.WriteLine("Down!");
            }
            else if (guessNumber < targetNumber)
            {
                Console.WriteLine("Up!");
            }
            else
            {
                Console.WriteLine("정답입니다.");
                Console.WriteLine($"시도 횟수: {tryCount}");
            }
        }
    }
}

 

 

강의를 듣고 TIL을 정리하려하니 글에 쓸대없는 내용이 너무 많이 들어가는 것 같아 공부하면서 정리한 것을 소스코드로 대체하려고 한다.

추가적으로 Visual Studio Code를 사용하면서 공부한 내용을 적고 마무리하려고 한다. 

 

그동안 제대로된 C# project의 구조를 몰라서 start(F5)나 dotnet run을 하여 실행하는데 애를 먹어서 글로벌코드로 간단하게 작성하고 dotnet script로 실행을 했었다. 

그안에서 오류가 발생하거나 불편한 사항이 많아서 매번 프로젝트로 생성해서 필기나 공부한것들 그리고 cs파일들을 관리하기는 어려울거 같아 찾아보고 알게된것이 Program.cs는 컨트롤 타워역할을 하고 같은 폴더 내의 다른 cs파일들을 불러올 수 있다는 거다...

알게된 후로 이렇게 대단할 수가 하고 적잖은 충격을 먹었다. 얘를 들어 위에 조건문과 반복문 정리해둔 것을 Program.cs에서만 Main을 선언해서 두고

using System;

class Program
{
    static void Main(string[] args)
    {
        ConditionalStatementsAndLoops.WhatIsIf();
    }
}

이런식으로 두고 F5나 dotnet run 명령어를 실행하여 불러내오고 출력이 가능하다는 것이다.

ConsoleApp/

 ├── Program.cs  #  컨트롤 타워 역할

 ├── Player.cs   # 플레이어 관련 코드

 ├── Item.cs     # 아이템 관련 코드

 ├── GameLogic.cs # 게임 로직 관련 코드

 ├── ConsoleApp.csproj

위처럼 Program.cs제어하에 다른 cs 파일들을 불러와서 제어가 가능하고 실행이 가능하다는 것을 알게 되어 추 후에 C# project를 하거나 만들때 유용하게 사용이 가능할 거 같다.

728x90
반응형

'C#' 카테고리의 다른 글

C# 조건문과 반복문  (0) 2025.02.10
C# 문자열 처리  (0) 2025.02.10
C# 연산자는 무엇인가?  (0) 2025.02.09
C# 변수와 자료형  (2) 2025.01.29
C#기초와 개발환경 구현하기  (2) 2025.01.27