Powered by SmartDoc

xlisp

xlispは、Lispの処理系の一つで、Freeware (今風に言えば、Open Softwareですね.. )です。

xlisp の起動

xlispの起動は、xlwin32をクリックするだけです。そうすると、新しいwindowが開かれます。

そして、

xlisp の起動メッセージ
XLISP-PLUS version 3.04
Portions Copyright (c) 1988, by David Betz.
Modified by Thomas Almy and others.
>

というメッセージが出ます。

以下、xlispとのやり取りは、このwindow内で行われます。

xlisp の終了

xlispを終了する場合は、windowの中で、

(exit)[Enter]

と入力します。

つまり、'(' [左括弧], 'exit'という英単語,そして')' [右括弧]の順に、キーボードから入力し、最後に、改行キー( [Enter]キー)を押すと、windowが消えます。

(exit) を入力し、[Enter] キーを直前
XLISP-PLUS version 3.04
Portions Copyright (c) 1988, by David Betz.
Modified by Thomas Almy and others.
> (exit)

xlisp を少し利用してみよう

まず、xlispで、12 + 34の計算をすることを考えます。このとき、キーボードから

(+ 12 34)

と入力してみてください。もちろん、最後に、改行を押します。すると、46という結果が表示されると思います。これは、確かに、12 + 34の計算結果になると思います。

12 + 34 の計算
> (+ 12 34)
46
> 

ここで、注意して欲しいのは、'+'と'12'と'34'の間には、空白が必要で、逆に、'1'と'2', '3'と'4'の間には、空白を入れてはいけないということです。

[演習1.1.1]
xlispを使って、123 + 567の計算をしてみなさい。
[演習1.1.2]
xlispを使って、123 * 567(1), 567 - 123, 567 / 123(2)(3), 567 mod 123(4)をそれぞれ計算しなさい。
[演習1.1.3]
xlispを使って、1.23 * 5.67, 5.67 - 1.23, 5.67 / 1.23(5)をそれぞれ計算しなさい。
  1. 「*」は、掛け算の意味です。「×」の記号は、使えません。
  2. 「/」は、割り算の意味です。「÷」の記号は、使えません。
  3. 整数同士の割り算を実行し、割り切れない場合、xlispは、この結果を「分数」として扱います。結果が整数になるのは、割り切れる場合だけです。

    なお、普通の意味での整数割り算に関しては、後で述べます。

  4. modは、整数割り算の時の余りを意味します。
  5. 実数(小数点を含むような数)の割り算は、普通に実行されます。なお、その結果が、無限小数( 1/3 = 0.3333 ..,π= 3.1415 ... )になる場合は適当な長さで切り捨てられ、有限の長さの小数として扱われます。

    つまり、この計算の結果には、「(まるめ)誤差」が含まれています。

    計算機を扱う上で、このような「計算誤差が生じる」ということを意識するのは大変重要なことです。

複雑な計算

今度は、12 + 34 * 56の計算を行います。これを行うには、次のように入力します。

(+ 12 (* 34 56))

すると1916という答えが出てくると思います。

12 + 34 * 56 の計算
> (+ 12 (* 34 56))
1916
>
[演習1.1.4]
123 + 567 * 89の計算をしてみなさい。
[演習1.1.5]
123 * 45 + 678の計算をしなさい。
[演習1.1.6]
( 123 + 567 ) * 89の計算をしなさい。
[演習1.1.7]
( 12 + 34 ) / ( 56 - 78 )の計算をしなさい。
[演習1.1.8]
( 3 - 5 * 6 ) / ( 1 + 2 )の計算をしなさい。

整数割り算(商)

xlispでの割り算を計算するには"/"を使います。しかし、割り切れない場合には、答えが分数になってしまいます。

もし、普通の割り算を行おうとするならば、次のような性質を利用します。

「割られる数から、割られる数から割る数を割った場合の余りを引くと、その数は、割られる数で割り切ることができる。」

言葉で書くと分かりにくいのですが、次のような形にすれば、123を45で割った時の商の計算が可能です。

(/ (- 123 (mod 123 45)) 45)
123 ÷ 45 の計算(商)
> (/ (- 123 (mod 123 45)) 45)
33
>