C# 문법 종합반

C# 문법 종합반 2주차 반복문, 반복문 심화 예제

도도9999 2023. 8. 17. 18:16

1. 반복문 : 일련의 명령문을 반복해서 실행하는 제어문

 

1) for문 : for (초기식; 조건식; 증감식) 으로 구성되어 있음. 
: 초기식은 시작될 때 한번 실행, 조건식은 반복문이 실행될때마다 평가되어, 참이라면 실행, 증감식은 반복문이 실행될 때마다 실행.

	// int i 가 for문 내에 들어가있는 경우
	for (int i = 0; i < 10; i++)
	{
		Console.WriteLine(i);
	}
	Console.WriteLine(i); // ->WriteLine했지만 i가 선언되어있지 않아서 값을 출력할 수 없는 모습

	// int i를 for 문이 끝난 후에 활용할 경우
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		Console.WriteLine(i);
	}
	Console.WriteLine("int i 값은" + i + "입니다."); 
    
    // 0부터 9까지의 값이 출력되고, int i 값은 10입니다. 가 출력됨. 
	// (9 <10; 9++) 까지가 실행되어, 콘솔에 0~9까지의 값이 실행되었고,
	// Console.WriteLine(9)까지 실행되었지만 그 후 ++ 된 값인 10은 (10<10)에서 막혀, 
    // ++이 되지 않고 10인 상태 그대로 i값에 저장되었기 때문.

int i 값이 10으로 저장 된 모습

 

2) while 문

: 조건식이 참인 동안 코드 블록을 반복 실행.

int count = 0; // int의 초기 값 0
while (count < 10) // count가 10 이하일 경우 아래코드를 반복 실행
{
	Console.WriteLine("적을 처치했습니다! 남은 적 수: " + (10 - count - 1)); // 10 - count - 1을 출력
	count++; // count에는 +1
}

Console.WriteLine("축하합니다! 게임에서 승리하셨습니다!"); // count < 10이 거짓이 되자, 게임 종료 메시지 출력

 

3) for VS while

: for문은 반복 횟수가 직관적이고 조건을 확인할 수 있어 가독성이 좋음

: while문은 반복 조건에 따라 조건문 실행 횟수가 유동적이며, 코드가 간결함

 

4) do while 문

: while문과 비슷하지만 조건식을 검사하기 전, 코드 블록을 한 번 실행함. (최초 한번은 무조건 실행한다.)

int sum = 0; // sum의 최초 값은 0
int num; // num은 변수.

do // 최초 한번 실행하는데, 아래 while의 조건이 아니면 또 실행한다.
	{
	Console.Write("숫자를 입력하세요 (0 입력 시 종료): ");
	num = int.Parse(Console.ReadLine()); // 숫자를 입력받아 num에 저장한다.
	sum += num; // sum(최초값 0) + num // 혹은 이후 더하기 된 값 sum + num.
	} while (num != 0); //  비교연산자 != num과 0이 다르다면~ 반복한다. 같다면 멈춘다.

Console.WriteLine("합계: " + sum); // 사용자가 0을 입력해 while문이 끝났다면 sum 값을 출력한다.

 

5) foreach문
: 배열이나 컬렉션에 대한 반복문을 작성할때 사용.

검 방패 활... 값이 item으로 들어가 출력됨.

6) 중첩반복문 - 이차원반복문 : 구구단 출력

for (int i = 2; i <= 9; i++)
{
    for (int j = 1; j <= 9; j++)
    {
        Console.WriteLine(i + " x " + j + " = " + (i * j));
    }
}

 

7) Break & Continue

int sum = 0;

while (true)
{
    Console.Write("숫자를 입력하세요: ");
    int input = int.Parse(Console.ReadLine());

    if (input == 0)
    {
        Console.WriteLine("프로그램을 종료합니다.");
        break;  // 해당 if가 참이면 반복문을 빠져나감.
    }

    if (input < 0)
    {
        Console.WriteLine("음수는 무시합니다.");
        continue; // 해당 if가 참이면 다음으로 넘어감
    }

    sum += input;
    Console.WriteLine("현재까지의 합: " + sum);
}

Console.WriteLine("합계: " + sum);

 

2. 반복문 심화 실습

1) 가위바위보 게임
: string[] 으로 가위바위보 3개의 값을 정하고 -> 사용자의 값 -> 컴퓨터의 값(랜덤) 설정
: while문을 사용해, 게임이 반복되도록 설정
: 사용자 가위바위보 값을 입력 -> 저장 -> if (사용자 = 컴퓨터) - 비김 출력 -> else if (가위-보 / 바위 - 가위 / 보 - 바위) - 플레이어 승리 -> else - 컴퓨터 승리 설정

            string[] choices = { "가위", "바위", "보" }; // 컴퓨터가 선택할 choices 값 설정
            string playerChoice = ""; // player가 입력한 값 설정
            string computerChoice = choices[new Random().Next(0, 3)]; // 컴퓨터의 값을 choices 중 하나로 설정

            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("컴퓨터 승리!");
                }
            }

2) 숫자 맞추기 게임 : 1부터 100 사이 숫자 맞추기

: int를 이용, 1~101 사이 숫자 설정 -> while 사용, guess(사용자 입력)과 targetNumber(Random으로 설정된 값) 확인 -> if 사용자 값이 작다면 "더 큰 숫자 입력하세요"출력 -> 크다면 -> 같다면 -> 축하합니다! + 시도한 횟수 출력

: int targetNumber / int guess / int count 설정하기.

int targetNumber = new Random().Next(1, 101); ; // 초기 숫자 랜덤 설정
int guess = 0; // 사용자의 값 guess로 설정
int count = 0; // 사용자의 시도 수 설정

Console.WriteLine("1부터 100 사이의 숫자를 맞춰보세요.");

while (guess != targetNumber)  // 사용자 값과 타겟넘버가 같지 않을때 반복
{
	Console.Write("추측한 숫자를 입력하세요: ");  // 실행
	guess = int.Parse(Console.ReadLine()); // 사용자 값 입력
	count++; // count 값에 시도 수 +1씩 카운트하기.
	
	if (guess < targetNumber)
	{
		Console.WriteLine("좀 더 큰 숫자를 입력하세요.");
	}
	else if (guess > targetNumber)
	{
		Console.WriteLine("좀 더 작은 숫자를 입력하세요.");
	}
	else
	{
		Console.WriteLine("축하합니다! 숫자를 맞추셨습니다.");
		Console.WriteLine("시도한 횟수: " + count);
	}
}