포스트

02. Control

제어문

1. 조건문

1) 정의

  • 조건에 따라 다른 문장이 수행

2-1) if문

  • if, else if, else로 구성된 조건문
  • 조건식 값이 true면 내부 코드가 수행된다
1
2
3
4
5
6
7
8
<if >
if(조건식){
  수행될 코드
}

if(num > 0){
  System.out.println("양수 입니다.");
}
1
2
3
4
5
6
7
8
9
10
11
12
<if ~ else >
if(조건식){
  true   수행될 코드
} else{
  false   수행될 코드
}

if(num % 2 == 0){
  System.out.println("짝수 입니다.");
} else {
  System.out.println("홀수 입니다.");
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<if ~ else if ~ else >
if(조건식1){
  조건식1 true   수행
} else if(조건식2){
  조건식2 true   수행
} else{
  모두 false   수행
}

if(month == 1 || month == 2 || month == 12){
  season = "겨울";
} else if(month >= 3 && month <= 5){
  season = "봄";
} else if(month >= 6 && month <= 8){
  season = "여름";
} else if(month >= 9 && month <= 11){
  season = "가을";
} else{
  season = "해당하는 계절이 없습니다.";
}


2-2) switch 문

  • 조건식의 결과값이 일치하는 case문으로 이동
  • 조건식 안에는 정수값이 배치되어야 함. int 타입의 변수 혹은 int 타입의 값을 반환하는 함수여도 무관. 문자형태도 가능
1
2
3
4
5
6
7
8
9
10
11
12
13
switch(조건식){
  case 조건식 결과1 : 수행될 코드; break;
  case 조건식 결과2 : 수행될 코드; break;
  default : 수행될 코드;
}

switch(num % 5){
  case 1 : team = "1조"; break;
  case 2 : team = "2조"; break;
  case 3 : team = "3조"; break;
  case 4 : team = "4조"; break;
  default : team = "다시";
}


2. 반복문

1) 정의

  • 특정 문장들의 반복 수행

2-1) for문

  • 반복 횟수가 정해진 반복일 때 주로 사용
  • 반복 여부를 결정하는 조건식이 처음에 제시되므로 한 번 도 실행이 안될수도 있다.
1
2
3
4
5
6
7
8
9
10
<for >
for(초기식; 조건식; 증감식) {
  수행될 코드;
}

for(int i = 1; i <= 10; i++) {
  System.out.println(i + "출력");
}

=> 조건식인 i변수가 1부터 시작하여 증감식에 의해 1 증가, i가 11이되는 순간 조건식의 결과값이 false로 바뀌고, 반복문 탈출.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<중첩 for >
for(초기값1; 조건식1; 증감식1) {
  수행될 코드1;

  for(초기값2; 조건식2; 증감식2) {
    수행될 코드2;
  }

  수행될 코드3;
}

=>
1_ for문에 들어가면 수행될 코드1 실행
2_ 두번째 for문으로 진입 두번째 for문의 조건식이 거짓이 될때까지 코드2 반복 수행  탈출
3_ 코드3 시행
4_ 첫번째 for문의 증감식 수행.   위의 과정 반복.


2-2) while 문

  • 반복 횟수가 정해지지 않은 반복일 때 주로 사용
  • 반복 여부를 결정하는 조건식이 처음에 제시되므로 한번도 실행이 안될수도 있음
  • 조건식이 false가 될 때까지 반복 수행
  • {}안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
1
2
3
4
5
6
7
8
9
10
while(조건식) {
  수행될 코드;
  [증감식 or 분기문];
}

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


2-3) do ~ while 문

  • 반복 횟수가 정해지지 않은 반복일 때 주로 사용
  • 반복 여부를 결정짓는 조건식이 아래에 제시되므로, 무조건 한번은 실행됨.
  • 조건식이 false가 될 때까지 반복 수행
  • {}안에 조건을 벗어나게 할 연산(증감식, 분기문) 필요
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
do {
  수행될 코드;
  [증감식 or 분기문];
} while(조건식);

int i = 1;
do {
  System.out.println(i + "출력");
  i++;
} while(i <= 10);

=>
1_ 수행될 코드인 출력이 한번 시행되고, 증감수행.
2_ 조건식 확인
3_ true면 코드 실행, false면 탈출.


3. 분기문

1) break

  • 반복문에서 break를 만나면 반복문 탈출
1
2
3
4
5
6
7
8
9
10
11
12
for(int i = 1;; i++) {
  System.out.println(i + " 출력");
    if(i >= 10) {
    break;
  }
}

=>
1_ for문 중에 조건식이 비었음 -> 무한루프
2_ 변수 i가 증감식에 의해 1 증가.
3_ i가 10이되는 순간 조건식인 if문 조건 충족하여 if문 안의 코드 수행
4_ break를 만나며 반복문 탈출
  • 중첩 반복문에서의 break
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(초기값1; 조건식1; 증감식1) {
  수행될 코드1;
  for(초기값2; 조건식2; 증감식2) {
    수행될 코드2;
    break;
  }
  수행될 코드3;
}

=>
1_ 코드1 수행  두번째 반복문 진입.
2_ 두번째 반복문 안에서 break 만나서 실행.
3_ 반복문을 탈출하는데 두번째 반복문 안에 있었으므로 두번째 반복문 탈출
4_ 코드3 수행

2) continue

  • continue를 만나면 밑의 코드들을 수행하지 않고 반복을 다시 시행
  • for문의 경우 증감식으로, while(do~while)문의 경우 조건식으로 이동
  • 전체 반복 중 특정 조건을 만족하는 경우를 제외할 때 유용
1
2
3
4
5
6
7
8
9
10
11
12
13
for(int i = 1; i <= 10; i++) {
  if(i % 2 == 0) {
    continue;
  }
  System.out.println(i + " 출력");
}

=>
1_ 변수 i가 1 시작. 조건문 만나서 조건식 수행. false 이므로 if문 실행 X
2_ 출력 실행  증감식에 의해 i  1 증가
3_ 조건문 시행. 참이므로 if문 안의 수행코드 시행. continue 만남.
4_ 출력 코드를 수행하지 않고 조건식으로 넘어감
5_ 결과적으로 홀수만 출력됨