ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# 연습해보기, 무한 루프 그리고 제어문(break, continue, goto)
    프로그램/C# 2020. 1. 9. 10:33

    무한 루프 그리고 제어문에 대해서 알아볼려고합니다.

    무한 루프란 종료문을 만나지 못하고 계속해서 동작하는 것을 말합니다. 코딩 중 실수로 무한 루프가 발생하게 된다면, 반복문 내의 코드가 계속해서 반복 실행되므로 잘못하면 비정상적으로 프로그램이 종료될 수가 있습니다. 하지만 무한 루프는 단점만 있는 것이 아니라 장점도 있습니다. 그 장점에 대해서 알아보겠습니다.

     

    무한 루프의 예시

    while (true) // 조건식이 항상 true 이므로 무한 루프 발생.
    {
    	// 실행될 코드 부분.
    }

    예시를 보시면 조건식에 true 이므로 while 문 내에 있는 코드를 무한 반복해서 실행합니다.

    이러한 무한 루프는 어디에 아니 어떻게 쓰일까요?

     

    무한 루프 사용 예시

    int sum = 0;
    
    while (true)
    {
    	Console.Write("숫자를 입력해주세요. \n : );
    	string str = Console.ReadLine();   // 숫자 입력
    	if (str == "sum")				   // sum 을 입력하게 되면 무한 루프 종료
    	{
    		break;
    	}
    	
    	sum += int.Parse(str);			   // 문자열을 숫자로 변환 후 sum 에 더함
    }
    
    Console.WriteLine("숫자 합 : " + sum);	// 모두 더해진 값을 출력.

    결과값

    숫자를 입력해주세요. 
    : 1
    숫자를 입력해주세요. 
    : 2
    숫자를 입력해주세요. 
    : 3
    숫자를 입력해주세요. 
    : 4
    숫자를 입력해주세요. 
    : 5
    숫자 합 : 15
    계속하려면 아무 키나 누르십시오...

    살펴보자면 while 문의 조건식이 항상 true 이므로 무한 루프를 빠져나오기 위한 조건을 받을 떄까지 반복해서 숫자를 입력 및 합이 더해지다가 'sum' 이라는 빠져나오기 위한 조건식이 입력되고 루프가 멈추며 지금까지 적은 수의 합이 출력되는 겁니다.

     

     

    두번째 break 에 대해서 설명드리겠습니다.

    break 는 전에 보았던 switch 문에서 빠져나가기 위한 break 나 방금 전 무한 루프에서 빠져나가기 위한 break 는 같은 그저 '빠져나가다 / 탈출하다' 라는 의미를 지니고 있습니다.

     

    break 를 사용하여 빠져나가는 예시

    int number = 0;
    
    while (num < 10)
    {
        if (num == 5)
        {
        	break; // num 의 숫자가 5가 되면 반복문을 빠져나간다.
        }
        Console.WriteLine("숫자 : " + num);
        num++;
    }

    결과값

    숫자 : 0
    숫자 : 1
    숫자 : 2
    숫자 : 3
    숫자 : 4
    계속하려면 아무 키나 누르십시오...

    이러한 결과값이 왜 나오는지 설명드리자면 while 문의 조건식에는 10이 num 보다 크면 true 로 특정 값이 될때까지 계속해서 반복문 내 코드를 실행합니다만 반복문 내 코드에 있는 if 문의 조건식에 충족 시 break 로 의해 무한 루프를 빠져나가게 할 수 있는 것이죠. 

     

     

    세번째 continue 에 대해서 설명드리겠습니다.

    continue 는 조건식을 검사하는 부분으로 다시 넘어가 반복을 계속 수행하는 작업을 합니다. 즉, continue 를 만나게 되면 다시 조건식 검사하는 부분으로 넘어간다는 말입니다. 간단하게 말해서 쉬고 반복을 한다는 겁니다.

     

    continue 를 사용한 예시

    for (int i = 1; i <= 20; i++)
    {
        if (i % 2 == 0)
        {
        	continue;
        }
        Console.WriteLine("i : " + i);
    }

    결과값

    i : 1
    i : 3
    i : 5
    ...
    i : 15
    i : 17
    i : 19
    계속하려면 아무 키나 누르십시오...

    이러한 결과값이 나오게됩니다, 왜냐? for 문의 i 값이 증가되고 if 문 조건식에서 (i % 2 == 0) 나머지가 0이라면 즉, 짝수라면 if 문 내의 continue 를 만나 쉬고 다시 반복하게 되고, 만약 나머지가 1이라면 즉, 홀수 라면 Console 에 출력을 하게 됩니다.

     

     

    네번째 goto 에 대해서 설명드리겠습니다.

    goto 는 특정 레이블로 넘어간다라는 기능을 가지고 있습니다. 즉, 어디든지 문이라고 이해하시면 쉽겠네요.

     

    goto 를 사용 형식 예시

    goto 레이블;
    
    레이블:
    	// 실행할 코드
        

    레이블이란 코드내 위치를 식별하기 위한 위치명이라고 생각하시면 됩니다.

     

    goto 를 사용한 예시

    int num = 0;
    
    while (true)
    {
        if (num == 10)
        {
        	goto door; // num 이 10 일시 레이블 door 로 이동.
        }
        Console.WriteLine("숫자 : " + num);
        num++;
    }
    
    door:
    Console.WriteLine("문");

    결과값

    숫자 : 0
    숫자 : 1
    숫자 : 2
    숫자 : 3
    숫자 : 4
    숫자 : 5
    숫자 : 6
    숫자 : 7
    숫자 : 8
    숫자 : 9
    문
    계속하려면 아무 키나 누르십시오...

    이렇게 코드 내에 레이블을 지정해주고 그 위치로 이동하게 할 수 있는 기능입니다.

     

    오늘은 무한 루프 그리고 제어문에 대해서 알아보았습니다.

    반응형

    댓글

choi.devs