Skip to content

In Silico 創薬

このブログサイトは、In silico創薬に関連する研究論文やソフトウェア・ツールの利用やプログラミングなどについてご紹介しています。

Menu
  • Blog Home
  • カテゴリー
    • CGBVS/CzeekS
    • DRAGON/alvaDesc
    • Docking
    • LigandScout
    • KNIME
    • Linux関連
    • プログラミング関連
  • ACISS サービスページへ
  • About Us
Menu

プログラミング言語のif文

Posted on 2020年12月18日2020年12月19日 by 株式会社インテージヘルスケア 金井 千里

 プログラミング言語で必ず出てくるif文についてまとめました。自分がプログラムを書く上での備忘録を作成したかったので、ついでにブログも書いてみました。

はじめに

 私は大学生の頃から科学技術計算系のプログラムを書いてきましたが、常々疑問に思うことがありました。それは「プログラミング言語多すぎじゃね?」ということです。基本的に出来ることは一緒なのだから、言語なんて2、3個あれば十分だと思っています。しかしながらプログラミング言語は現在も増えていて、挙句の果てには人気プログラミング言語のランキング表が注目されている状況です。幸いなことに私が得意とするC/C++は常にランキングの上位にあって、簡単には廃れることが無いでしょう。とは言え、機械学習などのAI関連の情報はPythonばっかりで、C/C++だけでは少々キツイのでPythonと組み合わせてプログラミングしています。それにしても1つのプログラミング言語で全てを処理できないのは生産性良くないなぁと感じます。

 手続き型と呼ばれる一般的なプログラミング言語は制御構造が共通しています。つまりどの言語にもif文はあるし、for(do)ループもあります。私が納得いかないのはこの部分の文法が言語毎に微妙に異なることで、特にif文の違いは最悪です。例えばif文の一部で、C/C++、Python、Perlはそれぞれ”else if”、”elif”、”elsif”と書きます。ここが異なる意味って何かあるのでしょうか?正直、プログラミング言語開発者の嫌がらせとしか思えません。このような細かい違いを一々記憶していられないし、if文が出てくるたびにネット検索するのも面倒なので簡単な備忘録にまとめようと思ったわけです。

いろいろなif文

 色々と愚痴めいたこと書きましたが、私がよく使うプログラミング言語を中心にif文を下の表にまとめました。一部の言語において論理演算子については”&&”などの記号に加えて”and”とかも使えるものもありますが、C言語の記述方式に統一しました。

言語if文条件式論理演算子ブロック
C/C++if ~ else if ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
Fortranif ~ else if ~ else ~ end if()の中に記述.and., .or., .not.thenとend ifに囲まれた部分
Pythonif ~ elif ~ else ~記述の最後に:を付けるand, or, notインデントした部分
Perlif ~ elsif ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
Rubyif ~ elsif ~ else ~ endそのまま記述&&, ||, !thenとendに囲まれた部分
Rif ~ else if ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
Bashif ~ elif ~ else ~ fi[]の中に記述して最後に;を付ける&&, ||, !thenとfiに囲まれた部分
CMakeif(…) ~ elseif(…) ~ else() ~ endif()()の中に記述AND, OR, NOTifとendifで囲まれた部分
PHPif ~ elseif ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
javaif ~ else if ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
javascriptif ~ else if ~ else ~()の中に記述&&, ||, !{}で囲まれた部分
BASICIf ~ ElseIf ~ Else ~ End If記述の最後にThenを付けるand, or, notThenとEnd Ifに囲まれた部分
各言語におけるif文のまとめ

 こうして見てみるとC言語と全く共通しているのはR、java、javascriptですね。惜しいのはPHPとPerlで、どちらも”else if”の記述が微妙に異なります。特にPHPでは”elseif”とスペースが無くなっているだけです。無理に空白1個を無くさなくても良いような気がするんですがねぇ… それとも字句解析する際の都合上、空白が無い方が良いのですかね?私の希望としてはif文の書き方については全てC言語に合わせて頂きたいところです。

終わりに

 今回はif文の違いについてですけど、forループの違いも微妙です。ただループの場合はカウンタを利用して回す場合とイテレータを利用して回す場合とがあり、まとめるのが面倒だったので今回省きました。時間があるときにまとめてみようと思ってます。大体のプログラミング用エディタにはスニペットを登録する機能が付いています。この機能を使えば細かい事を記憶する必要が無くなるので、これを機にif文やforループについてのスニペットを地道に作成してみようと思います。

Category: プログラミング関連

最近の投稿

  • プログラミング言語のif文
  • CGBSP ~新しいCGBVSの応用~
  • OpenBabelでC++プログラミング ~部分構造検索 その3~
  • In silico target prediction for protein-protein interaction (PPI) small molecule inhibitors using CGBVS
  • OpenBabelでC++プログラミング ~部分構造検索 その2~

カテゴリー

  • CGBVS/CzeekS (4)
  • Docking (1)
  • DRAGON/alvaDesc (4)
  • KNIME (2)
  • LigandScout (5)
  • Linux関連 (1)
  • プログラミング関連 (12)

アーカイブ

  • 2020年12月
  • 2020年10月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年10月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
©2021 In Silico 創薬 | Built using WordPress and Responsive Blogily theme by Superb