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_ 결과적으로 홀수만 출력됨