Study/Java

[Java] 조건문 / 반복문 (if/else if/for/while/do-while)

growingtree 2022. 1. 6. 23:38

1. 제어문

제어문 : 자바 프로그램읠 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해줌

제어문은 1) 조건식 2) 중괄호({}) 블록으로 구성

  • 조건식의 연산결과에 따라 블록 내부의 실행여부가 결정된다.

1) 제어문의 종류

  • 제어문에는 조건문과 반복문이 있다.
  • 조건문 : if문 / switch문
  • 반복문 : for문 / while문 / do-while문
  • 조건문의 경우, 제어문 블록을 빠져나와 정상 흐름(위에서 아래)으로 돌아온다.
  • 반복문의 경우, 제어문 블록을 빠져나와 처음으로 다시 되돌아가 반복 실행한다. (loop)
  • 제어문안에 또다른 제어문을 넣을 수 있어서 개발자가 원하는 복잡한 흐름제어도 가능

2. 조건문

1) if문

if (조건식) {
    실행문;
    실행문; 
} 

if 문의 중괄호 블록은 여러개의 실행문을 하나로 묶기 위해 작성된다, if 뒤에 나오는 조건식이 참(true)이면 중괄호 블록 안의 실행문을 실행한다.

int score = 95;

if (score > 90){ // 조건식 (score > 90)이 참이면 중괄호 블록 실행 
    System.out.println("점수가 90보다 크다");
    System.out.println("A 입니다"); 
}

2) if-else문

  • if문의 조건식이 true면 if문의 블록이 실행되고, 조건식이 false면 else 블록이 실행된다. 조건식의 결과에 따라 이 두 개의 블록 중 어느 한 블록의 내용만 실행하고 전체 if문을 벗어나게 된다.
int score = 95;

if (score > 90){ // 조건식 (score > 90)이 참이면 if 블록 실행 
    System.out.println("점수가 90보다 크다");
    System.out.println("A 입니다"); 
}
else { // if의 조건식(score > 90)이 거짓이면 else 블록 실행 
    System.out.println("점수가 90보다 작습니다");
    System.out.println("B 입니다"); 
}

3) if - else if - else문

  • 조건문이 여러개인 if문도 가능하다. 처음 if문의 조건식이 false일 경우, 다른 조건식의 결과에 따라 실행 블록을 선택할 수도 있는데 if문 끝에 else if문을 붙이면 된다.
  • else if문은 수의 제한이 없다.
  • else if문 뒤에는 else 블록을 추가할 수 있는데 위에 있는 모든 조건식이 거짓(false)인 경우에 else의 블록을 실행한다.
int score = 95;

if (score > 90){ // 조건식 (score > 90)이 참이면 if 블록 실행 
    System.out.println("점수가 90보다 크다");
    System.out.println("A 입니다"); 
}
else if(score>= 80) { // 위 if문 조건에는 부합하지 않지만 else if문에는 부합하는 경우 
    System.out.println("점수가 80~89입니다");
    System.out.println("B 입니다"); 
}
else if(score>= 70) {
    System.out.println("점수가 70~79입니다");
    System.out.println("C 입니다"); 
}
else { // 위 조건 중 하나도 해당하지 않는다면, score 가 70 이하라면 
    System.out.println("점수가 70보다 작습니다");
    System.out.println("D 입니다"); 
}

4) 중첩 if문

  • if문 안에 또다른 if문을 사용할 수 있다. 이것을 중첩 if문이라고 부른다. 중첩의 단계는 제한이 없고 if문 뿐만 아니라 제어문의 경우 다 중첩할 수 있다.
int score = 95;

if (score > 90){ 
    if (score >= 95){
    System.out.println("점수가 95이거나 그보다 크다");
    System.out.println("A+ 입니다");
    }else{
    System.out.println("점수가 90보다 크다");
    System.out.println("A 입니다"); } 
}

5) switch문

  • switch문도 if문과 같은 조건제어문에 해당한다.
  • switch문은 변수가 어떤 값을 갖느냐에 따라 실행문이 선택된다. (if문과의 차이점)
  • switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다. 괄호 안의 값과 동일한 값을 갖는 case가 없으면 default로 가서 실행문을 시킨다. (default는 생략가능)
  • case에는 숫자도 가능하고 문자, 문자열도 가능하다 .
int num = (int)(Math.random()*6)+1; 

switch(num){
    case 1 : // num의 값이 1인 경우, 
        System.out.println("1이 나왔습니다");
        break; 

    case 2 : 
        System.out.println("2가 나왔습니다");
        break; 

    case 3 : 
        System.out.println("3이 나왔습니다");
        break;

    case 4 : 
        System.out.println("4가 나왔습니다");
        break; 

    case 5 : 
        System.out.println("5가 나왔습니다");
        break; 

    default: //default를 안쓰면 아무것도 출력안됨 
        System.out.println("6이 나왔습니다"); 
        break; 
}

3. 반복문

반복문은 어떤 작업(코드)들을 반복적으로 실행해야할 때 사용한다.

1) for문

  • for문은 정해진 횟수만큼 반복해야할 때 사용한다.
int sum = 0 ; 
for (int i = 1; i <= 100; i++){ // i가 1부터 100일때까지 중괄호 블록의 실행문을 반복한다. 
    sum += i ;
}
System.out.println(sum); 

for문의 구조를 살펴보면 for (초기화식 ; 조건식 ; 증감식) { 실행문 } 으로 구성되어 있다.

  • 초기화식에서 선언된 변수는 for문 블록 내에서 사용되는 로컬 변수이다. 따라서 for문 바깥에서 사용할 수 없다.
  • 조건식이 true면 실행문을 실행시키고 false면 for문 블록을 실행시키지 않고 끝난다.
  • 만약 초기화식이 필요없는 경우 생략할 수 있다. ex) for ( ; i≤100 ; i++)
  • for문 작성시 , 초기화 식에서 루프 카운트 변수를 선언할 때 부동소수점타입은 사용하지 말아야한다. → 루프 실행 시 지정된 횟수만큼 실행 안될 수 있음.

2) while문

  • for문이 정해진 횟수만큼 반복한다면 while문은 조건식이 true인 경우 계속해서 반복한다.
  • 조건식에는 비교 or 논리연산식이 주로 오는데, 조건식이 false가 되면 반복행위를 멈추고 while문을 종료한다.
int i = 1;  //카운터 변수 i 

while (i<=10) { //i가 10과 같거나 작을 때까지 
    System.out.println(i); 
    i++ ; // i+=1 
} 
  • 조건식에는 boolean 변수나 true/false 값을 산출하는 연산식이 올 수도 있음
  • 만약 조건식에 true가 들어가면 (while (true) {} ) 항상 조건식이 true가 되면서 무한루프를 돈다.
  • 무한루프는 무한히 반복하기 때문에 언젠가는 while문을 빠져나가기 위한 코드가 필요하다. (if)

int i = 1; 
while (i>0) {
        System.out.println(i);  // i는 항상 0보다 크기때문에 무한루프를 돌게된다. 
        i++; 
} 

// 무한루프를 빠져나오기 위한 코드 추가 
int i = 1; 
while (i>0) {
    if(i==10) {
        System.out.println(i);
        System.out.println("Finished!"); 
        break; // while문을 빠져나오기 위한 break 추가 
    }
    System.out.println(i);
    i++;  
}

3) do-while문

do-while문은 조건식에 의해 반복 실행된다는 점에서는 while문과 동일하다.

  • while문은 시작할 때부터 조건식을 검사하여 블록 내부를 실행할지 결정하지만 경우에 따라서는 블록 내부의 실행문을 우선 실행시키고 실행 결과에 따라서 반복 실행을 계속할지 결정하는 경우도 생긴다. → 이럴 때 do-while문을 사용할 수 있다.
  • 즉 , do-while문은 무조건 한 번 이상 실행되는 반복문이다.
int i = 10; 

do {
    System.out.println(i);
    i--; 
} while(i > 1); 
  • 실행문을 먼저 실행할 때 do-while문을 주로 사용한다.!

참고 자료

 

이것이 자바다 - 신용권, 한빛미디어  

 

반응형