2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

if と elseif と elseの違い

Last updated at Posted at 2023-04-28

はじめに

今日からブログを始めるので言葉足らずですが、気長に見ていただけたらありがたいです。
最初に何を書こうか悩んでいたけど、一番最初に取り上げたいものがありました
学校で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歳以上は大人として入場料を変えます

     
料金表
種類 料金
3歳以下 0円
小人 4,500円
中人 6,000円
大人 6,800円

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

私は、書き方は読みやすさを意識するなら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
S__5357614.jpg

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?