<3> for, while 그리고 do~while
* 반복문의 조건 : 변수선언, 조건문, 반복문을 깰 문장
1. while 반복문
1) 기본구조
while(조건문)
{
실행할 문장;
반복을 깰 문장;
}
** 실행할 문장과 반복을 깰 문장의 순서는 무관하다
조건확인 -> 문장실행(+변수바뀜) -> 조건확인.->문장실행 ....->조건성립x
2) 예제
:
num=0 (변수선언) -> while (num<5 -> 문장실행, num=1 -> num<5 ->문장실행, num=2 -> num<5 -> 문장실행, num=3 -> num<5 -> 문장실행, num=4 -> num<5 -> 문장실행, num=5 -> num <5 성립 x )
3) 특징
-반복조건을 먼저 검사후에 반복영역의 실행여부 결정
-반복조건을 먼저 검사하기 때문에 반복영역이 한차례도 실행되지 않을 수 있다.
2. do~while 반복문
1) 기본구조
do
{
반복영역
} while(조건문);
반복영역 실행 -> 조건확인 -> 반복영역실행 ... ->조건성립 x -> 끝
* 반복영역을 시작할때 실행한다는 점이 while 문과의 유일한 차이점이다.
2) 예제
변수선언 (num=0) -> do while문 ( 반복영역 실행, num=1 -> num<5 -> 반복영역실행, num=2 -> num<5 -> 반복영역실행, num=3 -> num<5 -> 반복영역실행, num=4 -> num<5 -> 반복영역실행, num=5 -> 조건성립x )
3) 특징
-반복영역을 먼저 실행 한 다음에 반복조건을 검사한다
-반복영역을 먼저 실행하기 때문에 반복조건을 만족하지 않아도 한 차례는 실행된다.
-> 최소한 한차례의 실행이 필요한 경우 do while문 실행
문제4
Q1. 1~99까지의 합을 구하는 프로그램 while문 이용하여 작성
Q2. 1~100까지 출력하고 난 다음에, 다시 거꾸로 100에서부터 1까지 출력하는 프로그램을 작성해보자. while문과 do while문을 각각 한번씩 사용해야 한다.
- 내가 한 코딩
-책의 코딩
Q3. 1000이하의 자연수 중에서 2의 배수이면서 7의 배수인 숫자를 출력하고, 그 출력된 숫자들의 합을 구하는 프로그램을 while문을 이용하여 작성해보자.
:
3. for 반복문
1) while, do while문에서 따로 떨어져있던 변수선언, 조건문, 반복의 조건을 무너뜨리기 위한 연산을 한줄에 나타낸것. - 정해진 횟수의 반복을 위해 존재.
-while 문
int num=0;
while(num<5)
{
System.out.println("...");
num++;
}
-for 문
for(int num=0 ; num<5 ; num++)
{
System.out.println("...");
}
2) 예제
3) 실행순서.
-첫번째 루프 : int i=0; -> i<3 -> 실행문장 -> i++; (변수선언 -> 조건확인 -> 실행문장 -> 변수변화) i=1
-두번째 루프 : i<3 -> 실행문장 -> i++; (조건확인 -> 실행문장 -> 변수변화) i=2
-세번째 루프 : i<3 -> 실행문장 -> i++; (조건확인 -> 실행문장 -> 변수변화) i=3
-네번째 루프 : i<3 (=거짓) 탈출!
*for문에서 선언되는 변수는 for문 내에서만 유효한 변수
*조건문을 제외한 영역에서 콤마를 사용해 여러 연산들을 사용할 수 있다
ex) for(int i=0, j=7; i<j ; i++,j--)
System.out.println("I love Java"+i+j);
-> 출력결과:
I love Java 07
I love Java 16
I love Java 25
I love Java 34
문제 5
Q1. 1부터 10까지 곱해서 그 결과를 출력하는 프로그램을 for문을 이용하여 작성하자
Q2. 구구단 5단을 출력하는 프로그램을 for을 이용하여 작성하자.
<4> continue & break : 반복문 내에 삽입되어 실행 흐름을 조절하는데 사용된다.
1. break문 : 가장 근접한 거리에서 자신을 감싸는 반복문을 빠져나간다.
* if 문과 함께 구성되어 특정조건이 만족될 때 반복문을 빠져나간다.
1) 예제
- 5와 7의 최소공배수를 찾는 프로그램
-5와 7의 최소공배수를 발견하면 break; 때문에 바로 while문을 빠져나간다.
-5와 7의 최소공배수가 존재하면 search는 true, if문을 실행하고 존재하지 않는다면 search는 false, else 아래의 문장을 실행한다.
2. continue문 : 반복문의 나머지 부분을 생략하고 프로그램의 흐름을 "조건검사 부분으로 이동" - 계속진행
*if문과 함께 유용하게 사용할 수 있다.
1) 예제 : 100이하의 자연수 중에서 5의 배수이자 7의 배수인 수를 출력하고 갯수를 세어보는 프로그램
-coutinue를 만나면 그 아래의 문장을 실행하지 않고 바로 조건검사를 진행한다
-num++<100 : 1. num<100 의 값 return 2. num++ ----조건검사와 반복문을 깨트릴 연산을 한꺼번에 넣었다.
-count 변수를 넣어 갯수를 센다
3. 무한루프와 break
1) 무한루프 : 조건문에 true가 명시되어 해당 반복문을 빠져나가지 못하도록 구성된 반복문
2) while 무한루프
while(true)
{
...
}
3) do while 무한루프
do
{
...
} while(true);
4) for 무한루프 (조건을 명시하는 부분을 비우는 유형이 더 일반적이다)
for(;true;)
{
..
}
or
for( ; ; )
{
...
}
// 조건을 명시하는 부분을 비우는 유형이 더 일반적이다
5) break문과 결합되어 사용되는 예제 : 6과 14의 최소공배수를 찾는 프로그램
: 무한루프를 이용한 이유 : 6의 배수이면서 14의 배수가 되는 수를 예측하지 않아도 되기때문. 잘못 예측한다면
while(num<30)
{
if(num%6==0 && num%14==0)
break;
num++;
}
같이 반복문을 잘못 구성할 수도 있다.
문제 6 [continue문과 break문의 활용]
Q1. ContinueBasic.java의 내부에 존재하는 while문을 for문으로 변경해서 예재를 재구현
-ContinueBasic.java
-(1) 책에서와 같은 코드
-(2)
Q2. 자연수 1부터 시작해서 모든 홀수와 3의 배수인 짝수를 더해 나간다. 그리고 그 합이 언제 (몇을 더했을 때) 1000을 넘어서는지, 그리고 1000을 넘어선 값은 얼마가 되는지 계산하여 출력하는 프로그램. 단 프로그램 내에서 반복문을 필요로 한다면 반드시 while문 무한루프로 구성.
-
- 중간중간 확인
<5> 반복문의 중첩
: 반복문은 총 9가지의 형태로 (for, while, do while 3가지 x 3가지) 중첩될 수 있다.
1. 가장 많은 for문의 중첩
1) 예제
-첫번째 for문 i 바꿔가며 3번 반복
-두번째 for문 j 바꿔가며 3번 반복
2) 구구단 만들기 예제
: 2~9단이 2~9까지 곱해지며 구구단이 이루어 진다. 단수를 바깥 for문으로, 곱해지는 수를 안의 for문으로 구성한다
* 9단은 구현되었으나 사진에는 나오지 않았다.
2. while문의 중첩
1) while문의 구구단
: 변수선언, 반복을 깨트릴 연산 등이 밖에 따로 있다. j=1; 이 첫번째 while문 안에 있는 것이 주목할 만 점이다.
3. 레이블을 설정하는 break문
1) 보통의 break문은 가장 가까히서 감싸는 하나의 반복문 밖에 빠져나가지 못한다.
: i와 j가 모두 짝수이면 break;을 실행하는 프로그램. 위 결과에서 break이 j에 대하여 반복하는 안쪽 코드만 빠져나간 것을 알 수 있다.
2) 빠져나갈 위치를 명시하는 break문( 레이블을 설정하는 break문)
outerloop:
for(int ~~~) 는 outerloop : for(~~~) 을 보기좋게 나타낸 것.
break outerloop; 는 outerloop라고 표시된 반복믄을 빠져나가겠다는 선언이다.
--> 물론 다른 이름으로 표시도 가능. (원하는대로 가능하다)
문제 7
Q1. 구구단의 짝수 단(2,4,6,8단)만 출력하는 프로그램을 작성하되, 2단은 2x2까지, 4단은 4x4까지, 6단은 6x6까지, 8단은 8x8까지만 출력하도록 구현
- 책에서 나온 코드
Q2. 다음 식을 만족하는 모든 A와 B의 조합을 구하는 프로그램
AB
+BA
-------------
99
'언어 > JAVA' 카테고리의 다른 글
Chapter 6. 메소드와 변수의 스코프 (0) | 2017.05.14 |
---|---|
Eclipse 설치 및 실행 (0) | 2017.05.11 |
Chapter5. 실행흐름 컨트롤(1) (0) | 2017.05.01 |
chapter4. 연산자(Operator) (2) (0) | 2017.04.12 |
chpter4. 연산자(Operator) (0) | 2017.04.07 |