루프 사용
학습 목표
이 유닛을 완료하면 다음을 수행할 수 있습니다.
- while 및 do-while 루프의 차이를 식별합니다.
- 증분 및 감소 연산자를 사용하여 코드 실행을 제어합니다.
Teatime 예시에서는 친한 친구들과 함께 마실 차 한 잔을 만들었습니다. 하지만 100명으로 구성된 그룹에게 차를 제공해야 한다면 어떨까요? 모든 사람에게 차가 제공될 때까지 동일한 단계를 반복해야 합니다. 중복 코드가 많이 생길 것 같지 않나요? 바로 이때 루프를 유용하게 사용할 수 있습니다.
루프는 특정 조건이 충족될 때까지 반복되는 코드 블록입니다. Teatime 코드에서 반복되는 단계를 살펴보겠습니다.
Add Tea and Sugar to Teacup Pour Tea in Teacup Put 1 teaspoon of Sugar in Teacup Stir Tea in Teacup Serve Tea to a Friend
반복되는 단계를 루프에 추가할 수 있습니다. Apex에서 코드를 루프하는 방법은 세 가지가 있습니다. while
, do-while
, for
루프입니다. 이번에는 while
및 do-while
루프를 집중적으로 살펴보겠습니다. 이름에서 알 수 있듯 while
및 do-while
루프는 매우 유사합니다. 둘 모두 특정 조건이 충족되었는지를 확인합니다. 차이점은 조건이 충족되었는지 확인하는 시점입니다. While
루프는 루프가 시작되기 전에 조건을 확인하고, do-while
루프는 루프가 완료된 후에 조건을 확인합니다.
사소한 차이처럼 보일 수 있지만 사실 그 영향은 꽤 큽니다.
do-while
루프는 항상 최소 한 번 이상 실행된다고 생각하세요. while
루프는 조건에 따라 실행되지 않을 수도 있습니다.
While 루프
while
루프는 조건이 충족되었는지 확인하는 것으로 시작됩니다. 조건이 참이면 작업을 수행하고, 거짓이면 루프가 중지됩니다.
다음 구문을 확인해 보세요.
While(condition) { //run this block of code }
Teatime 코드에 while
루프를 적용해 보겠습니다.
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
//Declare an Integer variable called totalGuests and set it to 100 Integer totalGuests = 100; //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar). Integer totalAmountSugar = 159; //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags). Integer totalAmountTea = 35; //Loop: Add a teaspoon of sugar and one tea bag to a tea cup. Serve until there is no sugar or tea left. While(totalGuests > 0) { System.debug(totalGuests + ' Guests Remaining'); //check ingredients if(totalAmountSugar == 0 || totalAmountTea == 0) { System.debug('Out of ingredients! Sugar: ' + totalAmountSugar + ' Tea: ' + totalAmountTea); break; //ends the While loop } //add sugar totalAmountSugar--; //add tea totalAmountTea--; //guest served totalGuests--; }
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
--
기호는 오타가 아니라 후위 감소 연산자로, “이 값에서 하나의 숫자를 빼기”를 간략히 표현한 방법입니다. totalAmountSugar
가 159와 같은 경우, 값을 감소시켜 totalAmountSugar
값이 158이 되도록 합니다. 후위 증분 연산자인 ++
는 반대로 값에 숫자 하나를 더합니다.
무슨 일이 일어나고 있을까요? 우리의 주요 목표는 100명의 손님에게 차를 대접하는 것입니다. 손님에게 차를 대접할 때마다 각 재료의 수량(totalAmountSugar
, totalAmountTea
)과 손님(totalGuests
) 수가 차감됩니다. totalAmountSugar
또는 totalAmountTea
가 0이 되거나(줄 15) totalGuests
가 0이 되면(줄 12) 루프가 중지되고 아무도 차를 대접받지 않습니다.
do-while
루프가 어떻게 작동하는지 살펴보겠습니다.
Do While 루프
do-while
루프는 조건을 테스트하기 전에 코드가 한 번만 작업을 수행하도록 합니다.
do-while
루프는 작업을 한 번 수행하는 것으로 시작합니다. 그런 다음 조건을 확인하고 조건이 참이면 작업을 다시 실행하며, 거짓이면 루프가 중지됩니다.
다음 구문을 살펴보세요.
Do { //run this block of code } while(condition);
- Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
- 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
//Declare an Integer variable called totalGuests and set it to 100 Integer totalGuests = 100; //Declare an Integer variable called totalAmountSugar and set it to 159 (number of teaspoons in a bag of sugar). Integer totalAmountSugar = 159; //Declare an Integer variable called totalAmountTea and set it to 35 (number of teabags). Integer totalAmountTea = 35; do { //deduct sugar serving totalAmountSugar--; //deduct tea serving totalAmountTea--; //deduct guest totalGuests--; System.debug(totalGuests + ' Guests Remaining!'); //check ingredients if(totalAmountSugar == 0 || totalAmountTea == 0) { System.debug('Out of ingredients!'); break; //ends the While loop } } while(totalGuests > 0);
- Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
- 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.
이제 변수를 선언하고, 값을 인스턴스화하고, 목록을 만들고 여러 방법으로 데이터를 루프 처리했습니다. 축하합니다! Apex 기초 부분을 완료하였으며, 앞으로 코드를 더 자세히 알아볼 수 있습니다.