[Must Have Java][Chapter 06] 제어문

허다람·2024년 5월 20일
post-thumbnail

[Must Have] 이재환의 자바 프로그래밍 입문 책을 읽고 정리한 글입니다.

💡 학습 목표
자바에서 다루는 다양한 제어문을 알아보자.

1. 조건문

조건문은 조건식의 결과가 true인 경우와 false인 경우의 두 가지 흐름을 만들어 낼 수 있다.
자바에서 다음 세 가지 방법으로 조건을 분기킬 수 있다.

  • if문을 사용한 조건 분기 (제어문 사용)
  • 조건 연산자를 사용한 조건 분기 (연산자 사용)
  • switch문을 사용한 조건 분기 (제어문 사용)

1.1 if문

if (x > 1)						if (true)
{								{
	...					=>			...
}								}

컴퓨터의 동작 순서는 x > 1을 비교 연산한다. 그리고 if문은 조건식의 연산 결과가 true이면 중괄호 안의 내용을 실행한다.

1.2 switch문

switch문을 사용하면 많은 선택지를 가지는 분기 처리를 할 수 있다.
조건식의 결과와 일치하는 case 문제 작성된 문장을 실행한다. 조건식의 값이 어떤 case와도 맞지 않으면 default로 넘어가게 된다. 각 case의 마지막에는 break문을 사용해서 선택한 처리만을 실행하도록 한다.

switch문 기본 사용법

int n = 4;

switch(n % 3)
{
case 1:
	System.out.println("나머지가 1");
    break;
case 1:
	System.out.println("나머지가 2");
    break;
default;
	System.out.println("나머지가 0");
}

switch문의 조건식에는 연산식을 넣을 수도 있고 그냥 변수만 넣을 수도 있다.
조건의 분기가 많을 때는 if문을 사용한 조건 분기보다 편하게 사용할 수 있다.

2. 반복문

반복문은 어떤 조건이 성립하는 동안 반복 처리를 실행하는 제어문이다. 자바에서 반복문을 다음 세 가지 방법으로 만들 수 있다.

  • for문을 이용한 반복
  • while문을 이용한 반복
  • do~while문을 이용한 반복

2.1 for문을 이용한 반복

반복문도 중괄호 안의 영역에서 실행되는 수행문이 하나만 있으면 중괄호르 생략할 수 있다.

for(int i = 2; i < 10; i++) {
	System.out.print((2 * i) + " ");
}

// 위 코드를 아래같이 작성할 수 있다.
for(int i = 2; i < 10; i++) 
	System.out.print((2 * i) + " ");

// 같은 줄에 작성 가능, 실행 문장의 끝은 세미클론 ";"으로 구분
for(int i = 2; i < 10; i++) System.out.print((2 * i) + " ");

2.2 for문 요소의 생량 응용

for문을 구성하는 요소는 상황에 따라 생략 가능하다. 증감식에는 보통 ++ 등 단항식을 이용하는데 구체적인 산술 연산식을 작성할 수도 있다.

int i = 0;
for( ; i < 10; i++) { // 초기식 생략
}

i = 0;
for( ; i < 10; ) { // 초기식, 증감식 생략
}

for(int j = 0; j < 10; j = j + 2) { // 증감식 대신 연산 수식
}

2.3 while문을 이용한 반복

while문은 반복의 횟수보다는 처리 조건이 정해져 있을 때, for문은 반복의 횟수가 정해져 있는 때 사용하면 좋다.

while문과 if조건문을 섞어 사용한 예제

int num = 0;
int count = 0;

while((num++) < 100) {
	if((num % 5) != 0) // 5의 배수가 아니면 위로 이동
    	continue;
	if((num % 7) != 0) // 7의 배수가 아니면 위로 이동
    	continue;
        
	count++; // 5오 ㅏ7의 배수이면 실행
    System.out.print(num); // 5와 7의 배수이면 실행
}

2.4 do~while문을 이용한 반복

while문은 먼저 조건식을 평가하기 때문에 첫 번째 반복의 조건식의 결과가 false이면 while문이 수행되지 않을 수 있다.
그에 반해 do~while문은 조건식을 아래쪽에 쓰기 때문에 최소 한 번은 중괄호 안의 문장들이 실행된다.

int num = 0;
int count = 0;

do
{
	num++;
    
    System.out.println(num);
} while(num < 100); 

2.5 레이블을 이용한 중첩된 반복문의 일괄 중지

여러 개의 중첩된 반복문에서는 코드 실행 중간에 break문을 만나면 가장 가까운 반복문을 빠져 나가게 된다.
중첩된 반복문의 안쪽 반복문에서 바깥쪽의 모든 반복문까지 중지하고 다음 코드를 실행하고 싶을 경우엔 레이블을 이용한 반복문의 중지 기능을 사용한다.

반복문에 레이블을 지정하고 break에 레이블 이름을 지정한 예제

	int sum = 0;
myExit: while (true){
	for(int i = 0; i < 100; i++){
    	if(sum > 2000){
        	break myExit; // myExit 반복문까지 한 번에 빠져 나온다.
        }
    }
}

핵심 요약

  • 제어문이란 프로그램의 진행 흐름을 필요에 따라 변경하고 싶을 때 사용한다.
  • 제어문에는 조건문과 반복문이 있다.
  • if문은 조건식의 결과가 true인 경우와 false인 경우 두 가지 흐름을 만들어 낼 수 있다.
  • if문은 조건식 결과를 단순히 체크만 한다.
  • switch문을 사용하면 많은 선택지를 가지는 분기를 처리할 수 있다.
  • 반복문은 어떤 조건이 성립하는 동안 반복 처리를 실행하는 제어문이다.
  • while문은 반복의 횟수보다는 처리 조건이 정해져 있을 때, for문은 반복의 횟수가 정해져있을 때 적합하다.
  • do~while문은 최소 한 번은 중괄호 안의 문장들이 실행된다.
  • 중첩된 반복문에서는 코드 실행 중간에 break문을 만나면 가장 가까운 반복문을 빠져 나간다.
profile
나 java봐라

0개의 댓글