javaboiii의 JAVA/JAVA 요약정리(멘토씨리즈)

JAVA -4) 제어문1

javaboiii 2024. 7. 15. 20:28

JAVA

1. 제어문

일반적으로 프로그램에 포함된 실행문은 순차적으로 수행되지만 순차적으로만 실행한다면,

프로그램이 매우 길어지거나 표현하기 어려운 상황이 발생할 수 있습니다.

 

이러한 문제를 해결하기 위해 프로그래밍 언어는 제어문을 사용해 실행문을 비 순차적으로 수행할 수 있게 해줍니다.

 

제어문은 실행문의 수행 순서를 변경하는 것으로 조건문, 반복문, 분기문이 있습니다.

조건문과 반복문은 실행 흐름을 제어하는 제어식과 실행문으로 구성되는데 수행문이 여러개 있스면

중괄호{}로 묶어야 합니다.

 

2. 조건문

조건문은 조건식에 때라 프로그램의 흐름을 제어할 수 있는 문법입니다. 삼항 연산자와 같이

조건식이 true 또는 false라는 boolean 결과에 따라 어떤 구문을 실행할지 결정합니다.

 

조건문의 종류

조건문은 크게 if문과 switch문이 있습니다. 일반적으로 고려해야 하는 조건이 적으면 if문을,

조건이 많으면 switch문을 사용하는 것이 효율적입니다.

그렇다고 특정 개수에 따라 반드시 둘 중 하나를 선택해야하는 것은 아닙니다.

 

if 문

if문은 조건문 중에서도 가장 기본이 되는 명령문으로 기본 구조는 다음과 같습니다.

if(조건식){
	코드;
    .....
}

 

조건식에는 ture(참) 또는 false(거짓) 즉, boolean으로 결과를 확인할 수 있는 모든 식을 넣을 수 있습니다.

만약 조건식을 만족하면(즉, 조건식이 true이면) 중괄호{} 안의 코드를 실행합니다.

 

코드가 한줄이라면 중괄호{}를 생략할 수 있습니다.

 

수행문이 하나일 경우에는 생략할 수 있지만 중괄호 블록을 사용하면 가독성이 좋을 뿐 아니라 코드의 해석이

용이하고 버그를 찾아 수정하는 데 도움이 되므로 중괄호를 사용하는 습관을 길러두면 좋습니다.

중괄호를 사용할 때는 들여쓰기를 해야 합니다. 들여쓰기는 공백이나 탭을 이용하는데 혼용하지 않습니다.

 

3. if - else 문

if문을 사용하면 조건식이 true일 때만 제어할 수 있지만 만약, 조건식이 true일때는 A코드를

false일 때는 B코드를 실행시키고 싶다면 if - else문을 사용해야 합니다.

if - else문의  구조는 다음과 같습니다.

if(조건식){
	코드; // 조건식이 true일 때 실행
	...
}
else{
	코드; // 조건식이 false일 때 실행
	... 
}

if - else 문은 if문에서 한 단계 진화하여 조건식이 true일 때는 물론, false일 때는

어떤 코드를 실행시킬지 제어할 수 있습니다. 

 

if - else 문은 삼항 연산자를 이용하면 보다 간단하게 표현할 수 있습니다.

 

4. if - else if 문

if - else if 문은 한 문장에 여러 개의 조건식을 사용할 수 있는 문법입니다. 새로운 문법이 아니라

if - else문이 여러 개 사용되는 것 뿐입니다.

물론, 하나의 if문 안에 두 개 이상의 조건식과 논리 연산을 사용할 수도 있지만 더욱 코드를

간결하고 가독성을 높이기 위한 방법으로 if - else if문을 구현합니다.

if - else if 문의 기본 구조는 다음과 같습니다.

if(조건식1){
	코드; // 조건식이 true일 때 실행
    ...
}
else if(조건식2){
	코드; // 조건식1은 false고 조건식2가 true일 때 실행
    ...
}
else{
	코드; // 위 조건식이 모두 false일 때 실행
    ...
}

else - if문의 수는 제한이 없습니다. 하지만 너무 많은 else if 문을 사용한다면 프로그램의 실행 속도가 현저히 느려질 수 있기 때문에

다른 방법을 함께 고려해야 합니다.

 

if - else if 문을 작성할 때 조건식의 순서를 어떻게 결정하는냐에 따라서 프로그램의 흐름이 완전히 달라질 수 있고,

오류가 발생할 수 있습니다. 그래서 개발자들은 특히 흐름을 정확히 판단해

조건식의 구문과 위치를 결정해야 합니다.

 

5. switch 문

switch 문도 if 문과 함께 조건문에 속하는 구문입니다. 하지만 if문에 들어가는 조건식처럼 모든 형태의

조건식이  들어갈 수 있는 것은 아닙니다.

switch문에 조건으로 사용될 수 있는 연산자는 '==', 즉 두개의 피연산자의 값이 같을 때만

조건으로 활용할 수 있습니다. 따라서 하나의 변수 안에 저장되어 있는 값을 다수의 값과 비교해야할 때

주로 사용합니다.

switch문의 기본 구조는 다음과 같습니다.

switch(변수){
	case 값1 :	// 조건1 : 변수가 값1과 같은 때
		코드;		// 조건1이 만족할 때 실행되는 구문
		...
		...
		break;	// 조건1의 구문을 끝내고, switch 문을 완전히 빠져나가는 역할
	case 값2 :	//조건2 : 변수가 값2와 같을 때
		코드;		//조건2가 만족할 때 실행되는 구문
		...
		...
		break;
	default : 	// 조건1, 2 모두 만족하지 않을 때
		코드;
}

switch 구문의 괄호 안에 있는 변수가 등호식에서의 기준이 됩니다. 변수에 모든 기본 자료형은 물론

String 문자열도 들어 갈 수 있습니다. 프로그램은 이 변수를 각 case의 값과 비교해 변수와 값이 같으면

case 안의 코드를 실행합니다.

 

if 문은 true, false에 따라 실행문이 결정되었다면, switch문은 변수의 값에 따라 실행문이 결정됩니다.

 

switch 문은 식의 결과값과 case 다음의 값이 일치하는 것을 찾아 해당하는 문장을 실행합니다. case 문의

값은 각각 달라야 하며, case 문의 값의 순서는 크기와 상관없이 임의의 순서로 작성해도 됩니다. 또한

값에는 변수나 수식이 올 수 없습니다. case 문의 값이 switch 문의 식과 일치하는 것이 없을 경우

default는 생략할 수 있습니다.

 

break; 키워드는 if - else if 문에서 먼저 만족한 조건이 실행되면 그 블록을 실행한 후if - else if 문을

완전히 빠져나갔던 것처럼, 그 뒤에 따라오는 모든 조건이 실행되지 않도록 switch문을 빠져나가는

역할을 합니다.

 

만약 코드에 break; 키워드가 없다면 case를 시작으로 뒤따라오는 모든 case 구문이 실행 됩니다.

따라서 개발자는 break; 키워드를 적절하게 이용할 수 있어야 합니다.

 

 

응용문제

1. 다음 코드를 실행했을 때 콘솔창에 출력되는 결과는 무엇입니까 ?

package section04;

public class PRACTICE_04_01{
	public static void main(String[] args){
    	int num = 11;
        int result = 1000;
        
        if(num > 10){
        	result = 1100;
        }
        System.out.println(result);
    }
}
실행 결과 : 
1100

2. 다음 코드를 실행했을 때 콘솔창에 출력되는 결과는 무엇입니까 ?

package section04;

public class PRACTICE_04_02{
	public static void main(String[] args){
    	int score = 77;
        char result = 'A';
        
        if(score >= 60){
        	result = 'D';
        }
        else if(score >= 70){
        	result = 'C';
        }
        System.out.println(score + "점의 학점은 "+ result + "입니다");
    }
}
실행 결과 : 
77점의 학점은 D입니다

3. 2번 코드의 실행 결과를 다음과 같이 변경하고 싶을 때, 코드를 어떻게 수정해야 할까요 ?

77점의 학점은 C입니다

package section04;

public class PRACTICE_04_02{
	public static void main(String[] args){
    	int score = 77;
        char result = 'A';
        
        if(score >= 70){
        	result = 'C';
        }
        else if(score >= 60){
        	result = 'D';
        }
        System.out.println(score + "점의 학점은 "+ result + "입니다");
    }
}
score >= 70 조건의 연산을 우선 검사하게 한다
실행 결과 : 
77점의 학점은 C입니다

4. 다음 빈칸에 알맞은 단어를 작성해 보세요.

  • 조건문에 사용하는 조건식은 00000(으)로 결과를 확인할 수 있는 모든 식에 사용할 수 있습니다.

정답 : boolean

5. 다음 문장이 맞으면 O표, 틀리면 X표 하세요.

  • if - else if 문에서 else if 문의 수는 제한이 없습니다 (  )
  • if - else if 문에서 if 조건문과 else if 조건문이 모두 참이면 둘 다 실행됩니다 (  )

정답 : O X

6. 다음과 같은 결과가 나오도록 아래 빈칸에 코드를 switch 문으로 구현해 보세요

package section04;

public class PRACTICE_04_06{
	public static void main(String[] args){
    	int a = 25;
        
        switch(a/10){
        case [     ]
        System.out.println("a는 20 이상의 숫자입니다");
        }
    }
}
실행 결과 : 
a는 20 이상의 숫자입니다

정답 : [2 : ]

'javaboiii의 JAVA > JAVA 요약정리(멘토씨리즈)' 카테고리의 다른 글

JAVA -6)배열  (0) 2024.07.17
JAVA - 5)제어문2  (1) 2024.07.16
JAVA - 3)연산자  (1) 2024.07.14
JAVA - 2)변수와 자료형  (0) 2024.07.13
JAVA - 1)프로그래밍의 기본  (0) 2024.07.12