Skip to main content

루프 사용

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 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 루프입니다. 이번에는 whiledo-while 루프를 집중적으로 살펴보겠습니다. 이름에서 알 수 있듯 whiledo-while 루프는 매우 유사합니다. 둘 모두 특정 조건이 충족되었는지를 확인합니다. 차이점은 조건이 충족되었는지 확인하는 시점입니다. While 루프는 루프가 시작되기 전에 조건을 확인하고, do-while 루프는 루프가 완료된 후에 조건을 확인합니다. 

사소한 차이처럼 보일 수 있지만 사실 그 영향은 꽤 큽니다. 

do-while 루프는 항상 최소 한 번 이상 실행된다고 생각하세요. while 루프는 조건에 따라 실행되지 않을 수도 있습니다. 

While 루프

while 루프는 조건이 충족되었는지 확인하는 것으로 시작됩니다. 조건이 참이면 작업을 수행하고, 거짓이면 루프가 중지됩니다.

조건이 참인지 거짓인지 확인하는 while 루프의 그래픽 프로세스 플로. 조건이 참이면 루프가 계속되고, 거짓이면 루프가 중지됩니다.

참고

참고

플로 차트 기호나 표기법을 다시 확인하려면 여기를 클릭하세요.

다음 구문을 확인해 보세요.

While(condition) {
    //run this block of code
}

Teatime 코드에 while 루프를 적용해 보겠습니다. 

  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 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--;
    }
  3. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  4. 창 아래에 있는 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-while 루프의 그래픽 프로세스 플로. 조건이 참이면 루프가 계속되고, 거짓이면 루프가 중지됩니다.

다음 구문을 살펴보세요.

Do {
    //run this block of code
} while(condition);
  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 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);
  3. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  4. 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.

이제 변수를 선언하고, 값을 인스턴스화하고, 목록을 만들고 여러 방법으로 데이터를 루프 처리했습니다. 축하합니다! Apex 기초 부분을 완료하였으며, 앞으로 코드를 더 자세히 알아볼 수 있습니다.

리소스

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기