[코드스테이츠 BE 45기] <Section1> Week2 (Java 기초3)
반복문
코드들이 반복적으로 실행되도록 할 때 사용
for문, while문, do-while문
for문과 while문은 서로 변환이 가능하기 때문에 반복문을 작성할 때 어느 쪽을 선택해도 좋지만, for문은 반복 횟수를 알고 있을 때 주로 사용하고, while문은 조건에 따라 반복할 때 주로 사용
for문
조건식을 충족하는 동안 초기화식부터 시작해서 증감식의 규칙을 따라서 실행
조건이 충족하지 않으면, 실행문을 실행하지 않고 끝남
초기화식이 필요 없을 경우에는 초기화식을 생략 가능
초기화식이나 증감식도 둘 이상이 될 수 있음
for(int i=0, j=100; i<=50 && j>=50; i++, j--) {
실행문;
실행문;
}
조건식이 참인 동안 주어진 횟수만큼 실행문을 반복적으로 수행
- 초기화는 for문이 시작할 때 최초 한 번만 수행되며, 사용할 변수의 초깃값을 정합니다.
- 조건식은 계속 반복할지 여부를 결정하는 조건입니다. 조건식 안의 값이 true라면 실행문을 실행시키고, false라면 더 이상 블록을 실행하지 않고 끝납니다.
- 증감식은 반복 횟수를 결정하는 규칙입니다. 변수에 값을 더하거나 곱하는 등 수행 방식을 지정합니다. ++ 은 반복문에서 자주 쓰는 증감연산자로, 피연산자의 값을 1 증가시킵니다.
public class Main {
public static void main(String[] args) {
int sum = 0;
// for (초기화; 조건식; 증감식)
for(int num = 0; num < 10; num++) {
sum += num;
}
System.out.println(sum); // 1~9의 합인 45가 출력됩니다.
}
}
num은 number(숫자)의 줄임말로, 임의로 지정한 변수명(반복문에는 i 라는 변수명을 많이 사용)
반복문이 없다면, 우리는 sum = sum + (숫자); 와 같은 구문을 10번 작성해주어야 할 것
- num이라는 변수를 선언하고, 초깃값으로 0을 대입
- num는 현재 10보다 작으므로(num < 10), 실행 블록 안의 코드가 최초로 수행됨
- 실행 블록을 빠져나오면 num이 1 증가함(num++).
- num은 현재 1입니다. 여전히 10보다 작으므로, 실행 블록 안의 코드가 두 번째로 수행됨
- num이 9일 때까지 반복됨
- num이 10이 되면 10보다 작다는 조건을 만족하지 못하므로, for문이 종료됨
while문
조건식이 true일 경우에 계속해서 반복합
for문과 while문은 초기화, 증감식의 위치만 다를 뿐 상호 대체가 가능
(초기화);
while(조건식) {
실행문; //조건식이 참인 동안 실행
증감식;
}
초기화와 증감식은 필요가 없다면 생략 가능
int num = 0, sum = 0;
while(num <= 10) {
sum += num; //sum = sum + num과 똑같은 식입니다. 복합 대입 연산자 "+="를 사용한 표현입니다.
num++;
}
System.out.println(sum);
- num과 sum이라는 정수 타입의 변수를 선언하고 초기값으로 0을 대입합니다.
- num은 현재 10보다 작으므로 블록 안의 코드가 수행됩니다.
- sum이 현재의 num만큼 증가하고 num이 1 증가합니다
- num은 현재 1입니다. 여전히 10보다 작으므로, 실행 블록 안의 코드가 두 번째로 수행됩니다.
- num이 10인 경우까지 반복됩니다.
- num은 현재 11입니다. 조건식이 거짓이므로 while문이 종료됩니다.
이때 조건식에는 boolean 변수나 true / false 값을 산출하는 어떠한 연산식이든 올 수 있음
만약 조건식에 true 를 사용하면 while(true) { ... } 가 되어서 무한 루프를 돌게 됨
무한 루프는 무한히 반복하여 실행하기 때문에 언젠가는 while 문을 빠져나가기 위한 탈출 코드가 필요
public class Main {
public static void main(String[] args) {
boolean run = true;
int num = 1;
while(run){ // while(true) 조건문
num++; //실행문
System.out.println(num); //실행문
if(num == 22) { //조건문, num이 22가 되면 탈출! 얏호!
run = false;
}
}
}
}
위 코드는 num 이 22가 되었을 때 탈출 하는 탈출 코드를 작성하였지만, while 문을 빠져나가기 위한 또 다른 방법으로는 break 문을 이용하는 방법도 있습니다.
// 운동장에서 뛰세요 → 어디로? 어디까지? 얼마나?
//for(어디부터; 어디까지; 얼만큼씩)
for(int 시작 = 0; 시작 <= 5; 시작++){ // 2칸씩 뛰고싶으면for(int 시작 = 0; i<=10; 시작 = 시작 + 2)
//요안에 있는 애들이 위에 조건만큼 반복됨
//무엇을 반복할지 생각
System.out.println("hello");
}
0 시작 = 0 입력 → 시작 <= 5 로 가서 확인
트루인지 확인했으면 System.out.println("hello") 실행식으로 가서 헬로 실행
실행했으면 시작++ 증감식으로 가서 증감 실행1
1 다시 시작1 <= 5 조건식에 가서 트루인지 확인 → 코드실행 → 헬로출력 → 시작++ 증감으로 다시 감 → 증감실행 시작2
2 다시 시작2 <= 5 조건식에 가서 트루인지 확인 → 코드실행 → 헬로출력 → 시작++ 증감으로 다시 감 → 증감실행 시작3
3 다시 시작3 <= 5 조건식에 가서 트루인지 확인 → 코드실행 → 헬로출력 → 시작++ 증감으로 다시 감 → 증감실행 시작4
4 다시 시작4 <= 5 조건식에 가서 트루인지 확인 → 코드실행 → 헬로출력 → 시작++ 증감으로 다시 감 → 증감실행 시작5
5 다시 시작5 <= 5 조건식에 가서 트루인지 확인 → 코드실행 → 헬로출력 → 시작++ 증감으로 다시 감 → 증감실행 시작6
6 다시 시작6 <= 5 조건식에 가서 트루인지 확인 →False → }반복문 포루프 밖으로 나가게됨
// while(조건식){
//
// }
int 시작 = 0; //어디서부터 돌아라 하는 시작점이 필요
while(시작 <= 5){ //어디까지 뛰어라
System.out.println("hello");
시작++; //++시작 해도 여기서는 영향 미치지 않음
}
0 조건으로 가서 시작0 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작1
1 조건으로 가서 시작1 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작2
2 조건으로 가서 시작2 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작3
3 조건으로 가서 시작3 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작4
4 조건으로 가서 시작4 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작5
5 조건으로 가서 시작5 <= 5 트루인지 확인 →트루: 실행 hello → 시작++로 가서 증감→ 시작6
6 조건으로 가서 시작6 <= 5 트루인지 확인 →펄스 → } 와일루프를 나감