地震の予測マップと発震日予測

地震発生ヶ所をポイント予測し、度数分布から発震日を確率予測する

Rubyコーディングあれこれ(初めての方むけ:複雑なif論理の記述)

  本地震の予測マップ・プログラムはRubyで書かれていますが、以前から初めての方むけにコーディングテクのようなモノをまとめておければ、と考えていました。 そこで思い付くままにまとめてみよう、と考えております。

まず最初は、複雑な論理のif文を書く際のテクニックです。 (短くまとめます)

 

if文ですから、一般的には:

if  condition1  # 条件1を満たせば

     data transfer operation1 # データ処理1を実行

elsif  condition2  # 条件2を満たせば

    data transfer operation2 # データ処理2を実行

... # いくつも elsif でネストされて

else  # 上記条件群を満たさない入力条件が在れば

   abort(message)  # アボート

end  # という事になるかと思います。

 

  このように最初からきれいに書ければ良いのですが、入力条件が分からない、まだすべて決まっていない、仕様が不明確、といった事はよくあると思います。

そのような場合には、if文の途中で脱出したい、という事になります。 そのやり方です。

上記を例に取れば:

loop do  # 無限loop 宣言、だが、single loopにしてしまう

if  condition1

    data transfer operation1   

break end  # condition1 の終了、loopから脱出

if  condition2

    data transfer operation2  

break end  # condition2 の終了、loopから脱出

...

abort(message)  # アボート

break end # トップの loop doの脱出(終了)宣言

abort処理の所で想定していなかった入力条件が分かりますから、新たに if break end ブロックを入れるべき箇所に自由に追加してゆきます。 こうしてプログラムにデバッグさせながらプログラムを完成させてゆきます。

 

  完成した暁に、このブロックが何百万回もコールされるような場所にあれば、elsif型に書き直します(スピードはelsifの方が断然早いのです)。 そうでなければそのままです。

 

以上です。