descartes-src (ソースパッケージ descartes-src-0.26.0.tar.gz) | 2012-09-09 20:57 |
descartes-win (Windows用バイナリパッケージ descartes-win-0.26.0.zip) | 2012-09-09 20:52 |
会話キャラクター: ツンデレ アプリケーション (会話キャラ:ツンデレ v1.0 for Windows) | 2010-04-29 13:41 |
会話キャラクター: 2人の女の子 ダブルキャラクター (会話キャラクター 2人の女の子 ダブルキャラクター 1.0 for Windows) | 2011-10-02 22:23 |
会話キャラクター: Eliza風英語版 (会話キャラ:Eliza風英語版 v1.0 for Windows) | 2010-05-11 01:06 |
会話キャラクター: 猫耳メイド アプリケーション (会話キャラ:猫耳メイド v1.0 for Windows) | 2010-04-27 21:15 |
会話キャラクター: イライザ風日本語版 (会話キャラ:イライザ風日本語版 v1.0 for Windows) | 2010-04-30 21:53 |
経済指標表示プログラム for Windows (経済指標表示プログラム V1.0) | 2011-08-18 22:04 |
ニュースヘッドライン表示プログラム (ニュースヘッドライン表示プログラム V1.0 for Windows) | 2011-08-16 12:31 |
デカルト言語 example (デカルト言語の例題 example-0.7.0.zip) | 2009-03-01 19:47 |
電力状況表示プログラム for Windows (2011年夏版 全国電力供給状況表示プログラム V1.0) | 2011-08-15 13:25 |
ユークリッドの互除法を使って最大公約数を求めるプログラムを作ります。
// ユークリッドの互除法 // 最大公約数を求める #xは、#xと0の最大公約数です。 #a >= #bが成立し、 #c = #a % #bを計算し、 #xは、#bと#cの最大公約数である場合、 #xは、#aと#bの最大公約数です。 #c = #a % #bを計算し、 #xは、#aと#cの最大公約数である場合、 #xは、#aと#bの最大公約数です。 // 実行 #xは、30と12の最大公約数ですか。 #xは、511639100と258028360の最大公約数ですか。
論理的かつ宣言的に書けます。
本当にこれで最大公約数が得られるか実行してみましょう。
上のプログラムはsamples/gcd.mrsに入っているとします。
$ descartes murasaki samples/gcd.mrs #xは、30と12の最大公約数ですか。 6は、30と12の最大公約数です。 #xは、511639100と258028360の最大公約数ですか。 20は、511639100と258028360の最大公約数です。
うまくいきました。
日本語プログラム「紫」は、定められた構文の日本語の記述をデカルト言語に変換して実行します。
このユークリッドの互除法は、次に示すデカルト言語に変換されて実行されます。 元のプログラムと見比べてみてください。
<M2 最大公約数 #x (#x 0)> ; <M2 最大公約数 #x (#a #b)> <compare #a >= #b> <let #c = #a % #b> <M2 最大公約数 #x (#b #c)> ; <M2 最大公約数 #x (#a #b)> <let #c = #a % #b> <M2 最大公約数 #x (#a #c)> ; ? <printf '#xは、30と12の最大公約数ですか。' <\_n>>; ? <回答 (<M2 最大公約数 #x (30 12)>)>; ? <print>; ? <printf '#xは、511639100と258028360の最大公約数ですか。' <\_n>>; ? <回答 (<M2 最大公約数 #x (511639100 258028360)>)>; ? <print>;
--
--
[PageInfo]
LastUpdate: 2011-09-07 02:33:20, ModifiedBy: hniwa
[License]
Creative Commons 2.1 Attribution
[Permissions]
view:all, edit:login users, delete/config:login users