制御構文(GASの学習_2)

この連載では僕が所属しているノンプロ研で受講した、GAS初級講座での気づきをまとめています。前回の記事はこちらです。

hirocom777.hatenadiary.org

前回は第1回「はじめてのGAS、変数、演算、データ型」について学びました。プログラミングでは、色々な種類(データ型)の値を、命令にしたがって処理(演算)します。値を箱(変数・定数)に入れることで便利になります。

実際に講座に参加して学んでみると、本やWebで集めた情報とは違って理解のレベルが深くなりますね。独学とはまったく違います。

今回は第2回「制御構文」について取り組みます。ほかの言語との違いは何なんでしょうか?

プログラム処理

GASに限らずプログラム処理は、以下の3種に分類されます。

  • 順次
    指定した手順にしたがって処理を進めていきます。プログラム処理の基本です。

  • 選択
    条件および、条件が成立した場合の処理、成立しなかった場合の処理を設定して、条件によって実行する処理を選択します。3つ以上の条件を指定する場合もあります。

  • 反復
    指定した処理を繰り返します。繰り返される処理内容は、処理時点での状態によって異なります。

前回まで取り組んできた内容は、「順次」になります。そして今回は「選択」、「反復」に取り組んでいきたいと思います。

選択

条件式

選択では条件によって処理を切り替えるのですが、条件を表す式を条件式といいます。条件式の結果は真偽型(true/false)の値を返します。また、後述するif文で値を条件式に指定すると、暗黙的に真偽値に変換されます。

比較演算子

他の言語でもそうなのですが、条件式には比較演算子を用いられることが多いです。比較演算子で特筆する点は、2つの値が等しい/等しくないを判定するケースです。2通りの方法があります。

  • 厳密等価演算子(===/!==)
    右辺と左辺の値とデータ型が等価であるかどうかを判定します。「=」を3つ繋げて記述します(等価でないかを判定する場合には「!」と「=」を2つ)。

  • 等価演算子(==/!=)
    右辺と左辺のが等価であるかどうかを判定します。「=」を2つ繋げて記述します(等価でないかを判定する場合には「!」と「=」を1つ)。

実際の運用では厳密等価演算子を使用することが多いようです。その他の仕様はC言語と一緒の様です。

論理演算子

複数の条件式を指定する場合は、論理演算子(「&&」、「||」、「!」)を使用します。

条件式1 && 条件式2

などと記述します。これはC言語と一緒の様ですので詳細は割愛します。

実際の条件分岐

実際に条件を指定して選択をする場合、if文やswitch文を使用します。 if文の記述方式は以下になります。

if (条件式) {
  // 処理1
} else {
  // 処理2
}

複数の条件式を指定する場合はswitch文が便利です。switch文の記述方式は以下になります。

switch (式) {
case 値1:
  // 処理1
break;
case 値2:
  // 処理2
break;
・・・
default:
  //処理default
}

式の結果と等しい値のcase句に記述してある処理を実行します。処理の最後にbreak句を記述しないと、後にづく処理も実行されてしまうので注意しましょう。また、結果と等しい値がない場合はdefault句に記述してある処理を実行します。

条件分岐の仕様はC言語と一緒の様ですので詳細は割愛します。

反復

反復処理ではfor文やwhile文を使用します。 for文の記述方式は以下になります。

for(初期化式; 条件式; 増減式){
  // 処理
}

while文の記述方式は以下になります。

while (条件式){
  // 処理
}

反復処理の途中で抜けたい場合は、どちらもbreak句を記述します。 反復もC言語と一緒の様ですので詳細は割愛します。

入れ子構造

これもほかの言語と同じなのですが、選択、反復の処理はネスト(入れ子)構造で使用する場面が多々あります。上に述べたbreak句による反復処理を条件指定で抜けたいときや、2次元のデータ処理等です。

次回は関数・配列

いかがでしょうか。概ねC言語と同じようで、JavaScript(GAS)がC言語の影響を受けているということが如実に分かりました。また、違う点については良く把握しておく必要があるようです。なぜ違うのか、後々考察できるといいと思っています。 次回は関数・配列です。お楽しみに!!

hirocom777.hatenadiary.org

GAS関連記事まとめ - HiroCom777の学習記録