티스토리 뷰

반응형

4.Chapter04 : 조건문과 반복문

4.1 코드 실행 흐름 제어

  자바 프로그램은 위에서 아래로 실행하는 흐름을 가지고 있다. 이러한 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것이 흐름 제어문이다. 

 

4.2 조건문(if, switch)

  if문

## if
int score = 93;

if(score >= 90){ //조건식
  System.out.println("점수가 90보다 큽니다.");
}

조건식의 결과에 따라 블록 실행 여부가 결정된다. 조건식에는 true / false를 산출할 수 있는 연산식이나
boolean 변수가 올 수 있다.
여기서는 score가 93이므로 실행문을 수행한다.
조건식이 true가 될 때 실행해야 할 문장이 하나 밖에 없다면 `{}`중괄호는 생략 가능하나, 가독성을 위해
작성하는게 좋다.

## else

if(score >= 90){ //조건식
  system.out.println("점수가 90보다 큽니다.");
}else{
  system.out.printl("점수가 90보다 작습니다.");
}
else 블록을 통해 조건식이 false가 될 때 실행될 부분을 작성할 수 있다.

## if-else
if(score >= 90){ //조건식
  System.out.println("점수가 90보다 큽니다.");
}else if(score >= 80){
  System.out.println("점수가 80보다 크고 90보다 작습니다.");
}else{
  System.out.println("점수가 80보다 작습니다.");
}
조건문을 여러 개 줄 수 도 있다. 조건식 중 true가 되는 블록만 실행하고 전체 if문을 벗어난다.

## 중첩 if문
if(score >= 90){ //조건식
  if(score >=95){
   System.out.println("A+"입니다.);
  }else{
    System.out.println("A"입니다.);
  }
}
if문의 블록 내부에 또 다른 if문을 사용할 수 있다. if문 뿐만 아니라, switch, for while, do-while등
서로 중첩하여 사용 가능 하다.

  switch문

switch문은 if문과 마찬가지로 조건 제어문이다. 그러나 if문처럼 조건식이 true일 경우 실행문을
실행하는 것이 아니라, 변수가 어떤 값을 갖느냐에 따라 실행문이 실행된다.
if문은 조건식의 결과가 true/false 두 가지 밖에 없기 때문에 경우의 수가 많을 수록 else-if를 반복적으로
사용해야 해서 코드가 복잡해 진다.

장점 : 비교 대상이 많을 때 if문 보다 효율적이다.
단점 : 사용이 제한 적이다.(실수나 변수 못 쓴다.), 10<변수<15와 같은 범위 값에는 쓸 수 없다.

##switch
int num = (int)(Math.random()*6) +1; // 주사위 번호 하나 뽑기

switch(num){
 case 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;   
 default;
   System.out.println("5아니면 6);
   break;
}   

switch문은 괄호 안의 값과 동일한 값을 갖는 case로 가서 실행문을 실행시킨다. 동일한 값이 없다면
default로가서 실행한다. default는 생략 가능하다. 
case마다 break가 없다면, 다음 case가 case값과 상관 없이 연달아 실행된다.
switch -case -break는 함께 써야 된다고 인지하면 쉽다.
자바 6까지는 switch문의 괄호에는 정수타입 변수나 정수값을 산축하는 연산식만 올 수 있었다.
자바 7부터는 String 타입의 변수도 올 수 있다.

4.3 반복문(for문, while문, do-while문)

  반복문은 어떤 작업(코드들)이 반복적으로 실행되도록 할 떄 사용된다.

  for문

## for문
for문은 주어진 횟수만큼 실행문을 반복 실행할 때 적합한 반복 제어문이다.
for(int i=1; i<=10; i++){
 System.out.println(i);
 }

int i=1 //초기화식 
i<=10 //조건식
System.out.println(i) // 실행문
i++ //증감식

초기화식 -> 조건식 -> 실행문 -> 증감식 -> 조건식
순으로 진행된다. 조건식으로 결과값이 false면 실행문을 실행하지 않고 종료된다.

어떤 경우에는 초기화식이 둘 이상이 있을 수 있고, 증감식도 둘 이상이 있을 수 있다.
ex) for(int i=0, int j=100; i<=50 && j>=50; i++, j--)

for문 또한, 중첩된 for문을 사용할 수 있다.

## 이중 for문
구구단
for(int m=2; m<=9; m++){
 System.out.println("***"+m+"단");
 for(int n=1; n<=9; n++){
  System.out.println(m+"x"+n+"="+(m*n));
  }
}  

while문

for문이 정해진 횟수만큼 반복한다면, while문은 조건식이 true일 경우에 계속해서 반복한다.
조건식이 false면 반복 행위를 멈추고, while문 종료

## while
int i =1;
while(i<=10){
 System.out.println(i);
  i++
} 

주의할점은 조건식으로 사용되는 변수는 사용전 선언 또는 초기화 되어 있어야 한다.
실행순서는 조건식을 평가하고, 평가결과가 true면 실행문을 실행한다. 실행 후 다시 조건 평가

## do-while
while문과 다른 점은 실행문을 먼저 실행하고, 그다음에 조건을 검사한다.
int i=1;
do{
 System.out.println(i);
  i++
}while(i<=10);

break, continue

break문은 반복문인 for, while, do-while을 실행 중지할 떄 사용된다. 또한, switch문을 종료한다.
만약 반복문이 중첩되어 있는 경우 break문은 가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료시키지 않는다.
중첩된 반복문에서 바깥쪽 반복문까지 종료시키려면 바깥쪽 반복문에 이름(라벨)을 붙이고
'break 이름;'을 사용하면 된다.

## break
int i = 1;
while(true){
  System.out.println(i);
  if(i>10){
  	break;
  }
   i++
}
System.out.println("11"); //i가 11이 되면 반복문 종료

## label
label:for(int m=2; m<=9; m++){
 System.out.println("***"+m+"단");
 for(int n=1; n<=9; n++){
  System.out.println(m+"x"+n+"="+(m*n));
  if(m==9 && n==1){
  		break label;
  	}
  }
} 
구구단 9단 1절일 때 중첩 반복문이 종료되며 바깥쪽 for문까지 빠져 나오도록 했다.
label은 중첩된 반복문이 몆개이던 다 빠져 나온다. 나가서 다시 시작할 지점에 라벨명:을 쓴다.


## continue
continue는 반복문인 for, while, do-while에서만 사용 된다. 
continue가 실행되면 for문의 증감식 또는 while, do-while의 조건식으로 이동한다.

for(int i=1; i<=10; i++){
	if(i % 2 !=0){
     continue;    //홀수인 경우 조건식으로 다시 보낸다.
    }
    System.out.println(i); //홀수는 실행되지 않는다.
}

continue는 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break와 다르다.
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함