반복문을 이용하면 특정 코드를 개발자가 원하는 횟수만큼 반복 제어하여 생산성을 향상하고, 유지보수성을 향상시킬 수 있다.
반복문의 종류로는 for, while, do while, for(foreach)가 있다. 이때, foreach는 향상된 for문(Enhanced for statement)을 의미한다.
💡for문
for (초기식; 조건식; 증감식){
문장;
}
for문은 초기식, 조건식, 증감식으로 구성되며 소괄호 안에 문장을 3개 넣을 수 있다.
반복문은 증감식을 만나면 반복문을 나오지 않고, 다시 초기식으로 돌아간다는 특징이 있다.
1. 초기식: 루프 변수(i)를 초기화한다.
2. 조건식: 루프 지속 유무를 결정한다.
3. 증감식: 루프 변수에 변화를 주는 역할을 한다. (언젠가 루프를 탈출할 수 있도록-false)
"안녕하세요" 문장을 3회 출력하는데 사용할 수 있는 방법을 살펴보며 반복문의 특성을 알아보도록 하자.
Case 1: 등짝을 맞는 방법
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
시간에 쫓길 때 사용할 수 있는 방법이다. 하지만 빨랐죠?
같은 목적을 가지고 있는 코드는 두 번 이상 사용하지 않는 것이 좋다.
Case 2: 메소드를 활용하는 방법
public static void main(String[] args) {
hello();
hello();
hello();
}
public static void hello() {
System.out.println("안녕하세요.");
}
메소드 호출을 반복함으로써 출력하며, 이 방법은 코드를 수정하기에 용이하다는 장점이 있다.
하지만 위의 과정을 for문으로 작성하여 더욱 단순하게 하는 것이 가능하다.
Case 3: 반복문을 활용하는 방법
for(int i = 1; i <= 3; i++) {
System.out.println("안녕하세요.");
}
1. 초기식: 메모리에 i라는 변수를 만들고 1로 초기화한다.
2. 조건식: i가 3보다 작거나 같은지 검사한다.
3. 문장: 블럭(문장)을 실행한다.
4. 증감식: i에 1을 더해 저장한다.
(초기식은 처음 한 번만 실행된다.)
for문은 위 과정을 반복하며 "안녕하세요" 문장을 3회 출력한다.
for문의 다양한 사용
for (int i = 1; i <= 5; i++) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 5; i <= 9; i++) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 1; i <= 9; i = i + 2) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 5; i > 0; i--) {
System.out.println("실행문");
}
System.out.println("");
위의 4가지 for문은 모두 다른 방법이지만, 출력하는 건 같다.
통상적으로 1식 증가하는 for문을 많이 사용하긴 하지만, 필수는 아니므로 상황에 따라서 적절하게 사용하면 된다. 그리고 증감식에서 꼭 ++를 사용할 필요 또한 없다.
for(int i = 1; i <= 10; i++) {
System.out.println(i);
}
for문은 수열 등을 표현할 때, 내가 원하는 숫자의 패턴 값을 수월하게 공급받기 위해 사용할 수 있다.
단순히 for문을 돌리는 게 중요한 게 아니라 내가 원하는 패턴 값을 만드는 게 훨씬 중요하다.
따라서 for문은 아래의 두 가지 목적으로 사용한다는 것을 알 수 있다.
1. 원하는 횟수 만큼 반복하는 목적
2. 원하는 패턴대로 루프 변수 값을 얻는 목적
무한루프 Infinite Loop
int sum = 0; // 누적 변수
int num = 0; // 입력
Scanner scan = new Scanner(System.in);
// 무한루프
for (;;) {
System.out.print("숫자: ");
num = scan.nextInt();
if (num % 2 == 0) { // 짝수 입력시 종료
break;
}
sum += num;
}
System.out.println(sum);
회전수를 예측하기 힘들 때 무한루프를 사용한다.
위 소스코드는 사용자의 숫자 입력을 누적하여 저장하되, 짝수를 입력하면 루프를 종료한다.
다중 for문
// 대회전 (시침)
for (int i = 0; i < 10; i++) {
// 중회전 (분침)
for (int j = 0; j < 10; j++) {
// 소회전 (초침)
for (int k = 0; k < 10; k++) {
// 실행문
if (j == 5) {
break;
}
System.out.printf("i: %d, j: %d, k: %d\n", i, j, k);
}
}
}
for문은 2중, 3중으로도 사용이 가능하며, 시침, 분침, 초침으로 생각하면 이해하기 쉽다.
위의 3개의 for문은 단지 겹쳐놓은 것임으로, k를 선언한 for문 내에서 break문을 만나더라도 모든 반복문을 나가는 게 아니라 해당 break문을 포함하고 있는 1개의 반복문(k루프)만을 나가게 된다.
💡while문
while (조건식) {
문장;
}
while은 조건식을 만족하면 다시 올라가 실행하며, if를 반복하는 구조라고 생각하면 편하다.
조건을 만족하지 않으면 반복문을 빠져나온다.
for문과 while문의 공통점
for (int i = 1; i <= 10; i++) { // 초기식, 조건식, 증감식
System.out.println(i);
}
System.out.println();
int num = 1; // 초기식
while (num <= 10) { // 조건식
System.out.println(num);
num++; // 증감식
}
위의 for문과 while문 모두 1 ~ 10까지 출력하는 코드이다.
따지자면 for문과 while문은 같다고 할 수 있다. while문도 for문과 같이 초기식, 조건식, 증감식을 필요로 하기 때문이다.
다만 for문은 양식이 정해진 딱딱한 코드라고 하면, while문은 그보다 유연한 코드라고 할 수 있다. 초기식, 증감식에 정해진 위치가 없으므로 while문이 for문보다 활용이 용이하다.
💡do while문
do {
문장;
} while (조건식);
while문은 선조건 후조건인 반면, do while문은 선실행 후조건이다.
do while문은 조건식이 false라고 하더라도 조건과 상관없이 처음은 무조건 실행한다.
do while문을 이용하는 작업이 많이 없기 때문에 자연스럽게 도태되었다.
반복문을 이용하면 특정 코드를 개발자가 원하는 횟수만큼 반복 제어하여 생산성을 향상하고, 유지보수성을 향상시킬 수 있다.
반복문의 종류로는 for, while, do while, for(foreach)가 있다. 이때, foreach는 향상된 for문(Enhanced for statement)을 의미한다.
💡for문
for (초기식; 조건식; 증감식){
문장;
}
for문은 초기식, 조건식, 증감식으로 구성되며 소괄호 안에 문장을 3개 넣을 수 있다.
반복문은 증감식을 만나면 반복문을 나오지 않고, 다시 초기식으로 돌아간다는 특징이 있다.
1. 초기식: 루프 변수(i)를 초기화한다.
2. 조건식: 루프 지속 유무를 결정한다.
3. 증감식: 루프 변수에 변화를 주는 역할을 한다. (언젠가 루프를 탈출할 수 있도록-false)
"안녕하세요" 문장을 3회 출력하는데 사용할 수 있는 방법을 살펴보며 반복문의 특성을 알아보도록 하자.
Case 1: 등짝을 맞는 방법
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
시간에 쫓길 때 사용할 수 있는 방법이다. 하지만 빨랐죠?
같은 목적을 가지고 있는 코드는 두 번 이상 사용하지 않는 것이 좋다.
Case 2: 메소드를 활용하는 방법
public static void main(String[] args) {
hello();
hello();
hello();
}
public static void hello() {
System.out.println("안녕하세요.");
}
메소드 호출을 반복함으로써 출력하며, 이 방법은 코드를 수정하기에 용이하다는 장점이 있다.
하지만 위의 과정을 for문으로 작성하여 더욱 단순하게 하는 것이 가능하다.
Case 3: 반복문을 활용하는 방법
for(int i = 1; i <= 3; i++) {
System.out.println("안녕하세요.");
}
1. 초기식: 메모리에 i라는 변수를 만들고 1로 초기화한다.
2. 조건식: i가 3보다 작거나 같은지 검사한다.
3. 문장: 블럭(문장)을 실행한다.
4. 증감식: i에 1을 더해 저장한다.
(초기식은 처음 한 번만 실행된다.)
for문은 위 과정을 반복하며 "안녕하세요" 문장을 3회 출력한다.
for문의 다양한 사용
for (int i = 1; i <= 5; i++) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 5; i <= 9; i++) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 1; i <= 9; i = i + 2) {
System.out.println("실행문");
}
System.out.println("");
for (int i = 5; i > 0; i--) {
System.out.println("실행문");
}
System.out.println("");
위의 4가지 for문은 모두 다른 방법이지만, 출력하는 건 같다.
통상적으로 1식 증가하는 for문을 많이 사용하긴 하지만, 필수는 아니므로 상황에 따라서 적절하게 사용하면 된다. 그리고 증감식에서 꼭 ++를 사용할 필요 또한 없다.
for(int i = 1; i <= 10; i++) {
System.out.println(i);
}
for문은 수열 등을 표현할 때, 내가 원하는 숫자의 패턴 값을 수월하게 공급받기 위해 사용할 수 있다.
단순히 for문을 돌리는 게 중요한 게 아니라 내가 원하는 패턴 값을 만드는 게 훨씬 중요하다.
따라서 for문은 아래의 두 가지 목적으로 사용한다는 것을 알 수 있다.
1. 원하는 횟수 만큼 반복하는 목적
2. 원하는 패턴대로 루프 변수 값을 얻는 목적
무한루프 Infinite Loop
int sum = 0; // 누적 변수
int num = 0; // 입력
Scanner scan = new Scanner(System.in);
// 무한루프
for (;;) {
System.out.print("숫자: ");
num = scan.nextInt();
if (num % 2 == 0) { // 짝수 입력시 종료
break;
}
sum += num;
}
System.out.println(sum);
회전수를 예측하기 힘들 때 무한루프를 사용한다.
위 소스코드는 사용자의 숫자 입력을 누적하여 저장하되, 짝수를 입력하면 루프를 종료한다.
다중 for문
// 대회전 (시침)
for (int i = 0; i < 10; i++) {
// 중회전 (분침)
for (int j = 0; j < 10; j++) {
// 소회전 (초침)
for (int k = 0; k < 10; k++) {
// 실행문
if (j == 5) {
break;
}
System.out.printf("i: %d, j: %d, k: %d\n", i, j, k);
}
}
}
for문은 2중, 3중으로도 사용이 가능하며, 시침, 분침, 초침으로 생각하면 이해하기 쉽다.
위의 3개의 for문은 단지 겹쳐놓은 것임으로, k를 선언한 for문 내에서 break문을 만나더라도 모든 반복문을 나가는 게 아니라 해당 break문을 포함하고 있는 1개의 반복문(k루프)만을 나가게 된다.
💡while문
while (조건식) {
문장;
}
while은 조건식을 만족하면 다시 올라가 실행하며, if를 반복하는 구조라고 생각하면 편하다.
조건을 만족하지 않으면 반복문을 빠져나온다.
for문과 while문의 공통점
for (int i = 1; i <= 10; i++) { // 초기식, 조건식, 증감식
System.out.println(i);
}
System.out.println();
int num = 1; // 초기식
while (num <= 10) { // 조건식
System.out.println(num);
num++; // 증감식
}
위의 for문과 while문 모두 1 ~ 10까지 출력하는 코드이다.
따지자면 for문과 while문은 같다고 할 수 있다. while문도 for문과 같이 초기식, 조건식, 증감식을 필요로 하기 때문이다.
다만 for문은 양식이 정해진 딱딱한 코드라고 하면, while문은 그보다 유연한 코드라고 할 수 있다. 초기식, 증감식에 정해진 위치가 없으므로 while문이 for문보다 활용이 용이하다.
💡do while문
do {
문장;
} while (조건식);
while문은 선조건 후조건인 반면, do while문은 선실행 후조건이다.
do while문은 조건식이 false라고 하더라도 조건과 상관없이 처음은 무조건 실행한다.
do while문을 이용하는 작업이 많이 없기 때문에 자연스럽게 도태되었다.