25/03/13

Clean·2025년 3월 13일

반복문


for문


// 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 순서로 반복한다.


while, do while문


while


//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


do
{
	// 실행할 코드
} while(조건)

while문과 다르게 조건이 반복문의 끝에 있다.


while vs do 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의 숫자를 입력하라는 선택지가 주어지고,
플레이어는 어떤 값을 입력할 것이다.


break


// 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를 넣어서 사용한다.


continue


for (int i = 1; i <= 10; i++)
{
    if (i % 2 == 0) // i가 짝수라면
    {
        continue; // continue를 만나면 아래의 Console코드가 아니라 다음 반복으로 이동한다.
    }
    Console.WriteLine($"홀수: {i}");
}

break가 반복문을 탈출한다는 느낌이면,
continue는 반복을 이어가지만 이번 반복을 스킵? 한다고 생각한다.

주로 반복문 속에서 특정 조건을 만족하는 값만 찾거나,
특정 조건을 무시할때 사용한다.

위 코드같이 짝수는 출력안하고 홀수만 출력하는 것처럼 말이다.

0개의 댓글