C#의 for문을 사용한 loop문의 구성하는 방법 이외에도 while과 do...while을 사용하여 loop를 구성할 수도 있습니다.
for문을 사용하는 경우에는 Program에서 특정작업이 몇번정도 반복되어야 하는지를 사전에 알고 있는 경우 유용하게 사용할 수 있습니다. 그러나 특정 조건이 만족하는 한 계속해서 code가 반복되어야 하는 경우도 있는데 대게 이런 경우 이들 조건을 충족시키기 위해 얼마나 많이 반복되어야 하는지 알 수 없는 경우가 많습니다. 물론 이때는 break문을 포함한 for loop문을 사용함으로써 목적을 달성할 수도 있지만 C#에서는 이러한 경우에 대해 while loop라는 더 나은 대안을 제공하고 있습니다. while문 역시 C#이 C Programming언어로부터 파생한 것입니다.
1. while loop
while문 특정 조건이 만족할때까지 반복하는 전형적인 반복문입니다. while loop문의 문법은 아래와 같습니다.
while (<조건>) {
//반복을 실행할 C#구문
}
위 문법에서 <조건>은 true혹은 false를 반환하는 조건표현식에 해당하며 중괄호({})안에 <조건>이 true를 반환하는 만큼 반복적으로 실행할 C#를 배치합니다. 예를 들어
int i = 0;
while (i < 10) {
Console.Write($"{i}");
++i;
}
위 예제에서 while표현식은 i변수가 10보다 작은 지를 평가할 것입니다. 만약 i변수가 10보다 더 큰 수가 된다면 중괄호({})안의 code는 skip 되며 어떠한 작업도 수행되지 않고 loop를 빠져나오게 될 것입니다. 반대로 i변수가 10보다 크지 않다면 중괄호 안의 code는 실행될 것이며 loop는 while문으로 돌아가 i변수에 대한 평가를 반복하게 됩니다. 이러한 처리는 i변수가 10을 초과할 때까지 계속되는데, 이 시점에 다다르면 그때서야 loop를 빠져나오게 될 것입니다.
2. do...while문
도치된 while문의 형태를 하고 있는 것으로 본래 while문은 loop의 본문에 있는 code를 실행하기 전 조건 표현식을 먼저 평가하고 처음 확인단계에서 평가결과가 false가 되면 code는 단 한차례도 실행되지 않습니다. 하지만 do..while문은 loop본문의 code가 최소한 한 번은 실행되는 특징을 갖는 것으로 본문의 Code를 우선 실행한 뒤 그다음에 조건표현식을 평가하는 구조로 동작합니다. do...while의 문법은 아래와 같습니다.
do
{
//실행문
} while (<조건문>)
아래 예제에서 loop문은 변수 i의 값이 0이 될 때까지 반복을 수행할 것입니다.
int i = 10;
do
{
--i;
Console.WriteLine($"i = {i}");
} while (i > 10);
3. break 사용
for loop와 마찬가지로 while이나 do...while문에서도 break문을 사용하면 언제든 loop를 빠져나올 수 있습니다. loop가 실행될 때 break문을 만나게 되면 loop는 중지되며 loop 바로 다음 code로 실행이 진행됩니다. 다음 예제에서 loop는 i의 값이 j값과 일치하는 경우 loop를 빠져나올 것입니다.
int i = 0;
int j = 10;
while (i < 100)
{
i++;
Console.WriteLine($"i = {i}");
if (i == j)
break;
}
for loop에서의 break와 마찬가지로 중첩된 while, do...while문에서는 특히 주의해야 합니다. while문에서 break는 오로지 현재단계의 loop만을 빠져나오며 외부 loop에서 실행을 옮겨가 계속 진행하게 됩니다. 또한 이런 경우 외부 loop에서 특정 조건을 만족하게 되면 다시 내부 loop를 실행할 가능성이 존재합니다.
4. continue 문
continue문은 loop에 남아있는 모든 code구문을 생략하고 loop의 처음 실행시점으로 되돌아가도록 하는 제어문입니다.
아래 예제에서 WriteLine method는 i변수의 값이 짝수인 경우에만 호출됩니다.(즉 2로 나누어 나머지가 없는 경우)
int i = 1;
shile (i < 20)
{
++i;
if ((i % 2) != 0)
continue;
Console.WriteLine($"i = {i}");
}
상기 예제에서 continue문은 i값이 나머지 없이 2로 나누어지는 한 WriteLine호출을 생략할 것입니다. continue문이 실행되면 실행시점은 loop의 처음 부분으로 건너뛰게 되고 처음부터 다시 loop의 본문이 실행됩니다. (예제에서 i값이 19를 초과할 때까지)
'.NET > C#' 카테고리의 다른 글
[C# 13과 .NET 9] C# for loop문 - 10 (0) | 2025.01.20 |
---|---|
[C# 13과 .NET 9] C# switch문 - 9 (0) | 2025.01.08 |
[C# 13과 .NET 9] C# 흐름제어개념과 if문 - 8 (0) | 2025.01.06 |
[C# 13과 .NET 9] C# 연산자와 표현식 - 7 (2) | 2025.01.03 |
[C# 13과 .NET 9] C# 변수와 상수 - 6 (0) | 2024.12.05 |