본문 바로가기

Java/기본 이론

[JAVA] Chapter 12. 제어문- 흐름제어문

1. 흐름제어(분기)문

반복문은 조건이 참이라면 지정한 실행문을 지속적으로 반복한다. 경

우에 따라서 조건의 값이 변화하지 않도록 동작을 구성하기도 한다.

 

이런 경우, 무한 루프가 생성되어 지속적으로 반복한다.

무한반복은 알고리즘이 끝나지 않음을 이야기하며 메모리 낭비를 비롯하여 보안 자체의 취약점으로 작용하기도 한다.

 

이러한 문제를 해결하려면 특정 조건에 따라 예외 조건을 주어야한다.

이때 사용하는 것이 바로 흐름제어문이다. 흐름제어문에는 break, continue, return 총 3가지가 있다. 

 

2. break;

레이블이나 루프 밖 등 특정 위치로 분기하는 제어문이다.

break는 그 문장이 포함된 루프만 빠져나온다. 2중 for 혹은 while에서 사용한다면 문장이 포함된 블록("{}안에") 항목을 탈출하여 가까운 블록("기존 블록의 바깥 블록, 상위 {}")로 이동한다. 

 

3. continue;

continue; 는 자신이 포함된 반복문 연산 순서의 마지막으로 이동하는 명령어이다.

for문은 마지막 연산 순서가 증감식이기 때문에 증감식으로 이동하고, while은 조건식으로 이동한다. 

 

int i;

for (i = 1; i <=10; i++)
{
	if ( i % 2 ==0) 
	{
		continue;
	} 
	System.out.print( i + “\t”);
}

 

 

해당 프로그램은 지정 범위에서 홀수만 출력하는 프로그램이다. 

 

4. return; 

포함된 문장의 값을 반환하여 method에서는 결과 값을 돌려받는다. 

다수의 method를 사용할 때 유용하다.

 

public static void main(String[] args)
{
	add(5, 3);
	//해당 함수 결과는 8

}

static int add(int a, int b)
{
    int c;
    c = a + b;
    return c;
}

 

return 제어문은 함수에서 사용되며 특정 값을 돌려주는 역할을 한다.

간략하게 말해 f(x)=y 라면 f(x)에 따라 값을 계산하고 y에 결과를 돌려주는 것이다.  

 

 

알아두기- goto;

C언어의 경우 Java의 3가지와 더불어 goto; 흐름제어문까지 있다.

goto는 개발자가 지정한 항목으로 이동하는 명령어인데 알고리즘 오류를 야기할 수 있고, 실제로 다른 제어문과 예외조건을 설정하는 것이 유지 보수에 더욱 쉬워 자주 사용하지 않는다.