# 演算子一覧表

## 挿入演算子

挿入演算子は優先順位順に並んでいます。優先順位は数で表され、小さな数のものが優先順位は高くなっています。優先順位が同じであれば、左から右へ演算が行われます。
`:` (20) 自身の定義にアクセスする
`.` (25) あらかじめ定義されたデータフィールドにアクセスする
`°` (25) 度数法を弧度法に変換する
`_` (50) リスト内の要素にアクセスする
`^` (50) べき乗
`*` (100) 乗法 (ベクトル、行列も含む)
`/` (100) 除法(ベクトル、行列をスカラーで割る場合も含む)
`+` (200) 加法 (ベクトル、行列も含む)
`-` (200) 減法 (ベクトル、行列も含む)
`!` (200) 論理否定
`==` (300) 相等
`>` (300) より大きい
`<` (300) より小さい
`>=` (300) 以上
`<=` (300) 以下
`!=` (300) 等しくない
`~=` (300) ほぼ等しい
`~<` (300) ほぼ小さい
`~>` (300) ほぼ大きい
`~>=` (300) ほぼ以上である
`~<=` (300) ほぼ以下である
`=:=` (300) equals after evaluation
`&` (350) 論理積
`%` (350) 論理和
`!=` (350) 等しくない
`~!=` (350) ほぼ等しくない
`..` (350) aからbまでの範囲の数のリスト
`++` (370) リストの連結
`--` (370) リストの差
`~~` (370) ２つのリストの共通要素
`:>` (370) リストの後方に要素を追加する
`<:` (370) リストの前方に要素を追加する
`=` (400) 変数への代入
`:=` (400) 関数の定義
`:=_` (400) 定義の消去
`->` (400) 修飾子の宣言
`,` (500) リストと関数の区切り
`;` (500) 命令文の区切り

### 定義済み関数

定義済み関数と、その引数の数が書かれています。関数はいくつかのカテゴリーに分類されています。複数のカテゴリーに含まれている関数もあります。リンクのないものはまだドキュメントがありません。

#### 制御

`if` (2) もし〜ならば〜
`if` (3) もし〜ならば〜、そうでなければ〜
`trigger` (2) 条件を満たせば実行
`while` (2) While 繰り返し
`repeat` (2) # を実行変数として繰り返し
`repeat` (3) 実行変数を指定して繰り返し
`forall` (2) # を実行変数としてすべての要素に対して繰り返し
`forall` (3) 実行変数を指定してforall繰り返し
`eval` (1) 式の強制的な評価

#### 変数の管理

`clear` (0) すべての変数をクリア
`clear` (1) 特定の変数をクリアする
`keys` (1) オブジェクトまたは変数に関連したローカルキーのリストを返す
`createvar` (1) 局所変数の作成
`removevar` (1) 局所変数の削除
`regional` 局所変数を作る。引数の数は任意
`local` いくつかの局所変数を作る
`release` いくつかの局所変数の削除

#### 出力

`print` (1) 値を印字する
`println` (0) 改行
`println` (1) 印字して改行する
`clearconsole` (0) コンソールをクリア
`err` (1) デバッグ用の印字
`assert` (2) エラーチェックの印字
`format` (2) 数を整形する
`message` (1) ステータス行にメッセージを表示する

#### 算術関数

`sqrt` (1) 平方根
`exp` (1) 指数関数
`log` (1) 自然対数
`sin` (1) 正弦
`cos` (1) 余弦
`tan` (1) 正接
`arcsin` (1) 正弦の逆関数
`arccos` (1) 余弦の逆関数
`arctan` (1) 正接の逆関数
`arctan2` (2) ベクトル (x,y) のなす角
`add` (2) 和
`sub` (2) 差
`mult` (2) 積
`div` (2) 商
`mod` (2) 剰余
`pow` (2) べき乗
`abs` (1) 絶対値
`round` (1) 四捨五入
`floor` (1) その数以下の最大の整数
`ceil` (1) その数以上の最小の整数
`re` (1) 複素数の実部
`im` (1) 複素数の虚部
`conjugate` (1) 共役複素数
`random` (1) 0 から 1 までの一様乱数
`randominteger` (1) 整数の一様乱数
`random` (0) 0から1までの実数の一様乱数
`randombool` (0) ブール値の乱数 true または false
`randomnormal` (0) (0,1)正規乱数
`seedrandom` (1) 乱数の種(seed)の設定

#### ブール関数

`not` (1) 論理否定
`and` (2) 論理積
`or` (2) 論理和
`xor` (2) 排他的論理和

#### 型の判定

`isinteger` (1) 整数か
`isreal` (1) 実数か
`iscomplex` (1) 複素数か
`iseven` (1) 偶数か
`isodd` (1) 奇数か
`islist` (1) リストか
`ismatrix` (1) 行列か
`isnumbervector` (1) 数ベクトルか
`isnumbermatrix` (1) 数行列か
`isstring` (1) 文字列か
`isgeometric` (1) 幾何学要素か
`isselected` (1) 選択されているか
`ispoint` (1) 幾何の点か
`isline` (1) 直線か
`iscircle` (1) 円か
`isconic` (1) 円錐曲線か
`ismass` (1) 質点か
`issun` (1) 恒星か
`isspring` バネか
`isundefined` (1) 未定義要素か

#### 文字関数

`text` (1) 文字列への変換
`parse` (1) CindyScript の式として文字列を解析
`substring` (3) 文字列の抜きだし
`replace` (3) 文字列の置換
`replace` (2) 文字列の置換
`tokenize` (2) 文字列の分解
`indexof` (2) 文字列の検索
`indexof` (3) 文字列の検索
`length` (1) 文字列の長さ
`format` (2) 数を整形する
`guess` (1) 文字列の解析
`sort` リストの並べ替え
`fontfamilies` (0) 使用可能なフォントのリストを得る
`unicode` (1), (2) ユニコードを文字列に変換する
`candisplay` (1) 文字列が現在のシステムフォントで表示できるかどうかテストする

#### 微積分

`d` (2) 関数の微分
`tangent`(2) 接線を計算する
`guess` (1) 浮動小数点数から記号的意味を推測する
`pslq` (1) `guess` guess と同じ
`roots` (1) ｎ次方程式の解を与える

#### 基本的なリスト処理

`take` (2) リストの要素へのアクセス
`length` (1) リストの長さ
`contains` (2) 内容のテスト
`append` (2)　要素の後方追加
`prepend` (2) 要素の前方追加
`concat` (2) リストの連結
`common` (2) リストの共通部分
`remove` (2) リストからの要素の削除
`nil` (0) 空リスト

#### リストの要素の走査

`forall` (2) # を実行変数として全要素を走査する
`forall` (3) 実行変数を指定して全要素を走査する
`apply` (2) # を実行変数として全要素に式を適用する
`apply` (3) 実行変数を指定して全要素に式を適用する
`select` (2) # を実行変数として条件を満たす要素を選び出す
`select` (3) 実行変数を指定して条件を満たす要素を選び出す)

#### 高度なリスト処理

`pairs` (1) リストの要素のすべてのペアを作る
`triples` (1) リストの要素のすべての3つの組を作る
`directproduct` (2) 2つのリストの直積
`consecutive` (1) リストの連続する要素のペアからなるチェーンを作る
`cycle` (1) 連続する２つずつの要素のペアで輪を作る
`reverse` (1) リストの要素を逆順にする
`set` (1) リストの要素を単一化した集合を作る
`sort` (1) リストの要素を並べ替える
`sort` (2) リストの各要素を評価式によって並べ替える
`flatten` (1) ネストされたリストの平坦化

#### 幾何学要素のリスト

`allelements` (0) すべての要素のリストを作る
`allpoints` (0) すべての点のリストを作る
`alllines` (0) すべての直線のリストを作る
`allsegments` (0) すべての線分のリストを作る
`allcircles` (0) すべての円のリストを作る
`allconics` (0) すべての円錐曲線のリストを作る
`allmasses` (0) すべての質点のリストを作る
`allsprings` (0) すべてのバネのリストを作る

#### リストの算術演算

`sum` (1) 要素の総和を求める
`sum` (2) 実行変数を # として各要素に式を実行した結果の総和を求める
`sum` (3) 実行変数を指定して各要素に式を実行した結果の総和を求める
`product` (1) 要素をすべて掛け合わせる
`product` (2) 実行変数を # として各要素に式を適用し、結果をすべて掛け合わせる
`product` (3) 実行変数を指定して各要素に式を適用し、結果をすべて掛け合わせる
`min` (1) 要素の最小値を求める
`min` (2) 実行変数を # として各要素に式を適用し、その最小値を求める
`min` (3) 実行変数を指定して各要素に式を適用し、その最小値を求める
`max` (1) 要素の最大値を求める
`max` (2) 実行変数を # として各要素に式を適用し、その最大値を求める
`max` (3) 実行変数を指定して各要素に式を適用し、その最大値を求める

#### ベクトルと行列の操作

`zerovector` (1) 零ベクトルを生成する
`zeromatrix` (2) 零行列を作る
`rowmatrix` (1) 行ベクトルから行列への変換
`columnmatrix` (1) 列ベクトルから行列への変換
`matrixrowcolumn` (1) 行と列の数を2つの数の要素からなるリストとして返す
`row` (2) 行をベクトルとして返す
`column` (2) 列をベクトルとして返す
`submatrix` (2) 小行列を作る
`transpose` (1) 転置行列を返す
`dist` (2) ベクトルの距離を返す
`det` (1) 正方行列の行列式を返す
`hermiteanproduct` ２つのベクトルのエルミート内積を返す
`inverse` (1) 正方行列の逆行列を返す
`adj` (1) 正方行列の余因子行列を返す
`eigenvalues` (1) 正方行列の固有値を返す
`eigenvectors` (1) 正方行列の固有ベクトルを返す
`linearsolve` (2) 一次方程式の解を返す
`convexhull3d` (1) ３次元の凸多面体を作る。

#### 描画関数

`repaint` (0) 面を塗り直す
`draw` (1) 点を描く
`draw` (2) 線分を描く
`drawpoly` (1) 多角形を描く
`drawpolygon` (1) `drawpoly`と同じ
`fillpoly` (1) 中を塗った多角形を描く
`fillpolygon` (1) `fillpoly`と同じ
`drawcircle` (2) 中心と半径を与えて円を描く
`fillcircle` (2) 中を塗った円を描く
`drawall` (1) リストのすべての要素を描画する
`connect` (1) リストの点をつなぐ
`drawtext` (2) 文字列を表示する
`drawtable` (2) 表を描く
`repaint` (0) 画面の再描画
`repaint` (1) 画面の再描画

#### 描画の外観を設定する

`pointsize` (1) 点の大きさ
`linesize` (1) 線の太さ
`textsize` (1) 文字の大きさ
`pointcolor` (1) 点の色
`linecolor` (1) 線の色
`textcolor` (1) 文字の色
`color` (1) すべての色
`alpha` (1) すべての不透明度のアルファ値
`gsave` (0) 色、アルファ値、幅、変換をスタックに入れる
`grestore` (0) 色、アルファ値、幅、変換をスタックから出す
`greset` (0) 色、アルファ値、幅、変換のスタックを空にする

#### 色の関数

`red` (1) 赤のRGBベクトルを返す
`green` (1) 緑のRGBベクトルを返す
`blue` (1) 青のRGBベクトルを返す
`grey` (1) 灰色のRGBベクトルを返す
`gray` (1) grey と同じ
`hue` (1) 色相のRGBベクトルを返す

#### 関数プロット

`plot` (1) 実行変数を # として関数をプロットする
`plot` (2) 実行変数を指定して関数をプロットする
`fillplot` (1) 積分のようにハイライトさせてプロットする
`fillplot` (2) ２つの関数の差をハイライトさせてプロットする
`colorplot` (3) 関数の値によって色をプロットする
`drawfield` (1) ベクトル場を描画する
`drawfieldcomplex` (1) 複素ベクトル場を描画する
`drawforces` (1) 力の場を表示する
`drawcurves` (2) 物理のオシログラフを描く

#### 画像の操作

`drawimage` (2) 1点を指定して画像を表示する
`drawimage` (3) ２点を指定して画像を表示する
`drawimage` (4) ３点を指定して画像を表示する
`drawimage` (5) ４点を指定して画像を表示する
`mapimage` (2) 画像を変形する
`imagesize` (1) 画像の大きさを取得する
`imagergb` (3) 画素の色情報を取得する
`createimage` (3) カスタム画像を作る
`clearimage` (1) 画像の内容を消去する
`removeimage` (1) 画像を削除する
`canvas` (3) 参照点を１つ指定してキャンバスに描く
`canvas` (4) 参照点を２つ指定してキャンバスに描く
`canvas` (5) 参照点を３つ指定してキャンバスに描く

#### シェイプ

`circle` (2) 円形のシェイプを作る
`polygon` (1) 多角形シェイプを作る
`halfplane` (2) 半平面シェイプを作る
`screen` () スクリーンのシェイプを作る
`fill` (1) シェイプを塗りつぶす
`draw` (1) シェイプの輪郭線を描く
`clip` (1) シェイプのクリップパスの設定

#### 幾何変換

`translate` (1) 座標系全体を平行移動
`rotate` (1) 座標系全体を回転
`scale` (1) 座標系全体を拡大・縮小
`setbasis` (1) 座標系全体の基底を変換
`setbasis` (2) 座標系全体の基底を相似変換にする
`setbasis` (3) 座標系全体の基底をアフィン変換にする
`setbasis` (4) 座標系全体の基底を射影変換にする

#### 幾何関数

`moveto` (2) 点の位置を変える
`meet` (2) 直線の交点を求める
`join` (2) ２点を結ぶ
`perp` (1) 垂直な２次元ベクトルを返す
`perp` (2) 点を通り直線に垂直な直線を求める
`perpendicular` (2) 点を通り直線に垂直な直線を求める
`para` (2) 点を通り直線に平行な直線を求める
`parallel` (2) 点を通り直線に平行な直線を求める
`cross` (2) ２つの３次元ベクトルの外積を返す
`dist` (2) ２点間の距離を返す
`area` (3) ３点で与えられた三角形の面積を返す
`det` (3) 3 × 3 行列の行列式を計算する
`crossratio` (4) ４点の複比を計算する
`complex` (1) xy座標を複素数に変換する
`gauss` (1) 複素数を点の座標に変換する
`point` (1) 数ベクトルを点として位置づける
`line` (1) 数ベクトルを直線として位置づける
`geotype` (1) ベクトルの幾何学的意味を返す
`map` (2) 平行移動を表す行列を返す
`map` (4) 相似変換を表す行列を返す
`map` (6) アフィン変換を表す行列を返す
`map` (8) 射影変換を表す行列を返す
`pointreflect` (1) 点に関する対称点を求める行列を返す
`linereflect` (1) 直線に関して対称な点をを求める行列を返す
`incidences` (1) 幾何要素にインシデントである要素のリストを返す
`locusdata` (1) 軌跡上の点の座標のリストを返す

#### インスペクタ

`inspect` (1) 利用できる属性のリストを作る
`inspect` (2) 属性を読み出す
`inspect` (3) 属性を設定する

#### 要素の作成と消去

`createpoint` (2) 位置とラベルを指定して点を加える ( 2.1版から)
`create` (3) create a an arbitrary geometric element
`removeelement` (1)幾何の要素をそれに従属する点とともに消去する ( 2.1版から)
`algorithm` (1) 幾何要素の作図手順を得る
`inputs` (1) 幾何要素を定義するために必要な要素のリストを得る
`element` (1) 引数の名前の幾何要素へのハンドルを得る

#### MIDI

`playtone` (1) MIDIの単音を鳴らす
`stoptone` (1) 音を止める
`playfrequency` (1) 特定の周波数で鳴らす
`playmelody` (1) メロディを鳴らす
`midiaddtrack` (1) シーケンサにトラックを追加する
`midistart` (0) シーケンサの開始
`midistop` (0) シーケンサの停止
`midispeed` (1) シーケンサの速度設定
`midispeed` (0) シーケンサの速度を問い合わせる
`midiposition` (1) シーケンサの位置を設定する
`midiposition` (0) シーケンサの開始位置を得る
`instrument` (1) 楽器を選ぶ
``instrumentnames` (0) 利用できる楽器のリストを得る`
`midichannel` (1) チャンネルを設定する
`midivolume` (1) チャンネルの音量を設定する
`midicontrol` (2) チャンネルのコントローラを設定する

#### サンプルーオーディオ

`playsin` (1) 特定の周波数の音を鳴らす
`playfunction` (1) 数式で定義した音を鳴らす
`playwave` (1) オーディオデータのリストを再生する
`stopsound` (0) すべての音の再生を停止する

#### マウスとキーボードからの入力

`mover` (0), 最後に動かされた点を返す
`mouse` (0) マウスボタンが押されたときのマウスの位置を返す
`elementsatmouse` (0) マウスカーソルの近くにある要素のリストを返す
`key` (0) キーボードで打たれた文字列を返す
`iskeydown` (1) あるキーが押されたかどうか問い合わせる
`keydownlist` (0) 押されたキーのリストを返す
`amsdata` (0) 重力センサからデータを得る
`calibratedamsdata` (0) 調整されたAMSデータを取得する

#### 時間

`resetclock` (0) 内部時計のリセット
`seconds` (0) リセット後の経過時間
`simulationtime` (0) シミュレーションの進行に同期した実行用時計のハンドルを返す
`time` (0) 現在の時刻
`date` (0) 現在の日付
`wait` (1) ミリ秒単位で指定された時間、実行を止めて待つ

#### ファイル入出力

`setdirectory` (1) ファイルのディレクトリを設定する
`load` (1) データの読み込み
`import` (1) プログラムコードの読み込み
`openfile` (1) ファイルを開いてハンドルを返す
`closefile` (1) ファイルを閉じる
`print` (2) ファイルに書き出す。改行なし。
`println` (2) ファイルに書き出す。改行あり。

#### ネットワーク

`openurl` (1) Webページをブラウザで開く

#### 物理シミュレーション

`simulation` (0) シミュレーションへのハンドル提供
`force` (1) 力の探索粒子を設定する
`addforce` (2) 力を存在する質点に適用する
`setforce` (2) 力を存在する質点に設定する

#### アニメーション

`playanimation` (0) アニメーションを開始する
`pauseanimation` (0) アニメーションをいったん停止する
`stopanimation` (0) アニメーションを終わる

#### 特別な演算子(実験段階のため説明なし)

次の演算子は、自己責任で使ってください
`freevariables` (1)
`java` (1)
`curview` (0)
`curkernel` (0)
`curgraphalgorithm` (0)
`attribute` (2) 属性を読む
`attribute` (3) ユーザー属性を設定する
`inspectinfo` (2) 属性情報
`createmass` (3) 名前と位置、速度を持った質点を作る（現在未サポート）

Page last modified on Monday 04 of March, 2013 [22:03:15 UTC].
The original document is available at http://doc.cinderella.de/tiki-index.php?page=Operator%20IndexJ