忍者ブログ

Memeplexes

プログラミング、3DCGとその他いろいろについて

IronScheme その3 四則演算といろいろ

1 + 1 = ?

前回はHello Worldをしました。
今回は四則演算をしましょう。

ではまず最も簡単な足し算、1 + 1をやってみましょう!
(0 + 0のほうが簡単でしょうか?
いやでもあまり面白い結果にはなりませんもんね)

(import (rnrs) (ironscheme clr))

(clr-static-call System.Console WriteLine (+ 1 1))
(clr-static-call System.Console ReadLine)

結果は
2
です。

(+ 1 1)に着目してください。
IronSchemeでは1 + 1という書き方はダメです。
関数というかなにか命令のようなものは常に先頭に来なければなりません。
めんどくさいと思う方もいらっしゃるでしょうが、統一されてて美しいという見方もできます。

以下、引き算、掛け算、わり算も似た様な調子です。


引き算、掛け算、わり算

めんどくさいので、一気にやります。
(import (rnrs) (ironscheme clr))

(clr-static-call System.Console WriteLine "(- 6 2) = {0}" (- 6 2))
(clr-static-call System.Console WriteLine "(* 6 2) = {0}" (* 6 2))
(clr-static-call System.Console WriteLine "(/ 6 2) = {0}" (/ 6 2))
(clr-static-call System.Console ReadLine)

この結果は、
(- 6 2) = 4
(* 6 2) = 12
(/ 6 2) = 3

です。


分数、商、余り

上では述べませんでしたが、/を使うと分数になります。

(import (rnrs) (ironscheme clr))

(clr-static-call System.Console WriteLine "(/ 7 2) = {0}" (/ 7 2))
(clr-static-call System.Console ReadLine)
この結果は
(/ 7 2) = 7/2

です。3.5や3ではないことに注意してください。

では3が欲しい時にはどうすればいいのでしょうか?
あるいは余りがほしい時には?

3を得るためには、quotientを使います。
余りはmoduloremainderを使います。
が、それぞれ働きが微妙に違います。
C#の%に相当するのはmoduloのようです。
remainderの結果の符号は割られる数の符号と同じになります。
これら3つのプロシージャをを使うためには(rnrs r5rs (6))をインポートする必要があります。

(import (rnrs r5rs (6)) (ironscheme clr))

(clr-static-call System.Console WriteLine "(quotient 7 2) = {0}" (quotient 7 2))
(clr-static-call System.Console WriteLine "(modulo 7 2) = {0}" (modulo 7 2))
(clr-static-call System.Console WriteLine "(modulo 7 -2) = {0}" (modulo 7 -2))
(clr-static-call System.Console WriteLine "(modulo -7 2) = {0}" (modulo -7 2))
(clr-static-call System.Console WriteLine "(modulo -7 -2) = {0}" (modulo -7 -2))
(clr-static-call System.Console WriteLine "(remainder 7 2) = {0}" (remainder 7 2))
(clr-static-call System.Console WriteLine "(remainder 7 -2) = {0}" (remainder 7 -2))
(clr-static-call System.Console WriteLine "(remainder -7 2) = {0}" (remainder -7 2))
(clr-static-call System.Console WriteLine "(remainder -7 -2) = {0}" (remainder -7 -2))
(clr-static-call System.Console ReadLine)

結果はこうなります:

(quotient 7 2) = 3
(modulo 7 2) = 1
(modulo 7 -2) = -1
(modulo -7 2) = 1
(modulo -7 -2) = -1
(remainder 7 2) = 1
(remainder 7 -2) = 1
(remainder -7 2) = -1
(remainder -7 -2) = -1













拍手[0回]

PR