<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

+ Recent posts