1. 반복문 개요
특정 동작을 조건이나 횟수에 따라 반복(Loop)하는 것을 반복문이라고 한다.
2. 반복문 for
for (초기화; 종료 조건(참 혹은 거짓 여부); 증감 수식) {실행문}
for 반복문은 초기값을 확인한 뒤에 종료 조건의 충족여부를 확인하고, 종료 조건이 참이라면 증감 수식을 수행한다.
그 뒤 ‘실행문’을 수행하고 ‘종료 조건’의 충족 여부를 확인하여 증감과 실행문을 반복한다.
int i = 0;
System.out.print(++i);
System.out.print(++i);
System.out.print(++i);
System.out.print(++i);
System.out.print(++i);
++i
// 아래와 위의 동작은 동일하다. 결국 for문을 쓰는 것이 더 효율이 좋다는 것이다.
i = 0;
for( i=1; i<6; i++)
{
System.out.print(i);
}
- 최종 Print 값: 12345
- 최종 i 값: 6
예제의 최종 구현 결과는 동일하지만 for을 이용하면 더욱 간략하게 표현할 수 있다.
10회 이하의 반복이라면 유의미한 데이터 차이는 없겠으나, 실행횟수가 기하 급수적으로 늘어난다면 for을 이용하는 것이 리소스 절약에 효과적이다.
3. 반복문 for의 연산 순서
for( i=1 ①; i<6 ②⑤; i++ ④⑦){
System.out.print(i); ③⑥}
처리 순서는 ①~⑦ 이며, 종료 조건이 되기까지 ②~⑦....를 반복한다.
⑦수행하고 ②로 돌입하였을 때, 종료조건에 충족되면 즉시 종료된다.
위의 연산 순서를 정확하게 알아야 for 문을 이용하여 알고리즘을 구성할 수 있다.
4. 반복문 for과 조건문 if의 사용
int e = 0;
for (e = 1; e <= 20; ++e)
{
System.out.print("@");
if (e==10)
{
System.out.println("");
}
}
//출력물:
@@@@@@@@@@
@@@@@@@@@@
반복문에서 if를 통한 조건 부여 또한 가능한데, 일정 수치까지 반복한 뒤에 if의 실행문이 한번 수행되고, 다시 반복문 수행으로 진행된다.
물론 조건문 if 내에 반복문을 삽입하는 경우도 가능하다.
이러한 특성에서 집중할 것은 알고리즘을 구성할 때 다수의 반복문과 조건문을 조합하여 구성할 수 있다는 점이다.
만약 조건문과 반복문을 중첩하여 사용하지 못한다면 반복문을 2개로 나눠서 각각 실행해야할 것이다.
1개의 함수로 표현할 수 있는 식을 2개로 나눠서 표현하는 것은 분명 리소스 낭비이다.
때문에 조건문과 반복목 for의 사용을 정확하게 이해하자.
5. 반복문 for의 무한 루프
for ( ; ; )
{
System.out.println(“0”);
}
위와 같이 조건을 지정하지 않으면 무한루프가 생성되어 실행문을 계속 진행한다.
종료 조건의 달성 여부는 참과 거짓 여부로 결정되며, 데이터가 없는 경우 true 인식한다. 마찬가지로 조건 항목에 true를 삽입하여도 동일하다.
결국 조건이 항상 ‘참’이므로 개발자가 중단하지 않으면 명령문이 무한히 반복된다.
이러한 특성은 Stack Overflow (스택 메모리 초과)를 야기하거나 보안 취약점으로 작용하기도 한다.
6. 반복문 for의 증감 연산의 지정
for (e = 1; e <= 20; e+=2)
증감 연상은 ++, --를 사용하는데 이는 단항 연산자로 [변수 = 변수 +1]과 동일하다.
때문에 대입연산자를 이용하여 증감 조건을 지정할 수 있다.
[변수 = 변수 + 2] 나 [ 변수 +=2] 와 같이 지정이 가능하다.
이는 +1로 순차적으로 수행하던 명령을 더욱 구체적으로 지정할 수 있음을 말한다.
무한 루프의 예시와 같은 원리로 e+=0 이라면 e는 항상 같은 값이므로, 조건은 늘 참이고 이에 무한 루프한다.
7. 반복문 for의 이중 사용
int one;
for (one=1; one<100; one+=2)
{
System.out.print(one+"\t");
if ((one%10)==9)
{
System.out.print("\n");
}
}
for (one=0; one<100; one+=10)
{
for (int d = 1; d<=9; d+=2)
{
System.out.print(d+one+"\t");
}
System.out.print("\n");
}
위 두개의 예시는 출력값이 동일하다.
두개다 10의 단위로 1~100의 홀수를 표시해준다.
for을 이중으로 사용하면 반복문의 반복을 실행 할 수 있다.
'Java > 기본 이론' 카테고리의 다른 글
[JAVA] Chapter 12. 제어문- 흐름제어문 (0) | 2021.04.25 |
---|---|
[JAVA] Chapter 11. 제어문 - 반복문 while (0) | 2021.04.25 |
[JAVA] Chapter 09. 제어문- 조건문 (0) | 2021.04.24 |
[JAVA] Chapter 08. 정보를 출력하는 명령어 (0) | 2021.04.23 |
[JAVA] Chapter 07. 연산자 (0) | 2021.04.23 |