GASでプログラミング入門 Vol.2

# GASでプログラミング入門 Vol.2

社内サークルにてエンジニアから非エンジニアの方向けにプログラミングを教えるという活動を行っています。
今回はその教材第二弾です。
前回の記事は[こちら](https://qiita.com/YoshinagaYuta/items/7dfef1ef9fdf0e3d2f28)

## 前回の演習問題の解答例

(1). 下記のような自己紹介を表示するプログラムを作成してください。

```
氏名：鈴木一郎
出身：東京都
趣味：ドライブ
一言：GASを頑張ってマスターする！
```

解答例コード

```js
console.log("氏名：鈴木一郎");
console.log("出身：東京都");
console.log("趣味：ドライブ");
console.log("一言：GASを頑張ってマスターする！");
```
ポイントとしては、console.log関数を記述して文字を出力する際に、改行されるので、今回のように４行に渡って表示を行いたい場合はconsole.logを4回記述するという点です。

(2). 数値を格納する変数を二つ作って、それぞれ10、5で初期化し、下記のような出力になるようにプログラムを作成してください。

```
計算結果：2
```

解答例コード

```js
let num1 = 10;
let num2 = 5;
let num3 = num1 / num2;
console.log("計算結果：" + num3);
```

ポイントとしては計算結果を格納する変数も用意して、最後の出力の際に、文字列と連結して表示している点です。上記のように記述すると、左に書いた文字に続いて、計算結果が格納された変数num3の内容が表示されます。

なお解答例はあくまで例なので、必ずしも上記のようになっていないといけないわけではありません。

## プログラムの基本「逐次、反復、分岐」について

プログラムを作成する際に、「逐次」、「反復」、「分岐」という３つの要素が重要になります。
理論上ではこの３つを組み合わせることで、どのようなプログラムも作成することが可能というようになっています。
あまり聞き慣れない言葉なので、少し難しく感じるかもしれませんが、一つ一つの意味をプログラムのコードと対比しながら理解していけばそんなに難しくないので、それぞれ見ていきましょう。

## 逐次について

「逐次」とは、プログラムに記述されたコードを上から順番に実行していくということを表しています。
既に前回までの学習内容や、演習問題でこの逐次については既に体験済済みです。
コードで表すと下記のようになります

```js
console.log("この行を実行したら");
console.log("次にこの行が実行されるよ");
```

上記を実行すると出力は下記のようになります。

```
この行を実行したら
次にこの行が実行されるよ
```

このようにコードで記述した順番で実行されていることが「逐次」という言葉で表現されている状態になります。

## 反復について

「反復」とはプログラム内のある処理を複数回繰り返すことを表しています。
コードで表現すると下記のようになります。

```js
for(let i=1; i <= 3; i++){
    console.log("繰り返し処理No." + i);
}
```

上記を実行すると出力は下記のようになります。

```
繰り返し処理No.1
繰り返し処理No.2
繰り返し処理No.3
```

上記のように、for文と呼ばれる特殊な文で囲まれたconsole.logが3回繰り返し実行されています。
for文の記述ルールは下記のようになっています。

```
for( 反復処理開始前に一度だけ実行される場所。変数の宣言や初期化を行う。; 反復処理を続ける為の条件式; 反復対象の処理が終わる度に実行される場所。主に反復処理の回数をカウントする変数の増減などを行う。 ){
    反復対象の処理
}
```

;で区切られており、３つのパートに分割されています。
上記の記述ルールに基づいてサンプルのコードを分解してみると
1. `let i=1`というのは反復処理開始前に`i`という変数を`1`という初期値で初期化しています。
2. `i <= 3`というのはこの反復処理を継続する条件式を記述がされており、`i`が3以下の時は反復処理を継続するということが記述されています。
3. `i++`というのは反復対象の処理を終えた後に毎回実行される後処理になります。変数`i`の値を+1づつ増やしています。++という記号の意味については次回以降で解説予定です。

なので、上記のサンプルを10回繰り返したい場合は`i <= 3`を`i <= 10`に変更します。
for文の記述ルールはやや難解で、とっつきにくいですが、少しづつ慣れていってもらえればと思います。
なお、反復処理のことを一般的にはループ処理と表現することが多いので、ループというワードも抑えておきましょう。

## 分岐について

「分岐」とは特定の条件の時にプログラムの処理を分岐させることを表しています。
コードで表現すると下記のようになります。

```js
let num = 1;
if (num == 1) {
    console.log("numが1の時のみ実行される。");
} else if(num == 2) {
    console.log("numが2の時のみ実行される。");
} else {
    console.log("numが1でも2でもない時に実行される。");
}
```

上記を実行すると出力は下記のようになります。

```
numが1の時のみ実行される。
```

JavaScriptでは分岐をコードで表現する際にif文というものを使用します。
if文の記述ルールは下記のようになっています。

```
if(条件式1){
    条件式1を満たした場合に実行される処理
} else if(条件式2) {
    条件式2を満たした場合に実行される処理
    条件式2の部分は複数回記述可能なので、幾つでも条件を増やすことができる
    ※省略可能
} else {
    条件式1も2も満たさなかった時に実行される処理
    ※省略可能
}
```

条件式の記述方法は次の講義で解説予定ですので、今回記述してある内容について解説します。
`num == 1`というのは`num`という変数の値が`1`と等しいということを表現しています。
変数`num`には初期値として`1`が代入されていますので、この場合条件式1の条件が成立して、結果的に`numが1の時のみ実行される。`と表示されます。
仮に、`let num = 2;`と書き換えると実行結果は`numが2の時のみ実行される。`に変わりますし、`let num = 3;`にした場合は実行結果が`numが1でも2でもない時に実行される。`に変わります。
このようにして、特定の条件に応じてプログラムの実行するルートを分岐させて、様々なパターンに対応した柔軟なプログラムを記述することが可能になります。
なお例ではif〜else if〜elseというように記述しましたが、else ifとelseに関しては必ず記述しなければいけないわけではなく、省略可能です。

## 演習問題

(1). for文を使用して下記のように実行されるプログラムを記述してください

```
ループ処理1回目
ループ処理2回目
ループ処理3回目
ループ処理4回目
ループ処理5回目
```

(2). 変数strを作成し、"条件式1"という文字列で初期化し、下記のような出力になるプログラムを作成してください。

```
条件式1の処理を実行
```

また、変数strの値を"条件式2"に変更した場合は下記のようになるようにしてください。

```
条件式2の処理を実行
```

## まとめ

いかがでしたでしょうか。
今回はプログラムの基本要素である「逐次」、「反復」、「分岐」について学習しました。
細かい文法については今回はあまり触れていませんが、次回以降で少しづつ今回登場した謎の記号や記述方法についても解説していきますので、今はひとまず基本となる3要素についての特徴をそれぞれ自分の言葉で説明できるように復習しておいてもらえればと思います！
それではまた次の記事でお会いしましょう。