// C#
for (int i = 0; i < 10; i++)
{
// 반복할 내용
}
// MSW
for i = 1, 10 do -- 1씩 증가할 경우 1은 생략가능
-- 반복할 내용
end
반복문인 for문은 3가지 식으로 구성되어 있다.
초기식인 int 1 = 0
조건식인 i < 10
연산식인 i++
위의 식을 기준으로 설명하면,
int타입 변수 i를 0으로 초기화,
변수 i가 10보다 작을 때,
반복할 때마다 변수 i 값을 1씩 증가.
MSW와는 식이 조금 다르지만, 사용하는데 어려움은 크게 없었다.
// 초기식 생략
int intValue = 1;
for (; intValue < 10; intValue++)
{
Console.WriteLine(intValue); // 1, 2, 3, 4, 5, 6, 7, 8, 9
}
// 복합대입연산자 사용
intValue = 1;
for (; intValue < 10; intValue += 2)
{
Console.WriteLine(intValue); // 1, 3, 5, 7, 9
}
// ※무한루프 주의
for (;;)
{
Console.WriteLine("무한 실행~");
}
초기식을 생략하고 외부의 변수를 사용하여 반복문을 사용할 수도 있고,
연산식에는 ++나 --뿐만 아니라 복합대입연산자도 사용할 수 있다.
세번째 식과 같이 조건식을 입력하지 않으면 무한으로 실행된다.
// C#
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i);
}
디버그로 실행 순서를 보면
for문 실행 순서
1.int i = 0초기화 (1번만 실행)
2.i < 10조건 확인 (true면 실행, false면 종료)
3.{ 실행할 코드 }중괄호 안의 코드 실행
4.i++연산문
5.i < 10조건문
6.{ 실행할 코드 }중괄호 안의 코드 실행
이후 4, 5, 6 순서로 반복한다.
//C#
while (조건) // true일때만 실행
{
// 반복할 코드
}
for문에는 초기화, 조건, 연산이 하나의 식에 있지만,
while문은 조건만 필요하다.
전에 배운 if문과 switch문의 관계와 비슷하게
조건을 충족할 때까지 반복한다는 개념으로 이해했다.
int i = 1; // 초기화
while (i < 10) // 조건 (true만 넣어도 무한루프!)
{
Console.WriteLine(i);
i++ // 연산 (없으면 무한루프!)
}
for문의 반복을 while도 할 수 있다.
주의할 점은 조건문만 필요하다보니, 멈추는 코드를 넣어두지 않으면 무한루프에 빠지기 쉽다.
솔직히 MSW을 사용하는 동안 for문만 사용했지 while문을 사용해본적은
손에 꼽을 정도로 사용경험이 적어서 사용할 때 어색하다.
do
{
// 실행할 코드
} while(조건)
while문과 다르게 조건이 반복문의 끝에 있다.
둘다 조건이 true일 때 반복하는 반복문이지만, 실행 순서에 차이가 있다.
while문 실행 순서
1. 조건 체크 → 2. true면 반복 or false면 종료
while문은 반복하기 전 조건을 체크한 다음 반복하지만,
do while문 실행 순서
1. 중괄호 코드 실행 → 2. 조건 체크 → 3. true면 반복 or false면 종료
do while문은 한번은 실행 후 조건을 체크한다.
두루뭉술하게 말하자면 선택지를 선택할 때 사용된다.
int number;
do
{
Console.Write("1부터 100 사이의 숫자를 입력하세요: ");
number = int.Parse(Console.ReadLine());
if (number < 1 || number > 100)
{
Console.WriteLine("잘못된 입력입니다! 다시 입력하세요.");
}
} while (number < 1 || number > 100);
Console.WriteLine($"입력한 숫자: {number}");
코드를 보면 1부터 100의 숫자를 입력하라는 선택지가 주어지고,
플레이어는 어떤 값을 입력할 것이다.
// for문
for (;;)
{
Console.WriteLine("무한루프~");
break;
}
Console.WriteLine("무한루프 탈출 성공~");
// while문
while (true)
{
Console.WriteLine("무한루프~");
break;
}
Console.WriteLine("무한루프 탈출 성공~");
// break로 탈출 후에는 다시 코드의 순서대로 실행
break는 어제 배운 switch문이나 위의 반복문들을 종료할 때 사용한다.
MSW에서 사용했을 때 for문은 초기화, 조건, 연산이 하나의 식에 있고,
종료 조건을 주로 일정 횟수 반복하기 위해 사용해서 break를 사용할 일이 적어
종료 조건이 애매한 while문에서 주로 사용한다.
int count = 1;
while (true)
{
Console.WriteLine(count);
count++;
if (count >= 5)
{
Console.WriteLine("종료합니다.");
break;
}
}
주로 while문 안에 조건문인 if문을 넣어 종료 조건을 만들어 두고
그 안에 break를 넣어서 사용한다.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0) // i가 짝수라면
{
continue; // continue를 만나면 아래의 Console코드가 아니라 다음 반복으로 이동한다.
}
Console.WriteLine($"홀수: {i}");
}
break가 반복문을 탈출한다는 느낌이면,
continue는 반복을 이어가지만 이번 반복을 스킵? 한다고 생각한다.
주로 반복문 속에서 특정 조건을 만족하는 값만 찾거나,
특정 조건을 무시할때 사용한다.
위 코드같이 짝수는 출력안하고 홀수만 출력하는 것처럼 말이다.