ref_basic
差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン | ||
ref_basic [2018/01/04 09:40] – 作成 kanemune | ref_basic [2018/05/01 21:33] (現在) – kanemune | ||
---|---|---|---|
行 1: | 行 1: | ||
+ | # 基本的なオブジェクト | ||
+ | |||
+ | ## 数値 | ||
+ | * 数値を表すオブジェクトです。 | ||
+ | * 代入式の右辺や、括弧で囲まれた部分に数式を**中置記法**で記述できます。 | ||
+ | * 数式で扱えるデータは、数値と、数値に変換できる値を持つ文字列です。 | ||
+ | * 2進(0b)と16進(0x)で0b1100、0xFFのように定数を記述できます。 | ||
+ | * 角度は1周を360度とする角度で表します。 | ||
+ | * 計算はJavaの倍精度実数(double)で行われます。ただし、一部の関数演算は単精度実数(float)で行われることがあります。 | ||
+ | * 定数として、**円周率**を表す**π**、**PI**が用意されています。 | ||
+ | * 数値演算子「+, | ||
+ | |||
+ | * **+** , **-** , *****, **×**, **/**, **÷** : 四則演算。 | ||
+ | * (例)「3 * 40」を計算し「120」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **足す**(**add**), | ||
+ | * (例)「3 * 40」を計算し「120」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **%**: 余り | ||
+ | * (例)8を3で割った余りを計算し「2」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **余り**(**mod**) : 余り。命令として使います。 | ||
+ | * (例)8を3で割った余りを計算し「2」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **==** , **!=** , **≠**, **>** , **>=** , **≧**, **<** , **<=**, **≦** : 比較演算。両辺が数値または数値に変換できる文字列の場合は、数値として比較されます。 | ||
+ | * (例)「4 > 3」を計算し「[true]」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **sqrt**: ルート(√) | ||
+ | * (例)「1 + √4」を計算し「3」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **sin** , **cos** , **tan**: 三角関数。 | ||
+ | * (例)「sin(30)」を計算し「0.5」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **asin** , **acos** , **atan** , **atan2**: 三角関数の逆関数。 | ||
+ | * (例)「arcsin(0.5)」を計算し「30」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | atan2は、X座標の値にY座標の値をパラメータとして実行します。atanは-90〜90の値を返しますが、atan2は-180〜180の値を返します。 | ||
+ | * (例)「(-10, | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **round** , **ceil** , **floor**: 丸め、切り上げ、切り捨て。 | ||
+ | * (例)「0.7」を四捨五入し「1」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **exp**: 指数関数。 | ||
+ | * (例)「e^{0.5」を計算し「1.6487212」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **log**: 底が10の対数。 | ||
+ | * (例)「log 100」を計算し「2」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **ln**: 底がeの対数。 | ||
+ | * (例)「ln 100」を計算し「4.6051702」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **pow**: べき乗。「2の3乗」は「pow(2, | ||
+ | * (例)「2^3」を計算し「8」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **abs**: 絶対値。 | ||
+ | * (例)「|-3|」を計算し「3」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **乱数**, **random** : 正の整数を与えると、実行するたびに値が異なる1〜nの整数を返します。 | ||
+ | * (例)1から10までの整数をランダムに表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | 0か負の数を与えた場合には、実行するたびに値が異なる0〜1の実数を返します。 | ||
+ | * (例)0から1までの実数をランダムに表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **乱数初期化** : 0以外の整数を与えると、それ以降に生成される乱数が毎回同じ順序で生成されるようになります。0を与えると、そのときどきのランダムな順序に戻ります。 | ||
+ | * (例)整数「5」に対応した乱数系列を表示します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **コード文字**: | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * 以下はJava版のみ | ||
+ | * **進数**: n進数に変換します。nは2〜16の整数です。 | ||
+ | * (例)「10」の2進表現である「1010」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **大きい整数にする**: | ||
+ | * (例)値が2の多倍長整数オブジェクトを作り、「2^70」を計算します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## 文字列 | ||
+ | * 文字の並びを扱うオブジェクトです。 | ||
+ | * 数値を表す文字列(例:" | ||
+ | * 任意の文字は数値の「**コード文字**」命令を使って文字コードから文字を生成できるほか、文字列を囲む「" | ||
+ | * " : **dq**, **ダブルクオート**, | ||
+ | * “ : **ldq**, **左ダブルクオート**, | ||
+ | * ” : **rdq**, **右ダブルクオート**, | ||
+ | * 『 : **ldb**, **左二重かぎ括弧** | ||
+ | * 』 : **rdb**, **右二重かぎ括弧** | ||
+ | * 「含む?」「分割」「置き換える」「全部置き換える」では、正規表現で文字列のパターンを指定できます。使用できる主な表現を示します。((正規表現の詳細は、市販の書籍やWebサイトの解説などを参照してください。マッチした文字列の参照はサポートしていません。)) | ||
+ | * . : 任意の1文字。 | ||
+ | * ? : 直前の文字の0回か1回の繰り返し。 | ||
+ | * * : 直前の文字の0回以上の繰り返し。 | ||
+ | * + : 直前の文字の1回以上の繰り返し。 | ||
+ | * \^ : 先頭。 | ||
+ | * $ : 末尾。 | ||
+ | * | : 左右のパタンのいずれか(OR)。 | ||
+ | * ( ) : 範囲指定。 | ||
+ | * [ ] : 列挙された文字のいずれか。「-」は文字範囲。先頭の「^」は続く文字を含まないという指定。 | ||
+ | |||
+ | * **==** , **!=** , **≠**, **>** , **>=** , **≧**, **<** , **<=**, **≦** : 比較演算。両辺が数値または数値に変換できる文字列の場合は、数値として比較されます。それ以外は文字列として比較されます。 | ||
+ | * (例)「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **+** : 文字列を連結します。 | ||
+ | * (例)2つの文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **連結**: 文字列を連結します。複数の文字列を連結できます。 | ||
+ | * (例)3つの文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **長さ?** : 文字数を返します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **何文字目?**: | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **含む?** : 文字列を含むかを判定します。真偽値が返ります。文字列には正規表現を使えます。 | ||
+ | * (例)フィールドに文字列を入力して を押すと、文字列に「山」という文字が含まれる場合はフィールドに「はい」が表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **置き換える** : 文字列の一部を置き換えた文字列を返します。元の文字列は変更されません。置き換えは1回だけ行われます。置き換える文字列の指定には正規表現を使えます。 | ||
+ | * (例)「はい」を「いいえ」に置き換えて表示します。「はい、はい」が「いいえ、はい」と表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **全部置き換える** : 文字列の一部を置き換えた文字列を返します。元の文字列は変更されません。置き換えは複数回行われます。置き換える文字列の指定には正規表現を使えます。 | ||
+ | * (例)「はい」を「いいえ」に置き換えて表示します。「はい、はい」が「いいえ、いいえ」と表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * 以下はJava版のみ | ||
+ | * **部分**: 文字列を切り出します。「m n 部分」でm文字目からn文字を取り出します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **分割**: 区切り文字列を指定すると、分割した文字列が入った配列を返します。区切り文字列には正規表現を使えます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **文字コード**: | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **実行**: 文字列をドリトルのプログラムとみなして実行します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | " | ||
+ | </ | ||
+ | * **大きい整数にする**: | ||
+ | * (例)値が2の多倍長整数オブジェクトを作り、「2^70」を計算します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | ## 真偽値 | ||
+ | * あらかじめ「**真**(**はい**)」「**偽**(**いいえ**)」という2個のオブジェクトが用意されています。 | ||
+ | * **論理積**(**AND**)や**論理和**(**OR**)を求めるときは、それぞれ「**ぜんぶ**」「**どれか**」オブジェクトに、真偽値をパラーメータとして「**本当**」を送ります。パラメータがブロックの場合には、その値が必要になるまでブロックは実行されません((「ぜんぶ」「どれか」の実体は、それぞれ「はい」「いいえ」です。ブロックのパラメータが実行されるタイミングは**sec_common_object_boolean** を参照してください。))。 | ||
+ | * **論理否定**(**NOT**)は、真偽値に「**反対**」を送ります。 | ||
+ | |||
+ | * **本当**: 「ぜんぶ」「どれか」と組み合わせて、論理積(AND)と論理和(OR)を求める。パラメータに複数の真偽値を指定できます。 | ||
+ | 「ぜんぶ」の場合はパラメータのすべてが真のときに真を返します。 | ||
+ | * (例)変数「x」、「y」は両方とも真(はい)なので、「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | 「どれか」の場合はパラメータのすべてが偽のときに偽を返します。 | ||
+ | * (例)変数「x」、「y」のどちらかは真(はい)なので、「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **反対**: 真偽値と反対の値を返します。真偽値が「はい」なら「いいえ」が返り、真偽値が「いいえ」なら「はい」が返ります。 | ||
+ | * (例)「x」の反対は真(はい)なので、「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## ブロック | ||
+ | * 内部にプログラムコードを持つオブジェクトです。 | ||
+ | * メソッド定義に用いられるほか、タイマーや繰り返しなどで利用します。 | ||
+ | * 先頭の「|...|」でパラメータを受け取れます。「; | ||
+ | * 実行された場合は、最後に実行された値が返ります。 | ||
+ | |||
+ | * **繰り返す** : ブロックの中をn回繰り返して実行します。 | ||
+ | * (例)ブロック「出力!" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | 何回目の実行かはパラメータとして渡されます。 | ||
+ | * (例)実行回数をパラメータ「n」で受け取り、実行するたびに表示します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **なら**, **そうでなければ**: | ||
+ | * (例)乱数の値が5より大きい場合に「大吉」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * (例)乱数の値が5より大きい場合に「大吉」を、そうでない場合は「小吉」を表示します。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **の間** : 条件が成り立つ間、後のブロックを繰り返し実行します。 | ||
+ | * (例)変数「x」が10以下の間、「s=s+x。x=x+1」を繰り返し実行します。 | ||
+ | < | ||
+ | | ||
+ | 「x <= 10」!の間「s=s+x。x=x+1」実行。 | ||
+ | | ||
+ | </ | ||
+ | * **実行** : ブロックに入っているプログラムを実行します。 | ||
+ | * (例)ブロック「ラベル!" | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## タイマー | ||
+ | * 一定時間ごとに、与えられたブロックを繰り返して実行します。 | ||
+ | * 標準では、0.1秒間隔で100回繰り返します(約10秒間です)。間隔は「**間隔**」で変更できます。 | ||
+ | * 回数を「**回数**」で指定した場合には、指定された回数を実行すると終了します。実行のパラメータで回数を指定することもできます。 | ||
+ | * 回数の代りに**時間**を指定した場合は、指定された時間で実行を終了します。 | ||
+ | * 間隔の最小時間は1ミリ秒(0.001秒)です。 | ||
+ | * 実行される間隔は、あまり正確ではありません。たとえば0.1秒間隔で10回繰り返して実行した場合、正確に1秒間にはなりません。大まかな目安として使ってください。また、指定した間隔より長い時間がかかる命令を実行した場合には、「回数」を指定した実行には時間がかかってもその回数を実行し、「時間」を指定した場合にはその時間が経過した時点で繰り返しを終了します。 | ||
+ | * タイマーはプログラムの流れと並行して(スレッドとして非同期に)実行され、プログラムはタイマーの終了を待たずに先に進みます。 | ||
+ | * タイマーの終了を待ってから次にタイマーを実行するには「**次に実行**」を、タイマーの終了を待ってから次に1回だけ命令を実行するには「**最後に実行**」を使います。 | ||
+ | * 実行されるブロックには、何回目の実行かを表す数がパラメータとして渡されます。 | ||
+ | * 実行は「**中断**」で止めることができます。タイマーは次の実行に移ります。 | ||
+ | * 「**停止**」でそのタイマーの実行を完全に止めることができます。 | ||
+ | * 「**待つ**」は廃止されました。Bit Arrow版では使用できません。 | ||
+ | * Java版(V3.0以降)では「**待つ**」はエラーにならずに動きますが、できるだけ「**次に実行**」と「**最後に実行**」を利用してください。 | ||
+ | |||
+ | * **作る** : 新しいタイマーを作ります。 | ||
+ | * (例)タイマーを作り「時計」という名前にします。 | ||
+ | < | ||
+ | | ||
+ | </ | ||
+ | * **間隔** : n秒間隔で動くようにします。 | ||
+ | * (例)繰り返す間隔を「1秒」に設定します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **回数** : n回動くようにします。 | ||
+ | * (例)繰り返す回数を「10回」に設定します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **時間** : n秒間だけ動くようにします。 | ||
+ | * (例)繰り返す時間を「5秒」に設定します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **実行** : ブロックを実行します。 | ||
+ | * (例)タイマーを作り、「かめた!3歩 歩く」を繰り返し実行します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | 回数を指定すると、その回数だけ実行します。 | ||
+ | * (例)5回繰り返して実行します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | 何回目の実行かはパラメータとして渡されます。 | ||
+ | * (例)何回目の繰り返しかを表示しながら実行します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **次に実行** : タイマーが終るのを待って次のタイマーを実行します。 | ||
+ | * (例)タートルが前進するタイマーの実行が終るのを待ってから、タートルが回転するタイマーを実行します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **最後に実行** : タイマーが終るのを待って命令を1回だけ実行します。 | ||
+ | * (例)タイマーの実行が終るのを待ってから「終了!」を表示します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **中断** : 実行中のタイマーの実行を中断します。 | ||
+ | タイマーに待ち行列がある場合は、次の実行に進みます。 | ||
+ | * (例)中断ボタンを押すとタイマーの実行を中断します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **停止** : 実行中のタイマーの実行を停止します。 | ||
+ | タイマーに待ち行列がある場合は、すべての実行を停止します。 | ||
+ | * (例)停止ボタンを押すとタイマーの実行を停止します。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ## 配列 | ||
+ | * 中に複数のデータを入れられるオブジェクトです。 | ||
+ | * ひとつの配列の中に異なる種類のオブジェクトを入れることができます。 | ||
+ | * 長さをあらかじめ決める必要はありません。 | ||
+ | * 要素の番号は1から始まります。最初の要素は1番目です。 | ||
+ | |||
+ | * **作る** : 新しい配列を作ります。パラメータで初期値を指定することもできます。 | ||
+ | * (例)配列を作ります。要素はありません。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **書く** : 配列にオブジェクトを追加します。配列の最後に追加されます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **挿入** : 配列にオブジェクトを入れます。 | ||
+ | 「n obj 挿入」で、n番目の位置にobjが挿入されます。元のn番目以降の要素は後ろにずれます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **上書き** : 配列のオブジェクトを上書きします。「n obj 上書き」で、n番目の要素がobjで上書きされます。nが配列の要素数より大きいときは、配列の大きさが拡張されて値が書かれます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **読む** : 配列の要素を返します。要素を1からはじまる整数で指定します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **ランダムに選ぶ** : 配列の要素をランダムに返します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **要素数?** : 配列の要素数を返します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **消す** : 配列の要素を消します。指定されたオブジェクトを配列からすべて削除します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **位置で消す** : 配列の要素を消します。要素の位置を指定して削除します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **クリア** : 配列の要素をすべて消します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | * **それぞれ実行** : 配列の要素の数だけブロックを繰り返して実行します。パラメータには配列の要素が1個ずつ渡されます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **連結**: パラメータで指定された要素を追加した配列を返します。パラメータに配列を指定した場合はその要素が追加されます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **選ぶ**: 配列の各要素に対してブロックを実行し、結果が「真(はい)」の要素からなる配列を返します。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **加工**: 配列の要素に対してブロックを実行し、それらの結果を要素とする配列を返します。 | ||
+ | * (例)1, 3, 5が要素の配列1を作り、それぞれの要素の値を2倍するプログラムが定義されたブロック「|n|n * 2」を実行します。「[ 2 6 10 ]」が表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **最大**: 最大の値を持つ要素を返します。値は数値以外の場合は文字列として比較します。 | ||
+ | * (例)1, 5, 3が要素の配列1を作り、最大の要素を表示します。「5」が表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **最小**: 最小の値を持つ要素を返します。値は数値以外の場合は文字列として比較します。 | ||
+ | * (例)1, 5, 3が要素の配列1を作り、最小の要素を表示します。「1」が表示されます。 | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | * **結合**: 配列の各要素を結合してひとつの文字列を返します。パラメータで要素の区切り文字を指定できます。 | ||
+ | * (例)文字列「" | ||
+ | < | ||
+ | | ||
+ | | ||
+ | </ | ||