D01 コマンドと関数
GeoGebraでは,「GeoGebra日本」の「GeoGebra実例」ー「D01 コマンドと関数」に書かれている通り,プログラミングは主眼ではありません。この点,プログラミング言語 Cindyscript が付随するCinderellaとは大きく異なります。
例として,同ページにある階乗をCinderellaではどのようにするか示しておきます。
階乗を求める演算子はGeoGebraにはありますが,Cinderellaにはありません。したがってCindyscriptでスクリプトを書きます。
GeoGebraのコマンドとCinderellaのコマンドの違い
GeoGebraにはたくさんの作図ツール(CASのツール)がありますが,そのツールを使うとき,背後ではコマンドが動いています。
たとえば,線分を描くときは Segment() というコマンドが動いています。
言い換えると,作図ツールでできることは,すべてコマンドでできます。
これに対して,Cinderellaではツールボタンの動作とコマンドは別物です。たとえば,Cindyscriptで線分を描いたとき,線分ツールで描いたものとは違うものができます。Cindyscriptで描いた線分はドラッグで動かすことはできません。
GeoGebraには約500ものコマンドがあります。Cindyscriptは約300です。おなじ働きをするコマンド(たとえば線分を描く)はそのうち半分(150)くらいでしょうか。(しっかり数えているわけではありません)
GeoGebraのコマンドの一覧とマニュアルをこのページの下からダウンロードできるようにしました。コマンド一覧はまだ空欄がいくつかありますが,筆者の数学知識では不明なものです。あしからず。(わかる人はご教授願います)マニュアルの翻訳もまだ3分の1程度です。
Cinderellaでのコマンド
(1) リスト処理による
fact(n):=product(1..n);
1..n で1からnまでの整数を要素とするリストを作成します。product(list) はlistの要素の積を求めます。
結果は,println() 関数でコンソール(スクリプトエディタの右下の領域)に表示できます。
その場でちょっと使うだけなら,関数を定義せず、直接
println(product(1..10));
としてもいいわけです。
(2) 再帰的プログラムを使う。
fac(n):=if(n==0,1,n*fac(n-1));
で定義できます。
基本的に,Cinderellaでは,作図ツールやメニューに用意されていないことを行おうとしたらCindyscriptでほとんど何でもできると考えてよいでしょう。「ほとんど」というのは,Cindyscriptはインタプリタなので,そのための限界(処理が遅い)や,メモリへの直接アクセスはできないなどの制限があるという意味です。