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 |