GASのwhile文とdo while文で繰り返し処理を実行する【Google Apps Script】

Google Apps Script
無料で始められる「クラウドリンクス」

以前の記事で、繰り返し処理の基本となるfor文についてご紹介しました。

指定した回数分だけ同じ処理を繰り返すことができましたね。

しかしながら、いつも回数を指定できるわけではありません。

回数を指定できない場合はどうしたら良いでしょうか?

この記事では、回数を指定せずに繰り返し処理を実行するwhile文その派生であるdo while文についてご紹介します。

こんな人におすすめ
  • 回数を指定しない繰り返し処理について知りたい
  • while文とdo while文の違いを知りたい
  • while文の書き方と仕組みについて知りたい
  • do while文の書き方と仕組みについて知りたい
スポンサーリンク

はじめに

これからwhile文とdo while文の解説をしていきますが、”そもそも繰り返し処理って何?” ”他にどんな種類があるの?”という方は、冒頭でもご紹介したfor文の記事をご参照下さい。

”回数を指定できない”とは、どういう場合か

様々な繰り返し処理の中でも、while文/do while文は繰り返し回数を指定できないような場合に役立ちます。

例えば、以下のような場合です。

1000を超えない範囲で変数iを3倍していった結果を繰り返し出力する

このように、決められた範囲はあるけど、繰り返す回数が分からないという場合にwhile文を使います。

スポンサーリンク

while文の書き方と仕組み

構文は以下のとおりです。

while(条件式){
    処理;
}

for文と比較しても、シンプルな構文です。

ちなみに、先程ご紹介した『1000を超えない範囲で変数iを3倍していった結果を繰り返し出力する』場合のサンプルコードとログの出力結果は以下のとおりです。

function myFunction() {
  let i = 1;
  while(i<1000){
    console.log(i);
    i = i * 3;
  }
}

while文の場合、以下の図に示すように条件式がtrueの場合に処理が実行され、条件式に対してfalseの場合はwhileループを抜けます。

ですので、先程のサンプルコードを1行ずつ解説すると以下のようになります↓

サンプルコードの解説
  1. 変数iを定義して、i=1として初期化
  2. i=1なので、条件式i<1000がtrueとなり括弧内の処理を実行する
  3. iの値をログに出力
  4. iを3倍する
  5. i<1000が満たされる間は上記1〜4を繰り返す
未経験からIT業界へ転職なら【DMM WEBCAMP】

do while文の書き方と仕組み

do while文の構文です↓

do{
    処理;
}while(条件式)

while文と比較すると、条件式が処理のあとに記載されていますね。

ちなみに、do while文を図に示すと以下のようになります。

条件式よりも処理が先にあるがゆえに、必ず1回は処理が実行されます。(while文の場合、最初に条件式がfalseであれば1回も処理が行われません。

例えば、先程ご紹介した『1000を超えない範囲で変数iを3倍していった結果を繰り返し出力する』場合に変数i=1200として初期化してみましょう。

function myFunction() {
  let i = 1200;
  do{
    console.log(i);
    i = i * 3;
  }while(i<1000);
}

ログの出力結果は以下のとおりです。

do while文の場合、最初の1回は必ず処理が実行されるので1200が出力されています。(while文の場合は、最初に条件式i<1000がfalseになるので、処理は1回も実行されません。)

最初の処理が実行されたあとは、i<1000という条件式がfalseになるのでループから抜け出します。

累計利用企業850社突破!「クラウドリンクス」

まとめ

今回は『回数を指定せずに繰り返し処理を実行するwhile文とその派生であるdo while文』についてご紹介しました。

最後に今回のおさらいです↓

おさらい
  • 繰り返し処理の回数があらかじめ指定できない場合にwhile文を使用する
  • while文は条件式の後に処理がくる
  • do while文は処理の後に条件式がくる (最初の1回は必ず処理が実行される)

次回は配列の繰り返し処理について解説する予定です。

お楽しみに!

スポンサーリンク

コメント

タイトルとURLをコピーしました