일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 난수
- 클래스멤버
- 객체지향
- 자바
- 2진법음수
- 2의보수
- static
- new연산자
- 클래스
- 멤버변수
- 1의보수
- 객체지향언어
- java
- 부호절댓값
- Math.random()
- 자바프로그래밍
- 컴퓨터구조
- 2진법의음수표현
- 멤버메소드
- 난수발생
- random클래스
- 전역변수
- 멤버변수의초기화
- 멤버필드
- 변수의초기화
- random()
- 의사난수
- 지역변수
- 2진법음수표현
- JAVA프로그래밍
- Today
- Total
주인장의 프로그래밍 개발 공부방
[Chapter 4 반복문] 4. do-while문 본문
반복문의 마지막 단계에 접어들었다.
이번에 알아볼 내용은 do-while문이다.
do-while문은 while문과 거의 흡사한 녀석이지만 약간의 차이가 있다.
목표 : do-while문의 구조를 이해하고 활용할 수 있다.
1. do-while문?
do-while문은 while문에서 파생된 반복문이라고 할 수 있다.
이 녀석이 등장한 계기는 바로 반복문이 해당 조건에 만족할 때만 실행되는 것을
어떠한 상황이라도 무조건 반복문을 한 번은 실행시키기 위해서 등장했다.
어떤 경우에 그렇게 사용하는지는 아직 자세히 이해하진 못하겠지만
일단 do-while문이 이런 동작을 하는 것이라는 것은 알고 있길 바란다.
do-while문 역시 조건식이 필요하고 반복문과 동일하게 구현부가 존재한다.
그러나 우리가 알고 있는 반복문의 형태와는 조금 다르다는 것을 미리 알고 있자.
그렇다면 do-while문은 어떻게 생긴 녀석일까?
2. do-while문의 구조
do-while문의 구조는 앞서 봤었던 for문이나 while문과 조금 다르게 생겼다.
구조)
do {
구현부(무조건 한 번은 실행됨)
} while(조건식이나 그 결과값)
여기에서 do { }라는 부분이 등장하게 되는데
이 부분이 앞의 다른 반복문과의 가장 큰 차이점이라고 할 수 있겠다.
do-while은 프로그램이 반복문을 만나게 되면
일단 무조건 do 부분을 한 번을 실행하게 된다.
조건식의 결과가 true든 false든 상관없이 말이다.
특이한 점이 반복문의 구현부가 먼저 앞에 등장하고 그 다음에
while이 등장하는 것이다.
이러한 구조를 가지고 있기 때문에 프로그램에서 do-while문을 실행할 때
구현부에 있는 내용을 일단 실행을 하게 된다.
그리고 구현부 안에서의 동작에 따라 또는 while의 ( ) 안의 조건식 또는 결과값에 따라서
계속 반복할 것인지 아니면 한 번의 실행으로 종료할 것인지 결정되는 것이다.
그렇다면 do-while문이 어떻게 쓰이는지 예시를 통해서 알아보도록 하자.
예시1)
Scanner sc = new Scanner(System.in);
do {
System.out.println("메뉴를 선택하세요.");
System.out.println("1. 실행\t2. 종료");
int menu = sc.nextInt();
switch(menu) {
case 1:
System.out.println("실행했습니다.");
break;
case 2:
System.out.println("프로그램을 종료합니다.");
sc.close();
System.exit(0);
}
} while(true);
위의 예시를 살펴보면 형태가 조금 달라보일지도 모르지만
실상 프로그램을 실행해보면 우리가 앞서 사용했었던
while문과 별반 다를게 없다.
while문에서 사용하던걸 do-while문의 형태로 고친 것 뿐이다.
사실 이렇게 작성하면 do-while로 작성한 의미가 없기는 하지만
do-while문도 일단은 반복문이라는 것을 알 수 있다.
그렇다면 do-while문의 동작을 좀 더 확연하게 알 수 있는 코드로 예시를 바꿔보자.
예시2)
Scanner sc = new Scanner(System.in);
do {
System.out.println("메뉴를 선택하세요.");
System.out.println("1. 실행\t2. 종료");
int menu = sc.nextInt();
switch(menu) {
case 1:
System.out.println("실행했습니다.");
break;
case 2:
System.out.println("프로그램을 종료합니다.");
sc.close();
System.exit(0);
}
} while(false);
예시1과 비교하면 딱 한 군데가 바뀌었다.
바로 while(true) 부분이 while(false)로 바뀐 것 뿐이다.
그런데 실행하면 우리가 알고 있는 반복문과는 전혀 다르게 프로그램이 동작할 것이다.
기본적으로 while(false)라고 작성했다면 반복문은 단 한 번도 실행되지 않아야 한다.
그러나 do-while문은 앞에서도 언급했듯이 일단 무조건 구현부를 한 번은 실행하게 된다.
그래서 일단 프로그램을 실행하면 메뉴를 선택하라는 문구가 출력되고
여기에서 메뉴를 어떤 것을 선택하더라도 while(false)이기 때문에
프로그램은 다시 반복하지 않고 종료하게 된다.
이와 같이 조건식에 상관없이 무조건 한 번 실행하는 반복문이 바로
do-while문이다.
3. 그러면 도대체 이걸 왜 써야 되는데?
이런 생각이 들 것이다.
굳이 한 번만 실행할 것이라면 도대체 이게 왜 존재하고 있으며 왜 써야하는지.
이렇게 생각해보자.
반복문을 이용해서 프로그램을 하나 만든다고 가정했을 때
이러한 프로그램을 작성해야한다면 어떨까?
조건)
int number < 0 라는 조건과 반복문을 이용해서 0을 출력하는 프로그램을 만들어보라.
조건이 굉장히 뭐시기한 거 같지만 그러려니 하고 넘어가자.
이 조건은 do-while문을 위한 조건이기 때문에 억지로 만든 감이 없지 않아 있다.
길게 말할 필요없이 일단 코드부터 작성해보자.
do-while문 예시)
int number = 0;
do {
System.out.println(number);
} while(number < 0);
while문 예시)
int number = 0;
while(number < 0 ) {
System.out.println(number);
}
for문 예시)
int number = 0;
for(int i = 0; number < 0; i++) {
System.out.println(i);
}
이렇게 조건을 무조건 포함시키면서 3가지의 반복문으로 작성을 했다.
여기에서 위의 조건을 만족시킬 수 있는 코드는 do-while문 예시 뿐이다.
while문 예시는 애초에 while의 조건이 false가 되기 때문에 실행조차되지 않고
for문 예시 역시 number < 0에서 false가 되기 때문에 실행조자되지 않는다.
하지만 do-while문은 무조건 한 번은 실행하기 때문에
일단 0을 출력하고 그 다음부터는 조건이 false가 되기 때문에 반복을 하지 않는 것이다.
이와 같이 do-while문은 무조건 한 번은 실행한다는 것이 핵심이 되겠다.
사실 여러 프로그램을 작성하면서 굳이 do-while문을 사용하지 않아도
작성할 수 있기는 하지만 do-while문을 사용해서 작성했을 때
while문이나 for문보다 코드의 수도 줄어드는 경우도 간혹 발견할 수 있을 것이다.
가장 대표적으로 do-while문에서 단 한 번만 실행되는 코드를 작성했을 때
이를 while문으로 변경하면 while문 안에서 반복을 멈춰주는 코드를 새로 추가해줘야하니
당연히 코드가 늘어날 수 밖에 없게 되는 것이다.
이러한 장점이 있기 때문에 특별한 경우에는 do-while문을 사용했을 때
훨씬 효율적인 부분이 생길 수 있다.
그러나 아직까진 우리가 배우는 입장에서는 일부러 do-while문을 사용하는게 아니라면
거의 대부분 for문과 while문 만으로도 작성이 가능하기 때문에
do-while문이 이렇게 생겼고 이러한 동작을 하며 이러한 특징이 있다는 것만 알고 있어도
멀리 바라봤을 때 굉장한 도움이 될 것이라고 생각한다.
4. 마무리
반복문에서 do-while문이라는 녀석에 대해서 알아봤다.
이 녀석은 while문과 마찬가지로 조건식과 구현부가 필요한데
do { 구현부 } while(조건식 또는 그 결과 값)
이라는 형태를 지니고 있으며 무조건 구현부가 한 번은 실행이 된다는 특징을 가지고 있다.
그렇기 때문에 계속해서 반복하거나 아예 실행이 되지 않거나가 아니라
일단 구현부가 한 번 실행된 뒤에 그 다음의 조건에 따라서 반복을 할지
멈출지를 결정하는 반복문이 되겠다.
'프로그래밍 기본 지식 > Chapter 4 반복문' 카테고리의 다른 글
[Chapter 4 반복문] 5. 중첩 반복문(중첩 for문) (어려움) (0) | 2019.07.08 |
---|---|
[Chapter 4 반복문] 3. while문이란? (0) | 2019.07.04 |
[Chapter 4 조건문] 2. for문을 알아보자. (1) | 2019.06.28 |
[Chapter 4 반복문] 1. 반복문이란? (0) | 2019.06.21 |