このシリーズでは『計算物理学入門』に載っているシミュレーションを Groops で書いていこう!ってのが目的でしたが、Groops で前提としているプログラミング言語の Groovy ってどの程度知られているのか分からないので、『計算物理学入門』で True BASIC について書かれている程度に Groovy について説明していきま〜す。 でも、Java に関してはそれなりに知ってるものとしてま〜す。
True BASIC
まずは変数を定義して、掛け算して、結果を出力するプログラム。PROGRAM product LET m = 2 ! 質量、単位は kg LET a = 4 ! 加速度、MKS 単位 LET force = m*a ! 力、単位は N (ニュートン) PRINT force END
True BASIC って、文法知らなくてもだいたい何やってるか理解できるので、擬似コードとして使うのいいですね(実際に動かせるんで擬似コードって言わないだろうけど)。 コードの題材はニュートンの運動方程式だけど、やってるのは単なる掛け算ですダ。
Groovy
では、True BASIC のコードを Groovy で書いてみましょう。素直に書き換え
上記の True BASIC のプログラムを素直に Groovy で書くと以下のようになります:def m = 2 // 質量、単位は kg def a = 4 // 加速度、MKS 単位 def force = m*a // 力、単位は N (ニュートン) println force // 「8」と出力される
- 変数の宣言は def キーワードで行います*1。
- 行末までのコメントは、Java と同じく連続するスラッシュ (//) です。 複数行の Java コメント(/* と */ で挟まれたコメント)も使用できます。
- 標準出力への書き出しは println() メソッド で行います。 上記のコードではメソッドの括弧を省略しています。
上記のコードを「product.groovy」というファイルに保存したとして、プログラムを実行するには*2このファイルが置かれているフォルダ上で
groovy product.groovy
もしくは
groovy product
を実行します*3。
浮動小数点数を使う
プログラムの世界ではどんな型の数値を使って計算を行っているかということを意識するのは大切です。 上記のコードでは整数 (java.lang.Integer) を使った計算をしていました*4。 というのは、Groovy では「2」や「4」は整数の数値(整数リテラル)として認識されるからです。次は、これとは違って浮動小数点数(小数)を使いたいとしましょう。 Groovy では浮動小数点数のリテラルは少し注意が必要です(特に Java を使ってた人には)。 単純に「2.0」と書くと、これは java.math.BigDecimal オブジェクトとして扱われます。 通常、シミュレーションでは Java の double (java.lang.Double) の精度で充分なので、数値リテラルの末尾に「d」または「D」を付けて、double の精度の数値であることを指定する必要があります:
def m = 2.0d // Double 値を使いたい場合は接尾辞「d」or「D」を付ける def a = 4d // 小数点は必ずしも必要なし def force = m*a println force // 「8.0」と出力される
もう一つ Java と Groovy の覚えておくべき違いは「整数同士の割り算」です。 Java では「1 / 2」は 0 になりますが、Groovy では「1 / 2」は0.5になります。 Groovy で Java の整数同士の割り算を行うには「1.intdiv(2)」とします。
プリミティブ型
Groovy では「すべてがオブジェクトとして扱われる」ので、一見 Java のプリミティブ型のように書かれていても実際にはそのラッパークラスとして扱われますが、Groovy 1.8 からプリミティブ型に対する最適化が行われていているので(1.8.0 では int 型だけですが)、計算をガリガリ行う変数はプリミティブ型として宣言しておく方がいいでしょう*5:double m = 2d double a = 4d def force = m*a println force // 「8.0」と出力される
この場合、数値リテラルの末尾の「d」はなくてもいい構いません。
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る
- 作者: ハーベイゴールド,ジャントボチニク,Harvey Gould,Jan Tobochnik,鈴木増雄,石川正勝,溜渕継博,宮島佐介
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/12
- メディア: 単行本
- 購入: 1人 クリック: 28回
- この商品を含むブログ (45件) を見る