07.break, continue(흐름 제어) — 웹툰PD 지망생 : 정민재
07.break, continue(흐름 제어)
●/섹션 2. 코드의 흐름 제어

07.break, continue(흐름 제어)

728x90

 

using System;

namespace Csharp
{
    class Program
    {       
        static void Main(string[] args)
        {
            //소수 : 자기자신과 1로만 나뉘는 수
            int num = 100;

            for (int i = 2; i < num; i++)
            {
                if ((num % i) == 0)
                {
                    Console.WriteLine("소수가 아닙니다.");

                    //소수가 아니라는 것을 i = 2 에서 이미 판정이 났음에도 불구하고,
                    //계속해서 for문이 돌면서 i = 3, i = 4 ..... i = 99까지 게속해서 확인하려고 할 것이다.
                    //이는 대단히 비효율적이며, 기존 코드에 어떤 코드를 추가 할 필요성이 느껴진다.
                }               
            }
        }
    }
}

이 문제 있는 코드를 개선해보자.

 

 

흐름제어 : break

using System;

namespace Csharp
{
    class Program
    {       
        static void Main(string[] args)
        {
            //소수 : 자기자신과 1로만 나뉘는 수
            int num = 100;

            for (int i = 2; i < num; i++)
            {
                if ((num % i) == 0)
                {
                    Console.WriteLine("소수가 아닙니다.");

                    //소수가 아니라는 것을 i = 2 에서 이미 판정이 났음에도 불구하고,
                    //계속해서 for문이 돌면서 i = 3, i = 4 ..... i = 99까지 게속해서 확인하려고 할 것이다.
                    //이는 대단히 비효율적이며, 기존 코드에 어떤 코드를 추가 할 필요성이 느껴진다.

                    break;
                }               
            }
        }
    }
}

break를 이용하여,

 

i = 2 일 때 소수가 아닌 것을 확인했으므로, 바로 빠져나오기.

 

 

주의 할 것은....!

 

break는 현재 자기가 속해있는 if문을 빠져나가는 것이 아닌,

 

for이나 while문 등을 빠져나가는 것이다...!

 

 

흐름제어 : bool

using System;

namespace Csharp
{
    class Program
    {       
        static void Main(string[] args)
        {
            //소수 : 자기자신과 1로만 나뉘는 수
            int num = 100;

            bool isPrime = true;

            for (int i = 2; i < num; i++)
            {
                if ((num % i) == 0)
                {
                    isPrime = false;
                    
                    break;
                }               
            }

            if(isPrime)
            {
                Console.WriteLine("소수입니다.");
            }
            else
            {
                Console.WriteLine("소수가 아닙니다.");
            }
        }
    }
}

 

 

 

using System;

namespace Csharp
{
    class Program
    {       
        static void Main(string[] args)
        {
            for (int i = 0; i < 100; i++)
            {
                if ((i % 3) == 0)
                {
                    //옛날 방법
                    Console.WriteLine("3으로 나뉘는 숫자 발견 : {0}", i);

                    //최신 방법
                    Console.WriteLine($"3으로 나뉘는 숫자 발견 : {i}");
                }
            }
        }
    }
}

 

 

흐름제어 : continue

using System;

namespace Csharp
{
    class Program
    {       
        static void Main(string[] args)
        {
            for (int i = 1; i < 100; i++)
            {
                if ((i % 3) != 0)
                {
                    continue;
                }
                Console.WriteLine($"3으로 나뉘는 숫자 발견 : {i}");                
            }
        }
    }
}

 

 

 

 

1 이므로, continue를 적용한다.

 

그러므로, Console.WriteLine을 읽지않고

 

다시 for문 처음으로 돌아간다.

2 이므로, continue를 적용한다.

 

그러므로, Console.WriteLine을 읽지않고

 

다시 for문 처음으로 돌아간다.

 

i = 3일 때, 나머지가 0이 되어버리므로

 

if문 안의 continue는 그냥 지나친다.

그리고 Console.WriteLine을 읽는다.

 

continue를 쓰지 않으면 저런식으로 && && && 을 남발 할 소지가 다분하다.

 

그러므로 continue를 쓰도록 하자.

 

 

continue가 게임에서 쓰이는 예시?

 

파티원들에게 전부 힐을 줄려고 할 때, 

 

for문으로 돌면서 적군이면 continue, 아군이면 힐

 

이런식으로 적용할 수 있다.

728x90

' > 섹션 2. 코드의 흐름 제어' 카테고리의 다른 글

09. ref, out  (0) 2021.07.10
08. 함수(ref)  (0) 2021.07.10
06. for  (0) 2021.07.10
05. while  (0) 2021.07.10
04. 상수와 열거형(하드코딩 교정)  (0) 2021.07.10