이전강의에서 저희는 반복문을 배워보았습니다.
이 반복문은 잘못하면 무한루프에 빠진다고 이전시간에 언급했었는데요.
이 반복문을 제어할 수 있는 방법이 있습니다.
Break, continue, goto 제어문을 통해서 입니다.
1. Break |
break는 '가장 가까운 반복문을 빠져나오는 역할' 을 수행하는 제어문입니다.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int ForEnd = 0;
for(int i=0; i<10; i++)
{
if(ForEnd<5)
{
Console.WriteLine(ForEnd);
ForEnd++;
}
else
{
break;
}
}
}
}
}
코드를 해석해보자면
반복문(for)가 돌아가고 있는 중 ForEnd라는 변수가 5보다 작을 때는 변수에 담긴 수를 출력하고
ForEnd에 1씩 더한다는 내용이 if문 내부에 있습니다.`
else에 들어갈 조건은 당연하게도 'ForEnd가 5와 같거나, 보다 클 때' 인데요, 이 때 break와 가장 가까운 반복문
즉, int 형 변수 i를 사용하는 반복문을 종료한다는 것 입니다.
결과를 보시면 ForEnd변수가 5가 됨에 따라 else문에서 break를 만나 4에서 출력이 멈춘것을 볼 수 있습니다.
위에 강조해둔 break와 가장 가까운 반복문 이라는 부분은 중요한 포인트입니다.
이를 코드로 확인해보겠습니다. ↓
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
for(int i=0; i<10; i++)
{
for(int j=0; j<10;j++)
{
Console.WriteLine($"i : {i}, j : {j}");
}
}
}
}
}
이는 평범한 다중 for문 형태입니다.
그 결과는

이처럼 i가 9, j가 9가 될 때까지 나오는 것을 볼 수 있는데요.
이제 분기문을 사용해서 j가 3이 되었을 때 끊어보겠습니다.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
for(int i=0; i<10; i++)
{
for(int j=0; j<10;j++)
{
Console.Write($"i : {i}, j : {j}\t");
if (j == 3)
break;
}
Console.WriteLine();
Console.WriteLine();
}
}
}
}
보기 편하도록 코드를 적어보았는데요. 그 결과는

이렇습니다. j가 3이 되면 j반복문이 끊어지고 다시 i반복문으로 향합니다.
i가 1 올라가고 다시 j반복문으로 내려와 3까지 진행한후 끊어지는 것을 반복하는 모습을 볼 수 있습니다.
이처럼 break는 break와 가까운 반복문을 탈출하는 모습을 볼 수 있습니다.
2. continue |
continue는 반복문에서 '조건을 검사하는 부분으로 가는' 제어문입니다.
예시코드를 보겠습니다.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
for(int i=1; i<=5; i++)
{
if (i == 3)
continue;
for (int j=1; j<=5;j++)
{
Console.WriteLine($"i : {i}, j : {j}");
}
Console.WriteLine();
}
}
}
}
이전 break는 반복문 자체를 탈출하여 그 뒤로는 실행이 안되었습니다.
하지만 continue는 반복문 자체를 탈출하는 것이 아닌 그 조건일 때
반복문의 조건을 검사하는 부분으로 올라가는 것이므로 3이외의 모든 코드가 나와야 합니다.
i가 3일 때 continue를 해주어서 i값이 3일 때가 없는 것을 볼 수 있습니다.
3. goto |
goto문은 '지정된 레이블로 건너뛰는' 제어문입니다.
※ 레이블(Lable) : 코드 내에 데이터 위치를 나타내주는 역할
goto 레이블명;
...
레이블: 실행될 코드
위 코드는 goto의 기본형태입니다.
이를 코드로 보자면
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
for(int i=1; i<=10; i++)
{
if(i==3)
{
goto numThree;
}
Console.WriteLine($"i = {i}");
}
numThree: Console.WriteLine("숫자 3입니다.");
}
}
}
i를 계속 출력하던 중 if조건문을 만나 goto 문으로 반복문 바깥부분으로 넘어가는 것을 볼 수 있습니다.
goto 문은 이렇게 반복문 탈출로도 사용할 수 있지만 위에 언급한 것 처럼
원하는 부분으로 코드를 뛰어넘는 역할을 하는 것으로 이해하면 원활한 이해가 가능할 것 같습니다.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
for (int i=1; i<=9; i++)
{
if (i == 3)
goto Jump;//여기서 점프
Console.WriteLine($"i = {i}");
}
Console.WriteLine("점프되는 부분");//건너뛰어짐으로 출력되지않음
Jump://여기로 점프
Console.WriteLine();//줄바꿈
for (int k = 5; k <= 9; k++)
{
Console.WriteLine($"k = {k}");
}
}
}
}
코드를 보시면 i가 3이 되고 Jump레이블로 이동을 시작합니다. 반복문을 종료시키고 중간에 껴있는 출력문 역시 건너뛰어 Jump레이블로가 줄바꿈과 새로운 for 반복문을 출력합니다.
'C#' 카테고리의 다른 글
[C#_9] 배열 (Array) (0) | 2021.10.07 |
---|---|
[C#_8] 메서드 method (0) | 2021.10.02 |
[C#_6] 반복문(for,foreach,while,do while) (0) | 2021.09.24 |
[C#_5] 조건문 (if, else, switch) (0) | 2021.09.23 |
[C#_4] 출력문, 입력문, 연산자, 문자열 보간 (0) | 2021.09.21 |