ループの使用
学習の目的
この単元を完了すると、次のことができるようになります。
- 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 の場合、ループは停止します。
構文は次のとおりです。
While(condition) { //run this block of code }
while
ループを Teatime コードに適用してみましょう。
- 開発者コンソールで、[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 (実行)] をクリックします。実行ログが開き、コードの実行結果が表示されます。
- ウィンドウ下部の [Debug Only (デバッグのみ)] チェックボックスをオンにします。
--
記号はタイプミスではありません。これは後置減分演算子と呼ばれます。「ある数値をこの値から減算する」を短く表現したものです。totalAmountSugar
が159 と等しい場合、減分し、totalAmountSugar
の値は 158 と等しくなります。後置増分演算子 ++
は逆の操作を実行します。つまり、ある数値を値に加算します。
一体何が起きているのでしょうか? ここでは 100 人のゲストに紅茶を出すという 大きな目標が 1 つあります。ゲストに紅茶を出すたびに、1 回分の各材料 (totalAmountSugar
と totalAmountTea
) およびゲスト (totalGuests
) が差し引かれます。totalAmountSugar
または totalAmountTea
が 0 になるか (行 15)、または totalGuests
が 0 になると (行 12)、ループは停止して、それ以外の人には紅茶は出されません。
次は、do-while
ループのしくみを見てみましょう。
do-while ループ
do-while
ループでは、条件が評価される前に、コードは 1 回処理を実行できます。
do-while
ループは、開始後に 1 回タスクを実行します。次に、条件が確認されます。条件が true の場合、タスクを再度実行します。false の場合、ループは停止します。
構文を見てみましょう。
Do { //run this block of code } while(condition);
- 開発者コンソールで、[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 (実行)] をクリックします。実行ログが開き、コードの実行結果が表示されます。
- ウィンドウ下部の [Debug Only (デバッグのみ)] チェックボックスをオンにします。
ここまでに、変数の宣言、値のインスタンス化、リストの作成、データの複数のループ方法を実際に行いました。お疲れ様でした。Apex の概要の学習を完了して、コードについてより深く理解するための道を着実に進んでいます。