V2.20

プログラミング言語「ドリトル」(V2.20)

2011年4月12日 兼宗進

新しい書籍(第2版)に合わせた改訂版です。

  • 基本機能の詳しい説明は書籍(「ドリトルで学ぶプログラミング[第2版]」兼宗進、久野靖、イーテキスト研究所、1,890円)をご覧ください。
    • 出版社のご厚意で、PDFと電子書籍へのリンクがパッケージに同梱されています。
    • 書籍(第1版)に対応した以前のバージョン(V2.00)とは一部のプログラムが異なる箇所があります。ご注意ください。
    • 【注意】MYUを制御するプログラムは、先頭で「システム!"myu" 作る。」を実行することが必要になりました。
    • 拡張・変更された機能については、以下の説明を参照してください。

動作環境

  • ドリトルの実行には、最新のJava(1.5以降)が必要です。
  • 次の環境で動作を確認しています。パッケージにはリリースノート(readme.pdf。この文書)、書籍のPDF(dolittlebook2.pdf)、電子書籍へのリンク(dbook.html)、サンプルプログラム(sample)などが含まれています。
    • Windows XP/Vista/7 (32bit/64bit)
      • dolittle.batから起動してください。
    • Linux (Ubuntu)
      • dolittle.shから起動してください。
    • Mac OS X (Leopard, Snow Leopard) Intel CPU
      • dmgに含まれる「Dolittle」を「アプリケーション」にコピーしてお使いください。その後、「アプリケーション」の「Dolittle」をDock(起動メニュー)に登録しておくと便利です。
      • 初めてドリトルを起動したときに、ユーザーごとの「ライブラリ」フォルダの下に「Dolittle」というフォルダが作られます。必要に応じて、startup.iniなどのini初期化ファイルや、プログラム中で利用する画像ファイルなどを置いてください。
      • MYUなどの外部機器を制御する場合は、事前に管理者権限で次の準備が必要です。
        sudo mkdir /var/lock
        sudo chmod 777 /var/lock

使い方

マニュアル

  • V2.20以降は書籍(第2版)を参照してください。
  • Amazon(通販)
    で購入できます。
  • 出版社のご厚意で、PDFと電子書籍へのリンクがパッケージに同梱されています。

サンプルプログラムの実行

  • 「開く」ボタンをクリックすると、サンプルプログラムを読み込めます。
  • 「実行!」ボタンをクリックして実行してください。

プログラムの作成

  • 「編集画面」のタブでプログラムを入力します。
  • 「実行!」ボタンをクリックして実行してください。
  • 「保存」ボタンでプログラムを保存できます。

終了

  • 「終了」ボタンで終了します。

詳しい情報

WWW

  • ドリトルの情報は次のサイトに集められています。
    リリース情報は「ダウンロード」のページをご覧ください。

コミュニティ

V2.20の修正点(前バージョンはV2.00)

新規機能

  • 編集画面でショートカットキーを使えるようにしました。(MacintoshはCtrlの代わりにCommandを使います)
    • 「Ctrl-O」でファイル読み込み
    • 「Ctrl-S」でファイル保存
    • 「Ctrl-G」でプログラム実行
    • 「Ctrl-T」で、実行画面と編集画面を切り替え
    • 他のキーは、Emacsに近い設定です。
  • 数値を2進と16進で書けるようにしました。2進は0bで、16進は0xで指定します。
    • 例: 2進と16進で255を表示します。
      ラベル!0b11111111 作る。
      ラベル!0xff 作る。
  • 三角関数の逆関数であるatan2を追加しました。
    • x座標の値に、y座標を引数として実行します。
    • atanは-90~90の値を返しますが、atan2は-180~180の値を返します。
    • 例:
      ラベル!(-10!10 atan2) 作る。
  • 数値に文字コード(UTF-16)から文字列を生成する「コード文字」を追加しました。
    • 例:
      ラベル!(65!コード文字)作る。
  • 多倍長整数オブジェクトを追加しました。長い桁数の整数を扱えます。
    • 文字列(または数値)に「大きい整数にする」を送り生成します。
      • 例: 多倍長整数で計算すると、15桁を超えるような大きな整数を正しく計算できます。
        普通の数=12345678901234567890。
        大きい数="12345678901234567890"!大きい整数にする。
        ラベル!"普通の数:" 作る。ラベル!(普通の数)作る。
        ラベル!"大きい数:" 作る 次の行。ラベル!(大きい数)作る。
    • 数値(内部は倍精度実数)から生成する場合は、初期値が数値の有効数字に制限されます。そのため、10桁以上の場合は文字列から生成することを推奨します。
    • 数値の演算(メソッド)の一部を利用できます。
      • 利用可能: +, -, *, /, %, abs, pow, ==, !=, >, >=, <, <=
      • 利用不可: sin, cos, tan, asin, acos, atan, sqrt, round, ceil, floor, exp, log, ln, upto, downto
    • 演算結果は多倍長整数、数値、論理値のいずれかになります。
      • 多倍長整数が返る: +, -, *, /, %, abs, pow (/と%は、左辺が多倍長整数または多倍長整数を表す文字列の場合)
      • 数値が返る: /, % (/と%は左辺が数値の場合)
      • 論理値が返る: ==, !=, >, >=, <, <=
  • 文字列に文字コードを調べる「文字コード」を追加しました。先頭の1文字の文字コード(UTF-16)を返します。
    • 例:
      ラベル!("abc"!文字コード)作る。
  • 引用符の文字列定数を定義しました。
    • " : dq, ダブルクォート, ダブルクォーテーション
    • “ : ldq, 左ダブルクォート, 左ダブルクォーテーション
    • ” : rdq, 右ダブルクォート, 右ダブルクォーテーション
    • 『 : ldb, 左二重かぎ括弧
    • 』 : rdb, 右二重かぎ括弧
    • 例:
      ラベル!(ダブルクォート) 作る。
  • 文字列の「含む?」「置き換える」「全部置き換える」「分割」を正規表現に対応しました。
    • 正規表現については、市販の書籍やWebサイトの解説などを参考にしてください。
    • 使用できる主な表現を示します。マッチした文字列の参照はサポートしていません。
      • 「.」 任意の一文字
      • 「?」 直前の文字が0個か1個
      • 「*」 直前の文字の0回以上の繰り返し
      • 「+」 直前の文字の1回以上の繰り返し
      • 「^」 先頭
      • 「$」 末尾
      • 「|」 左右のパタンのいずれか(OR)
      • 「( )」 範囲指定
      • 「[ ]」 列挙された文字のいずれか(「-」で文字の範囲指定。先頭の「^」は含まないという指示)
    • 例:
      「"あいうえお"!"い..お" 含む?」!なら「ラベル!"はい" 作る」そうでなければ「ラベル!"いいえ" 作る」実行。
      ラベル!("かめたとかめた"!"か.." "かめきち" 置き換える)作る。
      ラベル!("かめたとかめた"!"か.." "かめきち" 全部置き換える)作る。
      ラベル!("かめたとかめきちやかめこ"!"[とや]" 分割)作る。
  • 配列の要素をランダムに選ぶ「ランダムに選ぶ」(くじ引き、random)を追加しました。
    • 例:
      配列1=配列!"かめた" "かめこ" "かめきち" 作る。
      ラベル!(配列1!ランダムに選ぶ)作る。
  • タイマーの実行時に回数を指定できるようにしました。
    • 例:
      時計=タイマー!作る。
      時計!「ラベル!"あ" 作る」3 実行。
  • システム
    • 「日時?」「曜日?」「年?」「月?」「日?」「時刻?」「時?」「分?」「秒?」「システム秒?」で日時を取得できるようにしました。
    • 「システム秒?」は、値の差分から経過時間をミリ秒単位で計測するために使います。値そのものには意味はありません。
      • 例: 掛け算を100万回計算する時間を表示します。(お使いのコンピュータによっては実行に時間がかかることがあります)
        start=システム!システム秒?。
        「s=2*3」!1000000 繰り返す。
        end=システム!システム秒?。
        ラベル!(end - start)作る。
  • 初期化ファイルを指定して実行できるようにしました。
    • 初期化ファイルにはドリトルのプログラムを記述できます。ファイルの拡張子は「.ini」です。
    • 外部機器の制御などを行うときに使用します。
    • システム関数の「使う」を実行すると、その名前の初期化ファイルが実行されます。
      • 例: abc.iniという初期化ファイルを実行する。
        システム!"abc" 使う。
    • MYUやArduinoなどの機能を使うプログラムでは、先頭で初期化ファイルを実行します。
      • 例: MYUの初期化ファイルを実行する。
        システム!"myu" 使う。
  • サーバと通信するポートを設定できるようにしました。標準は2020が使われます。通常は、この機能を使う必要はありません。
    • 例: 通信ポートを2000に変更します。
      システム!2000 サーバーポート。
  • サーバー画面にIPアドレスとポート番号を表示するようにしました。
  • システムに外部コマンドを実行する「実行」を追加しました。
    • 外部コマンドを実行します。
      • 戻り値は外部コマンドの標準出力文字列です。
      • 戻り値のプロパティ「stderr」は外部コマンドのエラー出力です。
      • 戻り値のプロパティ「retcode」は外部コマンドのリターンコードです。
    • オンライン版では使用できません。
    • 例:
      結果=システム!"date" 実行。
      ラベル!(結果)作る。
      ラベル!(結果:stderr)作る。
      ラベル!(結果:retcode)作る。
  • システムにProxyを設定する「proxy」を追加しました。
    • 引数に、URL(またはIPアドレス)と通信ポートを指定します。
    • 通信ポートを省略した場合は8080が使われます。
    • オンライン版では使用できません。
    • 例:
      システム!"http://proxy.~.ac.jp" proxy。
      システム!"http://192.168.0.1" proxy。
  • 「Webクライアント」オブジェクトを追加しました。
    • Webサーバにアクセスして、HTMLファイルなどを取得できます。
    • 「読む」の引数に、URLと通信ポートを指定します。
    • 通信ポートを省略した場合は80が使われます。
    • オンライン版では使用できません。
    • 「読む」の戻り値はWebサーバから取得した文字列です。
    • 戻り値のプロパティ「header」には、取得したヘッダが配列で入ります。
    • 戻り値のプロパティ「retcode」には、レスポンスコードが文字列で入ります。
    • 戻り値のプロパティ「retmsg」には、レスポンスメッセージが文字列で入ります。
    • 例:
      w=Webクライアント!作る。
      ret=w!"http://dolittle.eplang.jp" 読む。
      ラベル!(ret)作る。
  • 色を、1個の数値から作れるようにしました。3色を2桁ずつの16進で指定します。
    • 例: 赤が255、緑が0、青が255の色を作ります。
      新しい色=色!0xFF00FF 作る。
  • 色をランダムに作る「ランダムに作る」(くじ引き、random)を追加しました。
    • 例:
      ラベル!"こんにちは" 作る(色!ランダムに作る)塗る。
  • 画面の「横の位置?」「縦の位置?」でマウス位置を取得できるようにしました。
    • 「画面」の別名として「マウス」を定義しました。
    • 例:
      マウス!横の位置?。
  • タートルの変身する画像をURLで指定できるようにしました。
    • 例:
      タートル!作る”http://dolittle.eplang.jp/image/pukiwiki.png”変身する。
  • タートルの変身する画像をTwitterのアカウント名で指定できるようにしました。アカウント名の前に「@」を付けて参照します。*1
    • オンライン版では使用できません。
    • 例:
      タートル!作る "@watayan" 変身する。
  • タートルと図形をクリックしたときに、「動作」メソッドが実行されるようにしました。
    • 例:
      かめた=タートル!作る。
      かめた:動作=「自分!20 歩く」。
      三角=「かめた!100 歩く 120 左回り」!3 繰り返す(青)図形を作る。
      三角:動作=「自分!0 20 移動する」。
  • フィールド、ラベル、ボタンに、値を変更する「増やす」「減らす」を追加しました。
    • 例: フィールドをクリックしてリターンキー(Enterキー)を押すと値が変わります。
      カウンタ=フィールド!"100" 作る。
      カウンタ:動作=「自分!1 増やす」。
  • スライダーで、動作の引数として値を渡すようにしました。
    • 例: スライダーを動かすと、フィールドの値が0~100の範囲で変化します。
      表示=フィールド!作る。
      スライダー1=スライダー!作る。
      スライダー1:動作=「|値| 表示!(値)書く」。
  • スライダーの値の範囲を「から」「まで」で指定できるようにしました。変更するとバーは中央に戻ります。
    • 例: スライダーを動かすと、フィールドの値が-50~50の範囲で変化します。
      表示=フィールド!作る。
      スライダー1=スライダー!作る -50 から 50 まで。
      スライダー1:動作=「|値| 表示!(値)書く」。
  • 選択メニューに「動作」を定義できるようにしました。項目を選択したときに実行され、引数として選択された文字列と番号が渡されます。
  • ラベル、ボタン、リスト、選択メニューの文字列中にHTMLを書けるようになりました。
    • 文字列の中にHTMLを記述してください。文字列の先頭は"<html>..."で始める必要があります。
    • 記述できるHTMLは、W3CのHTML3.2相当です。ただし、aタグによるリンクなど、一部の機能は利用できません。
    • HTMLの意味や文法については、関連する書籍などを参照してください。HTMLの中では、""による引用は記述できません。(<font color="red">ではなく、<font color=red>と記述します)
    • 利用できる主なタグを示します。
      • 本文: body
      • 見出し: h1-h6
      • 段落: p, br, hr
      • 箇条書き: ul, ol, dl, lib
      • 表組: table, tr, th, td
      • 文字: b, font
      • 画像: img
    • 利用例は付属のサンプルプログラム(html.dtl)をご覧ください。
      • 例: ローカルの画像は、ドリトルを実行しているフォルダに画像ファイルを置いて実行してください。
        色: ラベル!"<html><p color=blue>abc</p></html>" 作る。
        表: ラベル!"<html><table border=1><tr><td color=blue>abc</td><td>def</td></tr><tr><td color=green>ghi</td><td>jkl</td></tr></html>" 作る。
        Webの画像: ラベル!"<html><img src=http://dolittle.eplang.jp/image/pukiwiki.png></html>" 作る。
        ローカルの画像: ラベル!"<html><img src=file:large.jpg></html>" 作る。
        背景画像: ラベル!"<html><body background=http://dolittle.eplang.jp/image/pukiwiki.png>あいうえおかきくけこさしすせそ<br><br><br><br><br></body></html>" 作る。
    • HTMLを用いた画像は、タートルや図形オブジェクトと重なっても衝突を起こしません。そのため、背景画像の表示に適しています。imgタグのほか、bodyタグのbackground属性で繰り返し表示することも可能です。
  • ドラムに「音量」を追加しました。0~127の値を設定できます。標準の大きさは95です。
    • 例: 小さめの音量(50)で演奏します。
      ドラム!"ドツタツドツタツ" 作る 50 音量 演奏。
  • 外部のMIDI機器での音楽演奏に対応しました。外部のMIDI機器を検出すると、編集画面の下部にMIDIボタンが表示され、機器を選択できます。
  • シリアルオブジェクトの生成時に、次のパラメータを設定できるようにしました。パラメータは途中までの記述も可能です。括弧内の値は標準値です。
    • バッファ: 整数 (1024)
    • 速度: 整数 (9600)
    • データ: 5/6/7/8 (8)
    • ストップ: 1/2/1.5 (1)
    • パリティ: none/odd/even/mark/space (none)
    • フロー: none/rtscts/xonxoff (none)
    • 例:
      ロボット=シリアルポート!1024 115200 8 1 "none" "rtscts" 作る。
      ロボット=シリアルポート!1024 115200 作る。
  • Arduinoでのデジタルとアナログの入出力に対応しました。

仕様変更

  • 編集画面の文字サイズを、14ptから16ptに変更しました。
  • 配列の「それぞれ実行」で最後に実行した値が返されるようにしました。
  • タートルの「ペンあり」で、それまでに描いた線を図形として切り離さないようにしました。
    • 途中で線が途切れた図形を作れるようになりました。
    • 【注意】「ペンあり」で線を切り離していたプログラムでは、必要に応じて「図形を作る」でそれまでの線を図形にするなど、プログラムを修正してください。
  • タートルの描画時に、斜めの線がなめらかに描かれるようにしました。
  • 選択メニューの「作る」に引数を渡せるようにしました。
  • メロディ、コード、ドラムの「追加」で、複数の引数を追加できるようにしました。
  • MYUを制御するプログラムの先頭で「システム!"myu" 作る。」を実行するようになりました。
  • 外部機器制御ライブラリをJavacommからRXTXに変更しました。
    その結果、Windows/Linux/Macintoshで実行可能になり、Windows用追加ファイルによるJavaのシステムフォルダへのインストールが不要になりました。
    • 【注意】Macintoshでシリアルポートを使う場合は、事前に管理者権限で次の準備が必要です。
      sudo mkdir /var/lock
      sudo chmod 777 /var/lock

不具合修正

  • startup.iniのエラーで、正しい箇所が表示されるようになりました。
  • いくつかの命令に仮名の別名を追加しました。
  • 文字列のプロトタイプオブジェクトが実行時に初期化されない現象を修正しました。
  • タイマーの中で「待つ」を実行すると、実行が止まる現象を修正しました。
  • 未定義オブジェクトとの大小比較を行ったときにエラーになることがある現象を修正しました。
    • 未定義オブジェクトとの比較は、「==」「!=」を除き、すべてfalseを返します。
  • タートルの「閉じる」を実行したときにタートルが移動しない現象を修正しました。
  • スライダーの「作る」で元のオブジェクトの値(value)、最小値(min)、最大値(max)を複製するように修正しました。
  • ボタンなどのGUIオブジェクトを削除したときに、Javaの例外が起きることがある不具合を修正しました。
  • ボタンなどのGUIオブジェクトを削除した後にエラーが表示されることがある現象を修正しました。
  • 16分音符と32分音符のテンポがずれる現象を修正しました。
  • メロディとコードに楽器を設定したときに、楽器の音量が引き継がれるように修正しました。
    メロディ!”どれみー”作る (楽器!5 作る 30 音量)設定 演奏。
  • 音楽演奏で、最後の音が途中で途切れる現象を修正しました。
  • 音楽演奏で、複数の楽器が同時に演奏できないことがある不具合を修正しました。

以上


*1 Twitterアイコンの取得には「404 Blog Not Found」のサービスを利用しています。

Theme designed by Dining tables
Coder Mothers Day | EZwpthemes |modified by QHM Temps

powered by Quick Homepage Maker 5.0
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional