==================================================発行部数767======
     AutoCADカスタマイズ入門講座              No.5 1999/05/01
===================================================================
  AutoCADカスタマイズ入門講座第5号をお送りします。
ゴールデンウィークに入りましたが、皆さんはどのようにお過ごしですか?
。私は会社に行かなくても相変わらず、コンピュータの前に座っています。
もっとも、会社や学校でメールを読まれている方はもう既にGWは終わってい
ますネ。もし、まだ終わってないとしたら...m(__)m 。

--------------------------------------------------------------------
 1.条件関数
--------------------------------------------------------------------
 条件関数とは、その名の通り条件を判断する関数です。プログラムを作っ
ていると条件を判断したいという場面には良く遭遇します。

例えば変数a、bとが存在する場合、
 
 ・aとbは等しいか?
 ・aとbはどちらが大きい?、または小さい?

などを判断しなければならない事は良くあります。また、前回の号で紹介し
たサンプルプログラムの様に、ある処理を10回行いたい時など、どのように
処理を10回繰り返した事を判断すれば良いのでしょうか?。
この様な時に、条件関数を使用します。

(1)等値関数
 まずは、数値の大小などを比較する等値関数を説明します。これらの関数
は条件が成り立つ場合はT(真を意味します)を、成り立たない場合にはnil
(偽を意味します)を返します。

(1.1) (= a b c ....)関数
 例えば引数がすべて等しいかどうかを判断する関数(= a b c ...)があり
ます。この関数を実際にコマンドラインから試してみましょう。
 (= 5 5) と入力してみましょう。、当然2つの引数は等しいので、この
関数はTを返します。また、 
 (= 4 8) と入力すると2つの引数は等しくないので、この関数はnilを返
します。また、(= ...)関数を含め、この後に紹介する全ての等値関数は2
つ以上の引数を受け付けます。例えば、
 (= 2 2 2 2)は結果としてTを返し、(= 2 2 5 2)は結果としてnilを返しま
す。

(1.2) (/= a b c)関数
 (/= a b c ...)関数は、隣り合う引数がすべて等しくない場合はT、それ
以外の場合はnilを返します。例えば、(/= 5 2 6 2)はTを返しますが、
(/= 5 2 2 6)はnilを返します。(= a b c ..)関数と全く逆の条件となって
います。

(1.3) (< a b c ...)関数
 (< a b c ...)関数は右隣の引数が全て左隣の引数より大きい場合Tを返し
ます。要するに a<b<c<... ならばTを返します。例えば、
 (< 2 5 8)はTを返しますが、(< 2 8 5)はnilを返します。

(1.4) (<= a b c ...)関数
 (<= a b c ...)関数は右隣の引数が全て左隣の引数より大きいかまたは等
しい場合Tを返します。例えば、
(<= 2 5 5)はTを返しますが、(<= 2 5 2)はnilを返します。また、
(<= 4 4 4)もTを返します。

(1.5) (> a b c ..)関数
 (> a b c ...)関数は(< a b c ...)関数と条件が逆になります。

(1.6) (>= a b c ...)関数
 (>= a b c ...)関数は(>= a b c ...)関数と条件が逆になります。

(2)条件関数
(2.1) (if (条件式) (式1) (式2))
 上記の関数は、条件式が成り立つ時には式1を実行し、成り立たない場合
は式2を実行します。式2は省略可能です。つまり式2を省略するとある条件
が満たされた場合のみある処理を行う事が可能です。条件式には主に(1)で
説明した等値関数を使用します。
例えば、以下のプログラムをコマンドラインから入力してください。

(defun C:test1()
(if (= a b)
(princ "a = b")
(princ "a /= b")
)
(princ)
)

注)(princ "...")関数は"..."をコマンドライン上へ表示する関数です。
上記のプログラムを入力し終わったら変数a,bに値を割り当てます。

(setq a 2)
(setq b 3)

test1を実行してみてください。
a /= b と表示されたはずです。つまり、(princ "a /= b")が実行されまし
た。また、変数a,bに等しい数を適当に割り当ててみてください。もう一度
test1を実行すると今度は、a = b と表示されるはずです。つまり、条件式
が真の場合には(princ "a = b")を実行し、偽の場合には(princ "a /= b")
を実行します。他の条件式でも試してみてください。さて、上記サンプルで
実行した式は(princ...)という一行の式のみです。ある条件が成り立った時
に一行の式しか実行出来ないのでは複雑な処理を行う事は不可能です。ある
条件が成り立つ時に複数の式を実行したい時には(progn ...)関数を使用し
ます。

(defun C:Test2()
  (if (a = b)
    '条件が真の場合、以下の(progn...)内の式を実行します。
    (progn
      (式1)
   (式2)
    ・
    ・
    )
    '条件が偽の場合、以下の(prong...)内の式を実行します。
    (progn
      (式1)
   (式2)
    ・
    ・
  )
  )
)

上記のサンプルの様に、条件式が真の場合は上の(progn...)内の複数の式を
、偽の場合には下の(progn...)内の複数の式を実行します。偽の場合の
(progn...)は省略可能です。

(2.2) (while (条件式) (式1) (式2) ... )
 上記の関数は条件式が真の間、(式1) (式2) ... を繰り返し実行します。
以下のサンプルをコマンドラインから入力して実行してください。

(defun C:test3()
(setq i 0) 
(while (< i 10)
  (princ i)
  (setq i (+ i 1))
)
(princ)
)

0123456789
と表示されるはずです。このサンプルは最初に変数iを0に設定します。
その後、(< i 10)でiが10よりも小さいかどうかを評価します。小さいなら
ばそれ以降の式を実行し、iに1を足した後、再度iが10よりも小さいかどう
かを評価します。これら一連の作業をiが10になるまで(つまり(< i 10)が偽
となるまで続けます。

等値関数、条件関数は他にもいくつかの関数がありますが、とりあえずは上
記の関数を理解して頂ければ十分でしょう。他の関数についてはサンプル内
などで取り上げるつもりです。

--------------------------------------------------------------------
 2.まとめ
--------------------------------------------------------------------
 今回私たちは以下の事を学びました。
 ・等値関数
 ・条件関数

 今回もご購読ありがとうございました。さて、今回の号で5号となりまし
たが、少しは皆様のお役にたっているでしょうか?。この講座を始めるまで
は、自分ではもう少し上手に説明できるのではないかと考えていたのですが
...、なかなかうまく書く事が出来ません。皆さんに読んで頂いて本当に
役に立つ事が書けているのか不安です。そういう訳で、皆さんのご意見、ご
感想、ご質問等を大募集します。簡単な内容でかまわないのでメールを頂け
れば幸いです(もちろん、頂いたメールのアドレスなどを他人に公開する事
は決してありません)。よろしくお願いします。

次回は今まで説明してきた事のまとめと補足を行いたいと思っています。ま
た、質問が多く集まればそれらを紹介したいと思います。

それでは!!。

====================================================================
●バックナンバーは下記のURLで参照する事が出来ます。
http://www2u.biglobe.ne.jp/~Saturn5/alisp.htm
また、『まぐまぐ』さんでもバックナンバーを見る事が出来るようになりま
した(パチパチ!!)。詳しくは『まぐまぐ』さんのWebをご覧ください。URLは
http://www.mag2.com/   
です。
====================================================================
■登録/解除の方法
http://www2u.biglobe.ne.jp/~Saturn5/alisp.htm
「AutoCADカスタマイズ入門講座」は、上記URLよりいつでも
登録/解除可能です。
====================================================================
●広告の問い合わせ
広告のお問い合わせは以下のメールアドレスへお願いします。
wankichi@mba.nifty.ne.jp
ただし、CAD関連に限ります。
====================================================================
■「AutoCADカスタマイズ入門講座」No.5
発行責任者 :わんきち(wankichi@mba.nifty.ne.jp)
発行システム:インターネットの本屋さん『まぐまぐ』
              http://www.mag2.com/
              マガジンID:0000011579
====================================================================
戻る