C# 문법 종합반 2주차 반복문, 반복문 심화 예제
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값에 저장되었기 때문.
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문
: 배열이나 컬렉션에 대한 반복문을 작성할때 사용.
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);
}
}