Java/Python 導入ガイド:フィボナッチ数列
Java プログラマーのための Python 導入ガイド〈初級/入門編〉《Jython2.5》
フィボナッチ数列
■ 関連記事
》作業中です《
フィボナッチ数列
フィボナッチ数列〔Fibonacci series〕の事例は、Python の公式文書 Tutorial でも紹介されています。
■ 事例:Java
変数は、計算の途中経過を保持するのに便利です。
class Fibonacci { public static void main(String[] args) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; lo = hi - lo; } } }
■ 事例:Jython
Jython では、変数の型を宣言する必要がありません。型は、変数ではなく「オブジェクト」の特性を示します。
def fibonacci(): lo = 1 hi = 1 print(lo) while hi < 50: print(hi) hi = lo + hi lo = hi - lo ## ---------------------------------------- def fibonacci2(): lo = hi = 1 print(lo) while hi < 50: print(hi) ## hi, lo = lo + hi, hi - lo lo, hi = hi, lo + hi
K&R に続く、数多くのプログラミング言語の入門書で「なぜか」これと同様の例が示されます。Java/Python 自身もC言語で記述されていることから、これらはある意味で「C言語のアプリケーション」とも言えます。C言語を生み出した「K&R への賛辞」という意味では、ここから始めることに意義があるのかもしれません。
Tips
》作業中です《
@
■ 事例:Java
class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world"); } }
「世界一有名な Java プログラム」は「世界一短い Java プログラム」とも言えます。文字列 "Hello, world" の部分を無視すると、何かを出力するのに「最低限」必要な要素が盛り込まれています。
Jython 対話モード
同じことを Jython で記述すると、対話モードを起動して、
$ jython2.5.0 Jython 2.5.0 (Release_2_5_0:6476, Jun 16 2009, 13:33:26) [Java HotSpot(TM) Client VM (Apple Inc.)] on java1.5.0_13 Type "help", "copyright", "credits" or "license" for more information.
ここで、組み込み関数 print を利用すると、
>>> print("Hello, world")
Hello, world
または、対話モードならではの特徴を活かして、
>>> "Hello, world" 'Hello, world'
と文字列を入力するだけでも、同様の出力が得られます。
Jython スクリプト
コマンドラインからモジュールを起動すると、
$ jython2.5.0 hello.py
if __name__ == '__main__':
print("Hello, world")
if 文に続く条件式を満たすときだけ、ブロック内に記述されたコードの断片を実行します。
■ 事例:Jython 関数
モジュール内に関数 main を定義します。すると、
def main(): print("Hello, world") main()
関数呼び出し main() によって、同じ出力が得られます。
■ 事例:Jython メソッド
モジュール内にクラス HelloWorld とメソッド main を定義します。すると、
class HelloWorld: def main(self): print("Hello, world") HelloWorld().main()
メソッド呼び出し main() によって、同じ出力が得られます。