JAVA
1. 반복문(Iteration Statements)
반복문은 프로그램 코드 내에서 똑같은 명령을 반복하여 수행하도록 제어하는 명령문입니다.
만약, 1부터 100까지의 숫자를 화면에 출력하는 코드를 작성하려면 100개의 'print' 구문이 필요할 것입니다.
출력해야 하는 숫자가 많아질 수록 입력해야 하는 코드의 양도 마찬가지로 늘어날 수 밖에 없습니다.
원하는 결과값은 얻을 수 있으나, 매우 비효율적인 문장이 됩니다.
자바에서는 이러한 반복적인 작업을 더욱 간결할 수 있는 방법을 '반복문'을 통해 제시합니다.
자바에서 사용하는 반복문의 종류는 for문, while문, do - while문이 있습니다.
2. for문
반복문 중에서 가장 많이 사용하는 문법인 for문은 주로 반복 횟수가 정해져 있을 때 사용합니다.
for문의 기본 구조는 다음과 같습니다.
for(초기화식; 조건식; 증감식){
실행문;
}
초기화식 : 반복문에 사용할 변수를 초기화합니다.
조건식 : 반복 수행할 범위를 구현합니다.
실행뭉 : 조건식이 true이면 false가 나올 때까지 반복하여 실행문을 수행합니다.
증감식 : 초기값을 증가하거나 감소시킵니다.
이처럼 for문은 초기화식, 조건식, 증감식, 실행문의 4가지 구성 요소로 작동합니다. 초기화식은 최초 실행 시,
시작 값을 부여하기 위해 수행하며 이후에는 반영되지 않습니다. 증감식에 의해 주어진 값이 조건에
만족할 때까지 반복문이 수행됩니다.
예를 들어 1부터 5까지의 합을 출력하는 반복문의 수행 순서는 다음과 같습니다.
변수 i 를 선언하고 초기값1을 부여
▼
변수 i가 조건에 만족하는지 확인(i<=5)
▼
반복문의 실행 코드를 수행
▼
증감식을 수행(i =2)
▼
증감식 수행 후 i값이 조건에 맞는지 확인
▼
반복문의 실행 코드를 수행
▼
증감식을 수행(i=3)
▼
증감식 수행 후 i값이 조건에 맞는지 확인
▼
변수 i가 6이 되면 조건에 맞지 않아 종료
for문을 구성하는 초기화식, 조건식, 증감식은 필요 없는 경우 생략할 수 있습니다.
다만, 조건식이 생략된 경우, true로 간주되어 무한 반복이 이루어집니다
초기화식과 증감식은 두 개 이상 존재할 수 있으며 여러 문장을 사용할 경우 콤마(,)로 구분하여 작성합니다.
for문에서 반복 실행되는 문장이 하나일 때는 중괄호{}를 생략할 수 있습니다.
3. 중첩 for문
중첩 for문은 말 그래도 for문 안에 또 다른 for문을 사용하는 경우를 말합니다. for문을 중첩하여 사용하게 때문에
코드가 어려워 보일 수 있으나 원리를 살펴보면 쉽게 이해 할 수 있습니다.
int count = 0;
for(int i=0; i<10; i++){
for(int j=0; j<10; j++){
conut++;
}
}
System.out.println("반복 횟수 : "+count);
실행 결과 :
반복 횟수 : 100
위 코드는 중첩 for문을 간략하게 나타낸 코드입니다. 외부 i for문이 반복되고, i for 문이 반복할 때마다
내부 j for문이 반복됩니다. 즉, 내부 for문은 외부 for문의 실행 코드라고 생각하면 이해하기 쉽습니다.
먼저 바깥쪽 for문은 10회 반복합니다. 한번 한복할 때마나다 실행 코드인 내부 for문 또한 10회씩 반복하게 됩니다.
따라서 외부 for문이 1번씩 반복할 때마다 내부 for 문이 10회씩 동작하게 되므로 총 100회의 반복이 이루어집니다.
중첩 for문을 사용할 떄는 외부 for문과 내부 for문이 어떤 순서로 실행되는 잘 이해해야 합니다.
4. while문
for문은 조건에 의해 정해진 횟수만큼 반복하는 문법입니다. 반면 while문은 반복 횟수가 정해져 있지 않고
조건식이 true일 경우 계속해서 반복하는 문법입니다. 부여된 조건이 true이면 반복문이 실행되고
false이면 종료됩니다. for문보다 구조가 간단하지만, 주의해서 사용하지 않으면 무한 루프 같은 오류에
빠지기 쉬운 문법 입니다
while 문의 기본 구조는 다음과 같습니다
while(조건식){
// 조건식이 true일 때 반복 실행
실행문;
}
while문의 실행 순서는
조건식을 확인하고 조건이 true인지 확인합니다
▼
조건을 만족할 경우 실행문을 실행합니다.
▼
실행문이 완료된 후 조건을 확인합니다.
▼
해당 순서를 반복하여 조건식이 만족하지 않을 때 종료합니다.
5. do - while문
do - while문은 while문과 같이 조건을 만족할 때까지 반복합니다. 다만, while문과는 다른 점은 먼저 루프를 한번
실행한 후 조건식을 검사한다는 점입니다. 즉, 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행합니다.
최초 반복문이 실행될 때 조건을 보지 않는다는 차이점을 제외하고는 while문과 동일합니다.
do - while문의 기본 구조는 다음과 같습니다.
do{
실행문1;
}
while(조건식);
// 조건식이 true이면 실행문 실행
do - while문은 중괄호{} 안의 실행문이 먼저 실행되고 이 후 조건식이 true이면 수행하게 됩니다.
반복문을 최초 1회는 무조건 실행해야할 경우 사용하면 좋습니다.
do - while문은 현업에서 많이 사용되지는 않지만, 프로그래밍을 하다 보면 다양한 기술이나
문법이 필요할 때가 있으므로 익혀 두는 것이 좋습니다.
- 반복 횟수가 지정되는 경우 > 횟수를 만족할 때 까지 반복 --> for문
- 특정 조건이 부여 되는 경우 > 조건이 만족할 때까지 반복 --> while문
- 특정 조건과 옵션이 부여 되는 경우 > 한 번 실행한 후 반복 여부 판단 --> do - while문
6. 기타 제어문
기타 제어문에는 반복 횟수가 끝나지 않았으나, 코드 수행을 만족해서 중간에 반복문을 중단시킬 수 있는
break문과 조건을 만족하지 않으면 코드 진행을 멈추고 다시 반복을 시작하게 만들 수 있는 continue문이 있습니다.
continue 문
continue문은 break문과 더불어 반복문에서 사용할 수 있는 구문입니다.
반복문 안에서 continue문을 만나면 이후 실행 코드는 수행되지 않고 반복문의 처음으로 돌아가
반복문을 진행하도록 합니다. for문의 경우 증감식으로 이동하며, while문과 do-while문은 조건식으로 이동하게 됩니다.
continue문은 전체 반복문 중 특정 조건에서는 수행하지 않고 건너뛰고자할 때 유용합니다.
break 문
break라는 단어의 의미와 동일하게 반복문을 미리 종료할 때 사용합니다.
break문은 반복문이 진행되는 중에 특정 조건을 만족해 더 이상 반복문을 실행할 필요 없이 종료할 때 사용합니다.
continue문은 반복문을 계속 수행하지만 특정 조건에서 수행문을 제외하고자 하는 경우에 사용하고,
break문은 반복문을 더 이상 수행하지 않고 빠져나올 때 사용합니다. continue문은 break문과 달리 반복문을 벗어나지 않습니다.
응용문제
1. 다음 빈칸에 알맞은 단어를 작성해 보세요.
반복문은 ㅁㅁㅁㅁ한 동작을 여러 번 반복하여 실행하는 구문입니다.
2. 반복문의 종류를 모두 나열해 보세요
정답 : for문, 중첩for문, while문, do-while문
3. 1부터 100까지의 정수 중에서 짝수만을 더해 출력하는 코드를 for문을 사용해 작성해 보세요.
int sum = 0;
for(int i=1; i<=100; i++){
if(i%==0){
sum += i
}
}
System.out.println(sum);
4. 두 개의 주사위가 같은 값이 나올 때까지 while문을 사용해 반복하고, 반복 횟수와 주사위 눈의 번호를 출력해 보세요.
Random rand = new Random();
int dice1;
int dice2;
int count = 0;
while(true) {
주사위1 = rand.nextInt(6)+1;
주사위2 = rand.nextInt(6)+1;
System.out.println("1번주사위"+dice1);
System.out.println("2번주사위"+dice2);
System.out.println();
count++;
if(dice1 == dice2) {
break;
}
}
System.out.println(주사위1 +" 1번주사위 와 "+주사위2+" 2번 주사위 ");
System.out.println(count);
5. 다중 반복문을 사용해 다음과 같은 모양의 *를 출력하는 코드를 작성해 보세요.
/*
*
**
***
****
*/
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3-i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i+1; k++) {
System.out.print("*");
}
System.out.println();
}
6. 다중 반복문을 사용해 다음과 같은 모양의 *를 출력하는 코드를 작성해 보세요.
/*
*
***
*****
*******
*/
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3-i; j++) {
System.out.print(" ");
}
for (int k = 0; k <i*2+1 ; k++) {
System.out.print("*");
}
System.out.println();
}
/*
=============== 디버깅표 ==================
i i<4 j j<3-i k k<i*2+1
-----------------------------------------------------------------------
0 T 0 T " " 0 T *
1 T " " 1 F
2 T " "
3 F
1 T 0 T " " 0 T *
1 T " " 1 T *
2 F 2 T *
3 F
2 T 0 T " " 0 T *
1 F 1 T *
2 T *
3 T *
4 T *
5 F
3 T 0 F 0 T *
1 T *
2 T *
3 T *
4 T *
5 T *
6 T *
7 F
4 F
*/
'javaboiii의 JAVA > JAVA 요약정리(멘토씨리즈)' 카테고리의 다른 글
JAVA -7)클래스(Class) (0) | 2024.07.18 |
---|---|
JAVA -6)배열 (0) | 2024.07.17 |
JAVA -4) 제어문1 (1) | 2024.07.15 |
JAVA - 3)연산자 (1) | 2024.07.14 |
JAVA - 2)변수와 자료형 (0) | 2024.07.13 |