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 には、3 つのループ方法 (while ループ、do-while ループ、for ループ) があります。ここでは、while ループと do-while ループを取り上げます。名前のとおり、while ループと do-while ループはよく似ています。どちらも特定の条件を満たしていることを確認します。違いは、条件を満たしていることをいつ確認するかにあります。While ループでは、ループを開始するに条件をチェックし、do-while ループでは、ループが終了したにチェックします。 

ささいな違いのように思えますね。実際には、かなり大きな影響があります。 

次のように考えてください。do-while ループは常に少なくとも 1 回実行されます。while ループは、条件によっては 1 回も実行されないことがあります。 

while ループ

while ループは、条件を満たしていることを確認して開始します。条件が true の場合、処理を実行します。false の場合、ループは停止します。

true か false か確認される条件で構成される、while ループのプロセスフロー図。条件が true の場合、ループは続行します。条件が false の場合、ループは停止します。

メモ

メモ

フローチャートの記号と表記法を再確認する場合は、こちらをクリックしてください。

構文は次のとおりです。

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

while ループを Teatime コードに適用してみましょう。 

  1. 開発者コンソールで、[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 (実行)] をクリックします。実行ログが開き、コードの実行結果が表示されます。
  4. ウィンドウ下部の [Debug Only (デバッグのみ)] チェックボックスをオンにします。

-- 記号はタイプミスではありません。これは後置減分演算子と呼ばれます。「ある数値をこの値から減算する」を短く表現したものです。totalAmountSugar が159 と等しい場合、減分し、totalAmountSugar の値は 158 と等しくなります。後置増分演算子 ++ は逆の操作を実行します。つまり、ある数値を値に加算します。

一体何が起きているのでしょうか? ここでは 100 人のゲストに紅茶を出すという 大きな目標が 1 つあります。ゲストに紅茶を出すたびに、1 回分の各材料 (totalAmountSugartotalAmountTea) およびゲスト (totalGuests) が差し引かれます。totalAmountSugar または totalAmountTea が 0 になるか (行 15)、または totalGuests が 0 になると (行 12)、ループは停止して、それ以外の人には紅茶は出されません。 

次は、do-while ループのしくみを見てみましょう。

do-while ループ

do-while ループでは、条件が評価される前に、コードは 1 回処理を実行できます。

do-while ループは、開始後に 1 回タスクを実行します。次に、条件が確認されます。条件が true の場合、タスクを再度実行します。false の場合、ループは停止します。

実行されるコードブロックと、実行後に true か false か確認される条件で構成される、do-while ループのプロセスフロー図。条件が true の場合、ループは続行します。条件が false の場合、ループは停止します。

構文を見てみましょう。

Do {
    //run this block of code
} while(condition);
  1. 開発者コンソールで、[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 (実行)] をクリックします。実行ログが開き、コードの実行結果が表示されます。
  4. ウィンドウ下部の [Debug Only (デバッグのみ)] チェックボックスをオンにします。

ここまでに、変数の宣言、値のインスタンス化、リストの作成、データの複数のループ方法を実際に行いました。お疲れ様でした。Apex の概要の学習を完了して、コードについてより深く理解するための道を着実に進んでいます。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む