반복(Repetition)
: 어떤 조건이 성립하는 동안 처리(프로그램 명령문 또는 명령어의 집합)를 반복해 실행하는 것을 반복 구조라 하며,
일반적으로 루프(loop)라고 부른다.
1. while문 반복
・사전 판단 반복 구조: 실행 전 반복을 계속할지 판단한 뒤, 제어식의 평가값이 0이 아니면 프로그램 명령문이 반복
1)1부터 n까지의 정수 합 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class SumWhile {
public static void main(String[] args) {
//1부터 n까지의 정수 합 구하기
Scanner stdIn = new Scanner(System.in);
System.out.println("1부터 n까지의 합");
System.out.println("n값을 입력하세요.");
int n = stdIn.nextInt();
int sum = 0;
int i = 1;
while(i <= n) {
sum += i;
i++;
}
System.out.println("1부터 " + n + "까지의 합: " + sum);
}
}
|
2. for문 반복
하나의 변수를 사용할 때 적합한 반복문
1)1부터 n까지의 정수 합 구하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
public class SumFor {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
System.out.println("1부터 n까지 정수의 합");
System.out.println("n값을 입력하세요.");
int n = stdIn.nextInt();
int sum = 0;
for(int i = 1; i <= n; i++) {
sum += i;
}
System.out.println("1부터 " + n + "까지의 합: " + sum);
}
}
|
・do, while문(사후 판단 반복)
일단 do문을 한 번 실행한 뒤, while문의 조건에 따라 반복할 것인지를 판단
-양수만 입력하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class SumDoWhile {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int n;
System.out.println("1부터 n까지의 합");
do {
System.out.print("n의 값: ");
n = stdIn.nextInt();
} while(n <= 0);
int sum = 0;
for(int i = 1; i <= n; i++) {
sum += i;
}
System.out.println("1부터 " + n + "까지의 합은: " + sum);
}
|
변수 n의 값이 0이하면 반복 실행, do문이 종료될 때 n의 값은 반드시 양수여야 한다.
・구조적 프로그래밍
하나의 입구와 하나의 출구를 가진 구성 요소만을 계층적으로 배치해 프로그램을 구성하는 방법으로, 순차, 선택, 반복이라는 세 종류의 제어 흐름을 사용한다.
・다중 루프
반복 안에서 다시 반복을 수행하는 것도 가능하다.
-곱셈표 출력하기
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class MultipleTable {
public static void main(String[] args) {
System.out.println("\t-----곱셈표-----");
for(int i = 1; i <= 9; i++) {
for(int j = 1; j <= 9; j++) {
System.out.printf("%3d", i * j);
}
System.out.println();
}
}
}
|
-직각 이등변 삼각형 출력
: 이중 루프를 응용하면 기호를 사용해 삼각형이나 사각형 모양으로 출력할 수도 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
public class Triangle {
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int n;
System.out.println("왼쪽 아래가 직각인 이등변 삼각형 출력");
do {
System.out.println("몇 단 삼각형입니까?: ");
n = stdIn.nextInt();
} while(n <= 0);
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
|
*이런 도형 형태의 결과를 출력할 때는 행 루프(줄 바꿈) - 열 루프(한 행 안에서의 실행) 순서로 생각하면 쉽다.
'Algorithm > 01. 기본 알고리즘' 카테고리의 다른 글
1-1. 알고리즘(Algorithm)이란? (0) | 2020.08.23 |
---|