본문 바로가기

Java/기본 이론

[JAVA] Chapter 09. 제어문- 조건문

 

제어문이란 프로그램 문장을 조건에 따라 흐름을 제어하거나, 동일한 문장을 여러 번 반복하도록 하는 문장을 말한다.

조건에 따라 흐름을 제어하는 것을 '조건문'이라고 하고, 동작을 반복하는 것을 '반복문이라고 한다.

 

1. 조건문 개요

조건문은 자바 프로그래밍에 매우 중요한 역할을 한다.

프로그램은 어떠한 동작이나 기능을 위한 계획이고, 이러한 계획은 논리체계에 따라 값의 대입과 산출로 이루어진다.

때문에 조건에 따라 어떠한 기능을 한다는 프로그램의 근본이라고 할 수 있다.

 

조건문은 이러한 프로그램의 기초 속성을 구현하기 위해 필요한 필수 요소이며, 해당 조건문을 이해한다면 알고리즘 제작을 비롯한 논리 체계를 프로그램에 대입할 수 있다. 

 

2. if - else

특정 조건이 만족되면 실행문을 수행하는 조건문이다.

기본 형태는 if (조건) {실행문1;} else{실행문2;} 이다.

조건이 ‘참’인 경우 {실행문1}을 구현하지만, 참이 아니라면 {실행문1} 뒤에 위치한 else 명령을 실행한다.

 

조건의 ‘true’ 혹은 ‘false’ 여부에 따라 프로그램의 구현 범위나 기능을 설정할 수 있으며, 논리 구조인 ‘알고리즘’을 구축할 수 있다.

조건의 true 여부를 판단하는 것이므로 조건 자체에 true 를 입력하여도 구동이된다. 

 

if (조건1){실행문1;} else {실행문2;}
int a = 5, 
b = 15;

if (a > 10) 
{
	System.out.println("a ="+a);
}
else 
{
	System.out.println("a < 10");
} 

if (b>1) {
	System.out.println("b="+b);
}

 

해당 조건문에서 else 이후로 조건을 추가하여 복잡한 알고리즘을 구현하고 싶다면 else if로 추가 조건을 삽입할 수 있다. 

 

if (조건1){실행문1;} else if (조건2){실행문2;} else if (조건3){실행문3;} else {실행문4;}
int a = 5, 
b = 15;

if (a > 10) 
{
	System.out.println("a > 10");
}
else if (a > 7)
{
	System.out.println("a > 7");
}
else if (a > 4)
{
	System.out.println("a > 4");
} 
else 
{
	System.out.println("a < 4");
}

 

조건 1이 만족하면 실행문 1을 수행하고, 만족하지 못하면 다음 조건으로 수렴한다.

순차적으로 알고리즘을 구성하기 때문에 동일한 if ~ else if 문에서 2가지의 동작을 동시에 실행할 수는 없다.

다시 말해 (조건1)이 만족된 경우 (조건 2)이하의 명령문은 수행하지 못한다는 것이다.

 

3. 분기문: switch(변수) {case value: 실행문}

if는 참 혹은 거짓의 데이터로 기능을 구현하였다면, switch는 지정된 변수의 데이터의 값으로 명령의 실행 여부를 판단한다.

정확히는 변수의 값(value)과 일치하는 case로 이동하여 해당 실행문부터 순차적으로 수행하는 것이며, 이에 따라, 조건문보다는 분기문으로 표현하는 것이 적절하다. 

 

만약 조건문으로 사용하고 싶다면 실행문의 구동후에 동작의 마무리 범위를 지정해주어야 한다.

break;로 조건을 마무리하며, 만약 break가 없을 경우 프로그램이 의도대로 구현되지 않을 수도 있다.

이는 break를 통해 분기문의 탈출이 이루어지지 않아, 하단의 value 값에 대한 연산까지 진행하기 때문이다.

 

위에서 아래로 순차에 따라 논리를 산술하며 case에 지정되지 않은 값은 default로 수렴하여 마무리된다. 

 

public class SwitchDemo {
    public static void main(String[] args) {
        int month = 8;
        
        String monthString = "";
        
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        
        System.out.println(monthString);
    }
}