if と elseif と elseの違い

## はじめに
今日からブログを始めるので言葉足らずですが、気長に見ていただけたらありがたいです。
最初に何を書こうか悩んでいたけど、一番最初に取り上げたいものがありました
学校でif文について話していたところ自分がちゃんと理解できてないんだなと再認識して理解できてること、頭の中の知識を整理しないといけないと気付かされたので、苦手ながらも続けて書いていきたいなと思います
今回はそんなif文について話していきます
## 色んなif文の書き方
今まで実務経験はありませんが、参考書で勉強した際にいろんな書き方があることを知りました
### JavaやJavaScriptの場合
```
if (条件式＝＝true) {
    （trueの場合の処理を書く）;
} else if(条件式==true){
    （trueの場合の処理を書く）;
} else
    （if elseif の条件式のいずれにも当てはまらない場合に書く）;
```

で{}でくくる必要がありとても厳密な書き方でした
しかし{}でくくるのでどこまでがifやelseifの範囲かとてもわかりやすく見やすかったです。

### Pythonの場合
```
if 条件式==true:　
    （trueの場合の処理を書く）
elif 条件式==true:
    （trueの場合の処理を書く）
else: 
    (if elif の条件式のいずれにも当てはまらない場合に書く）
```

というインデントでif文のスコープを決めるものでした
個人的にはとても読みにくく難しいと感じています

### Rubyの場合
```
if 条件式==true　
    （trueの場合の処理を書く）
elsif 条件式==true
    (trueの場合の処理を書く）
else
    (if elsif の条件式のいずれにも当てはまらない場合に書く）
end
```
とelsifとendで最後をくくる以外は同じですね、、、

### 擬似言語の場合
```
if (条件式＝＝true)
    （trueの場合の処理を書く）
elseif(条件式==true)
    （trueの場合の処理を書く）;
else
    （if elseif の条件式のいずれにも当てはまらない場合に書く）;
endif
```

最後はendifでくくるというものでした

## 授業での課題演習
今日3時限目、4時限目で簡単な年齢で料金を変えようという問題を演習として解きました。

問題
3歳以下は無料、11歳までは小人、17歳までは中人、18歳以上は大人として入場料を変えます
<table>
  <caption>料金表</caption>
  <thead>
    <tr>
      <th>種類</th> <th>料金</th>
    </tr>
  </thead>
  <tr>
    <td> 3歳以下 </td><td>0円</td>
  </tr>
　<tr>
    <td> 小人 </td> <td>4,500円</td>
  </tr>
　<tr>
    <td> 中人 </td> <td>6,000円</td>
  </tr>
　<tr>
    <td> 大人 </td> <td>6,800円</td>
</tr>
</table>

上記の料金表に従って年齢で料金が変わるプログラムを作成しなさい



私は、書き方は読みやすさを意識するならelseifで条件分岐を作るのが一般的でしたがいろんなパターンで書いてみました

### elseifで読みやすくする場合(python)
```
age_io  = input("年齢を入力してください。")
age = int(age_io)
if age < 4:
    #3歳以下は無料
    price = 0
elif age < 12:
    #小人の料金（4500円）
    price = 4500
elif age < 17:
    #中人の料金（6000円）
    price = 6000
else:
    #大人の料金(6800円)
    price = 6800
#出力する
print ("入場料金は" + str(price) + "円です")
```

が一番見やすいと思います。
最初はprintを全ての条件内に書いていましたが、まとめたら良いとアドバイスを貰ったので最後に書きました。
ただ、if文のみで書いたらどうなるんだろうと思ってサッと作ってみました

### ifとelseのみで書く
```
age_io  = input("年齢を入力してください。")
age = int(age_io)
if age < 18:
    if age < 12:
        if age <= 3:
           #3歳以下は無料
           price = 0
        else:
          #小人の料金（4500円）
          price = 4500
    else:
        #中人の料金（6000円）
        price = 6000
else:
    #大人の料金(6800円)
    price = 6800

#出力する
print ("入場料金は" + str(price) + "円です")
```

という形でネスト構造になってしまいました。
可読性が悪くどこで間違えているか瞬時にわからないプログラムになってしまいました。

## ifとelseifとelseの違い
　ここから本題なのですが、ifのみで条件分岐をかけるならわざわざelseifを使わなくてもいいのでは？という話を今日受けました。
　自分は当たり前のようにifで条件分岐が始まってその後もさらに条件で場合分けをしないといけないならelseifを使うのが当たり前だと思っていましたので考えたこともありませんでした。
　ただし、理由もなくifで入れ子にするのは他人が見た時にいいコードではないので基本的に使うべきではありません。
　if elseif elseはそれぞれ意味があって使われています

　ifは条件判定の開始を宣言するものです。なのでここから条件分岐は始まるよーと伝えたい時に使うのがとても理想です。
　それに対してelseifは複数の条件分岐を使いたい際に用います。
 elseはif elseifの条件式に満たない場合(false)に行いたい処理を記載したい時に使います

なので言語ごとに書き方は違いますが、他人が見てもわかりやすいコードを書くためにネスト構造を減らす目的でelseifを意識して使うべきです。

下の画像は条件分岐をフローチャートにして書いてみたメモです

これからも努力して綺麗な読みやすい文章書いていきますので優しく見守っていただけたらありがたいです。
最後まで読んでいただきありがとうございました。
　間違えた文法、知識、言葉遣いありましたらお手数ですが、優しくコメントで教えてくれるとありがたいです。


![S__5357603.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3326702/258320ab-508a-f527-7ad0-d62273a83936.jpeg)
![S__5357614.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3326702/484ec6d5-af6b-7c67-883b-6d831e7a383a.jpeg)