[JAVA] 반복문
안녕하세요.
이번에는 반복문을 공부해보겠습니다.
반복문은 문장 수행 흐름을 바꾸는 역할을 하는 제어문 중 하나로
특정 문장들을 반복해서 수행하도록 합니다.
반복문에는 대표적으로 For문과 While문이 있습니다.
먼저 반복문 중에 for문은 초기식, 조건식, 증감식, 실행할 문장으로 이루어집니다.
초기식은 for문이 시작할 때의 시점을 정해주는 식입니다.
조건식은 초기식으로부터 사용자가 반복하기 원하는 시점까지를 정해주는 식입니다.
(이때 조건식을 true로 선언하면 무한 반복이 가능합니다.)
증감식은 초기식을 반복할 때마다 증감시켜주는 식입니다.
초기식과 조건식, 증감식을 모두 공백으로 선언하면 조건식을 true로 선언한 것처럼 무한 반복하게 됩니다.
for문의 실행 순서는 초기식의 값을 조건식에 확인하여 결과값이 true가 나오면 실행할 문장을 수행합니다.
문장을 수행한 뒤에는 증감식에 따라 초기값을 증감시키고 다시 조건식에 확인합니다.
초기값이 증감되어 조건식에 비교한 결과값이 false가 나올 때까지 반복하고
false가 나오게 되면 for문의 반복을 종료합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// for문
// 표현식
// for(초기식; 조건식; 증감식)
// {
// 실행할 문장;
// }
for(int i = 0; i < 10; i++)
{
System.out.println(i);
}
for(int i = 9; i >= 0; i--)
{
System.out.println(i);
}
|
첫 번째 for문은 초기식의 값이 0이고 조건식은 10보다 작을 때까지 반복해서
문장을 수행하고 초기값을 1씩 증가시킵니다.
실행할 문장이 초기값을 출력하는 문장이므로 결과는 0~9까지의 숫자를 출력하고
초기값이 10이 되면 for문을 반복하지 않습니다.
두 번째 for문은 첫 번째 for문과 반대되는 for문으로 초기값이 9이고 조건식이 0보다 크거나 같을 때까지
반복해서 문장을 수행하고 초기값을 1씩 감소시킵니다.
결과로는 9~0까지의 숫자를 출력하고 초기값이 -1이 되면 for문을 반복하지 않습니다.
for문도 조건문의 if문처럼 중첩하여 중첩 반복문을 만들 수 있습니다.
실행하는 순서는 기존의 for문과 같습니다. 밖의 for문(1)의 초기값과 조건식을 확인해서 true이면
안에 있는 for문(2)을 실행합니다. 안의 for문(2)의 초기값과 조건식도 비교해서 true이면
실행할 문장을 수행하고 증감시킵니다. 증감된 값과 조건을 확인해서 false가 나올 때까지 반복합니다.
반복하다가 초기값이 조건식에 false라면 다시 밖의 for문(1)으로 돌아와서 초기값을 증감시킵니다.
증감시킨 초기값이 조건에 맞다면 다시 안의 for문(2)을 실행합니다.
이때 이전에 증감된 값이 아니라 for문(2)에 선언된 초기값을 조건식과 확인합니다.
안에 있는 for문(2)을 다시 반복하고 밖에 있는 for문(1)의 값과 조건식을 확인해서 false가 나올 때까지 반복합니다.
1
2
3
4
5
6
7
|
for(int i = 0; i < 10; i++)
{
for(int i = 9; i >= 0; i--)
{
System.out.println(i);
}
}
|
위에 있던 for문을 중첩시킨 for문입니다.
결과로는 두번째 for문의 결과인 9~1까지의 숫자가 첫번째 for문의 반복 횟수인 10번 반복해서 출력됩니다.
다른 반복문인 while문은 for문과 기능적으로 비슷하지만 표현이 다릅니다.
while문은 for문처럼 한 번에 초기식과 조건식, 증감식을 선언하지 않고 각각 따로 선언해야 합니다.
초기식은 while문의 밖에 선언을 하고 while문에 조건식을 선언한 뒤에 while문의 영역 안에 실행할 문장 밑에
증감식 또는 분기문을 선언하는 형식입니다.
for문과 마찬가지로 초기식에 선언된 값이 조건식에 확인하여 true값이 나오게 되면 실행할 문장을 수행하고
밑의 증감식과 분기식에 따라 증감 혹은 분기를 합니다.
만약 증감식이 선언되었으면 증감된 값을 다시 조건식과 확인하여 false값이 나올 때까지 반복하게 됩니다.
이때 분기식이 오게 된다면 해당 선언된 분기식에 따라서 이동하게 됩니다.
조건식에 true를 선언하게 되면 무한 반복하게 되고 while문의 영역 안에 꼭 증감식 또는 분기식이 없다면
계속 같은 조건으로 반복되므로 반복을 벗어나고 싶다면 영역안에 증감식 또는 분기식을 꼭 선언해주어야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
// While문
// 표현식
// 초기식
// while(조건식)
// {
// 실행할 문장
// 증감식 혹은 분기식
// }
int i = 0; // 초기식
while(i < 10) // 조건식
{
System.out.println(i); // 실행할 문장
i++; // 증감식
}
int i = 0; // 초기식
while(i < 10) // 조건식
{
System.out.println(i); // 실행할 문장
i++; // 증감식
}
|
첫 번째 while문은 초기식의 값이 0이고 조건식은 10보다 작을 때까지 반복해서
문장을 수행하고 초기값을 1씩 증가시킵니다.
실행할 문장이 초기값을 출력하는 문장이므로 결과는 0~9까지의 숫자를 출력하고
초기값이 10이 되면 while문을 반복하지 않습니다.
두 번째 while문은 첫 번째 while문과 반대되는 while문으로 초기값이 9이고 조건식이 0보다 크거나 같을 때까지
반복해서 문장을 수행하고 초기값을 1씩 감소시킵니다.
결과로는 9~0까지의 숫자를 출력하고 초기값이 -1이 되면 while문을 반복하지 않습니다.
while문도 if문처럼 중첩하여 중첩 반복문을 만들 수 있습니다.
if문과 같이 while문안에 while문을 사용하여 중첩된 while문을 만들어 주면 되는데요.
while문에는 if문에서도 가능한 중첩 반복문 말고 do~while문이 있습니다.
do~while문은 조건식의 true, false 여부와는 상관없이 무조건 한 번은 문장을 실행하고자 할 때 사용합니다.
do~while문을 표현하는 방식은 do문의 영역 안에 실행할 문장을 선언하고 그 밑에 증감식 또는 분기식을 선언합니다.
그리고 while문과 조건식을 선언합니다.(조건식에 true를 선언하면 무한 반복이 가능합니다.)
do문이 while문보다 먼저 선언되므로 처음은 조건식을 확인하지 않고 do문을 수행합니다.
그리고 while문의 조건식을 확인하여 true가 나온다면 다시 do문을 수행하고 조건식과 비교해서
false가 나올 때까지 반복합니다. 만약에 do문 안에 증감식 또는 분기식이 없다면 무한 반복됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
// Do~While문
// 표현식
// 초기식
// do
// {
// 실행할 문장
// 증감식 혹은 분기식
// }
// while(조건식);
// while과 조건식 뒤에는 세미콜론(;)으로 문장을 종료해야 한다.
int i = 0; // 초기식
do
{
System.out.println(i); // 실행할 문장
i++; // 증감식
}
while(i < 0); // 조건식
int i = 0; // 초기식
do
{
if(i < 10) // 조건문
{
System.out.println(i); // 실행할 문장
i++; // 증감식
}
else
{
break; // 분기식
}
}
while(true); // 조건식
|
첫 번째 do~while문은 초기식의 값이 0이고 조건식은 0보다 작아야 하므로 false값이 나오지만
처음의 do문에 있는 문장을 수행하고 초기값을 1 증가시킨 후에 종료됩니다.
실행할 문장이 초기값을 출력하는 문장이므로 결과는 숫자 0만을 출력합니다.
두 번째 do~while문은 초기식의 값이 0이고 조건식의 값은 true이므로 무한 반복을 하게 되지만
do문 안에 조건문으로 인해 0~9까지는 실행할 문장을 수행하고 초기식의 값을 1씩 증가시키고
초기식의 값이 10이 되면 else문으로 넘어가서 분기식인 break를 만나서 반복문을 종료합니다.
for문과 while문은 기능적으로 비슷하지만 for문은 반복하고자 하는 범위가 정해져 있을 때 자주 사용하고
while문은 반복하고자 하는 범위가 모호하거나 무한으로 반복하고자 할 때 자주 사용합니다.
이상으로 반복문에 대해 공부해보았습니다.
수고하셨습니다. 다음 글에서 봬요.