들어가기 전에
지난 시간 제어문에는 조건문과 반복문이 있다는 것을 알았습니다.
이번 시간에는 조건문에 이어 반복문을 이용해서 프로그램을 더 좋게 바꾸어 봅니다.
학습 목표
반복문을 사용해서 프로그램을 바꾸어 봅니다.
핵심 단어
- 반복문
- while 문
강의 듣기
들어가기 전에
지난 시간 제어문에는 조건문과 반복문이 있다는 것을 알았습니다.
이번 시간에는 조건문에 이어 반복문을 이용해서 프로그램을 더 좋게 바꾸어 봅니다.
학습 목표
반복문을 사용해서 프로그램을 바꾸어 봅니다.
핵심 단어
강의 듣기
반복문
지난 시간에 같은 자료형을 여러개 담는 객체인 배열에 대해서 배웠습니다.
반복문은 조건이 참인 한, 해당되는 구간을 계속 반복합니다.
배열과 반복문을 함께 이용하면 프로그램을 훨씬 간결하게 만들 수 있습니다.
MyApp 프로젝트에 AccountingArrayLoopApp 클래스를 생성합니다.
AccountingArrayLoopApp.java
public class AccountingArrayLoopApp {
public static void main(String[] args) {
double valueOfSupply = Double.parseDouble(args[0]);
double vatRate = 0.1;
double expenseRate = 0.3;
double vat = valueOfSupply * vatRate;
double total = valueOfSupply + vat;
double expense = valueOfSupply * expenseRate;
double income = valueOfSupply - expense;
System.out.println("Value of supply : " + valueOfSupply);
System.out.println("VAT : " + vat);
System.out.println("Total : " + total);
System.out.println("Expense : " + expense);
System.out.println("Income : " + income);
double[] dividendRates = new double[3];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;
int i = 0;
while(i < dividendRates.length) {
System.out.println("Dividend : " + (income*dividendRates[i]) );
i = i + 1;
}
}
}
while 문은 괄호 안의 조건이 참인 한 블록 내의 작업을 계속 반복합니다.
이번에는 배열이 길이만큼 반복하여 동업자에게 배당 금액을 계산하는 반복문을 만들어 봅니다.
....
double[] dividendRates = new double[3];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;
double dividend1 = income * dividendRates[0];
double dividend2 = income * dividendRates[1];
double dividend3 = income * dividendRates[2];
System.out.println("Dividend 1 : " + dividend1);
System.out.println("Dividend 2 : " + dividend2);
System.out.println("Dividend 3 : " + dividend3);
기존의 프로그램에서 동업자에게 배당하는 금액은 수익 * 배당률로 세 번씩 반복하고 있는 것을 알 수 있습니다.
마찬가지로 그 배당 금액을 출력하는 작업을 세 번씩 반복하고 있습니다.
....
double[] dividendRates = new double[3];
dividendRates[0] = 0.5;
dividendRates[1] = 0.3;
dividendRates[2] = 0.2;
int i = 0;
while (i < dividendRates.length) {
System.out.println("Dividend : " + income * dividendRates[i]);
i = i + 1;
}
// double dividend1 = income * dividendRates[0];
// double dividend2 = income * dividendRates[1];
// double dividend3 = income * dividendRates[2];
// System.out.println("Dividend 1 : " + dividend1);
// System.out.println("Dividend 2 : " + dividend2);
// System.out.println("Dividend 3 : " + dividend3);
while 문을 이용하여 반복적으로 동작하던 작업을 간결하게 바꿀 수 있게 되었습니다.
반복문의 진가는 반복할 횟수가 늘어나게 되면 드러납니다.
지금은 동업자가 3명뿐이지만 백만 명으로 늘어난다면,
기존의 방식으로는 2억줄이 넘는 코드가 늘어져 있을 것입니다.
하지만 반복문을 사용하게 되면 3명이든 백만 명이든 언제나 5줄의 코드일 것입니다.
생각해보기
1) while 문 외에 다른 반복문이 또 있을까요?
2) 반복문은 무엇인지 왜 사용하는지 댓글로 토론해 보세요
참고자료
https://docs.oracle.com
https://docs.oracle.com
comment
1. for문
2. 같은 작업을 반복할때 사용한다.
사용안하게 될 경우 손가락이랑 눈이 아플거다.
1) for, for~each, while, do~while 자바스크립트랑 비슷
2) 같은 일을 반복적으로 처리할 때 인간이 하면 오류의 가능성도 있고 비효율적이다. 수정하기도 어렵다.
1) for문
2) 동일한 형식의 코드를 반복해서 입력하기 보다 반복문을 통해 효율적인 코드작성이 가능하다.
1) for 문, switch 문.
2) {} 안에 있는 코드를 계속 반복하는 것이고 반복되는 코드가 길어질수록 훨씬 간결하고 유지 및 보수에도 적합하다.
1) do - while, for
2) 특정 조건이 만족하는 동안 무언가를 반복해서 실행한다.
코드의 길이를 줄이고 가독성을 향상시키기 위해
수정 및 관리를 편하게 하기 위해서
반복문을 사용하면 2억줄 -> 5줄로 만들 수 있다
1) while 문 외에 다른 반복문이 또 있을까요?
for문
2) 반복문은 무엇인지 왜 사용하는지 댓글로 토론해 보세요
반복문은 코드를 반복할 때 사용하는 문장이고, 구조가 같은 문장이 중복될 때 코드를 보기 쉽고 효율적으로 만들기 위해 사용한다.
가장 많이 쓰는 반복문은 for문이죠 ㅎ
입력값을 그 때마다 argument에 입력하는 게 더 불편할 것 같아요. 화면에 표시를 하는 게 좀 더 편하지 않을까요?