プログラミング言語「ドリトル」

大阪電気通信大学 兼宗研究室

ユーザ用ツール

サイト用ツール


dncl

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
dncl [2018/10/10 05:50]
klab
dncl [2023/07/11 17:54] (現在)
klab
ライン 4: ライン 4:
   * アルゴリズムの記述に適しています。   * アルゴリズムの記述に適しています。
   * オンラインで利用できる他、ダウンロードしてローカルで利用できます。   * オンラインで利用できる他、ダウンロードしてローカルで利用できます。
-{{ :​toy_yajirobee.png?​200| +  * 大阪電気通信大学 兼宗研究室(本多佑希、長瀧寛之、兼宗進)で開発を進めています。 
-}}+{{ :​toy_yajirobee.png?​200|}}
 ## 使い方 ## 使い方
   * [[http://​klab.eplang.jp/​honda/​dncl/​|オンライン版]]はインストールなしでブラウザで動作します。   * [[http://​klab.eplang.jp/​honda/​dncl/​|オンライン版]]はインストールなしでブラウザで動作します。
ライン 11: ライン 11:
     * Google Chromeで動作を確認しています。     * Google Chromeで動作を確認しています。
   * インストール版は、ダウンロードしてファイルを展開してください。管理者権限は不要です。   * インストール版は、ダウンロードしてファイルを展開してください。管理者権限は不要です。
-    * [[http://jsdolittle.eplang.jp/dist/dncl-windows181010.zip|Windows用]](約100MB) +    * [[https://drive.google.com/uc?​export=download&​id=1RimALv98L2T-njEaPhR5e-gE2j8eg38I|Windows用]](約100MB) 
-    * [[http://jsdolittle.eplang.jp/dist/dncl-mac181010.zip|Mac用]](約100MB)+    * [[https://drive.google.com/uc?​export=download&​id=1ODw3kG5xwE-T6XxaB621pMGbUhWSdCrx|Windows用(32bit)]](約100MB) 
 +    * [[https://​drive.google.com/​uc?​export=download&​id=12ou05_dZO6VLqe2GCXZe7vcEZIz1RH6F|Mac用]](約100MB)
  
 ## 履歴 ## 履歴
ライン 22: ライン 23:
   * プログラムの中で、「数字、英字、記号、空白」は全角半角(日本語文字と英語文字)を区別せずに使えます。   * プログラムの中で、「数字、英字、記号、空白」は全角半角(日本語文字と英語文字)を区別せずに使えます。
     * 日本語の長音「ー」とマイナス「−」は区別されます。     * 日本語の長音「ー」とマイナス「−」は区別されます。
-    * 掛け算は「*」「*」「×」を使います。+    * 掛け算は「\*」「*」「×」を使います。
     * 割り算は「/​」「/」を使います。(整数の割り算は「÷」、整数の余りは「%」「%」を使います)     * 割り算は「/​」「/」を使います。(整数の割り算は「÷」、整数の余りは「%」「%」を使います)
     * 大小の比較は「>​」「>」、「>​=」「≧」、「<​」「<」、「<​ =」「≦」、「=」「=」、「!=」「≠」を使います。     * 大小の比較は「>​」「>」、「>​=」「≧」、「<​」「<」、「<​ =」「≦」、「=」「=」、「!=」「≠」を使います。
 +    * 論理演算は「かつ」「または」「でない」を使います。
 +    * 代入は「←」を使います。
 +  * プログラムの英語表示と編集が可能です。
 +    * 「DNCL」と「英語表示」を切り替えることで、日本語のDNCL表記とC言語風の表記が変換されます。
 +      * ※ インデントが自動調整されます。改行位置が変わったり、空白行が無くなったりする可能性があります。
 +    * 掛け算は「*」を使います。
 +    * 割り算は「/​」を使います。(整数の割り算は「÷」、整数の余りは「%」を使います)
 +    * 大小の比較は「>​」、「>​=」、「<​」、「<​ =」、「==」、「!=」を使います。
 +    * 論理演算は「&&​」「||」「!」を使います。
 +    * 代入は「=」を使います。
 +
  
 ===変数=== ===変数===
 変数名は英字(a-z,​A-Z)で始まり、その後に英字、数字、「_」が続きます。 変数名は英字(a-z,​A-Z)で始まり、その後に英字、数字、「_」が続きます。
-変数には「←」で初期値を代入してから使います。 +変数には「←」(英語表示では「=」)で初期値を代入してから使います。 
-配列の場合は後述の「〜のすべての値を〜にする」で初期値を設定してから使うこともできます。+配列の場合は後述の「〜のすべての値を〜にする(allinit)」で初期値を設定してから使うこともできます。
 複数の代入文を「,​」で区切って並べられます。 複数の代入文を「,​」で区切って並べられます。
 <​code>​ <​code>​
ライン 36: ライン 48:
 moji_moji ← "​文字"​ moji_moji ← "​文字"​
 x ← 3, y ← 4 x ← 3, y ← 4
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +x = 3;
 +Arr = {1, 2, 3};
 +moji_moji = "​文字";​
 +x = 3, y = 4;
 </​code>​ </​code>​
  
ライン 44: ライン 64:
 xを1増やす xを1増やす
 yを50減らす yを50減らす
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +x += 1;
 +y -= 50;
 </​code>​ </​code>​
  
ライン 54: ライン 80:
 123+456と"​aiueo"​と改行を表示する 123+456と"​aiueo"​と改行を表示する
 "​こんにちは"​を改行なしで表示する "​こんにちは"​を改行なしで表示する
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +println(x);
 +println(123+456,"​aiueo"​);​
 +print("​こんにちは"​);​
 </​code>​ </​code>​
  
ライン 66: ライン 99:
  
 ===四則演算=== ===四則演算===
-+, -, ×, - は小数点を考慮した計算を行います。÷,​ % は整数の計算を行います(商と余り)。++, -, ×, - は小数点を考慮した計算を行います。÷,​ % は整数の計算を行います(商と余り)。英語表示の乗算は\*を使います
 <​code>​ <​code>​
 1+2 1+2
ライン 73: ライン 106:
  
 ===比較演算=== ===比較演算===
->, <, ≧, ≦, =, ≠ を使えます。+>, <, ≧, ≦, =, ≠ を使えます。英語表示では >, <, >=, < =, ==, != を使います。
 <​code>​ <​code>​
 1>2 1>2
ライン 80: ライン 113:
  
 ===論理演算=== ===論理演算===
-「かつ」「または」「でない」を使えます。+「かつ」「または」「でない」を使えます。英語表示では &&, ||, ! を使います。
 <​code>​ <​code>​
 1>2 または 2>1 1>2 または 2>1
 1>0 かつ 5>3 でない 1>0 かつ 5>3 でない
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +1>2 || 2>1
 +!(1>0 && 5>3)
 </​code>​ </​code>​
  
ライン 103: ライン 142:
 配列の要素は、配列名の後に[ ]で囲み添え字を書きます。 配列の要素は、配列名の後に[ ]で囲み添え字を書きます。
 要素は1から始まります。 要素は1から始まります。
-多次元配列は、「,​」で区切って要素を指定します。+多次元配列は、「,​」で区切って要素を指定します。英語表示では[ ]を並べて指定します。
 <​code>​ <​code>​
 x ← Arr[1] x ← Arr[1]
 y ← Arr[1,2] y ← Arr[1,2]
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +x = Arr[1];
 +y = Arr[1][2];
 </​code>​ </​code>​
  
ライン 113: ライン 158:
 <​code>​ <​code>​
 Arrのすべての値を0にする Arrのすべての値を0にする
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +allinit(Arr,​ 0);
 </​code>​ </​code>​
  
 ===関数呼び出し=== ===関数呼び出し===
-関数名の後に引数を()で指定します。+関数名の後に引数を()で指定します。英語表示では組込関数は英語名になります。
 <​code>​ <​code>​
 書く() 書く()
 二倍(100) 二倍(100)
 乗算(100,​200) 乗算(100,​200)
 +追加する(Arr,​15)
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +書く();
 +二倍(100);​
 +乗算(100,​200);​
 +add(Arr,​15);​
 </​code>​ </​code>​
  
ライン 133: ライン 192:
     iを表示する     iを表示する
 を繰り返す を繰り返す
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +for( i=0 ; i<=10 ; i+=1 ){
 +  print(i);​
 +}
 +for( i=10 ; i>=0 ; i-=1 ){
 +  print(i);​
 +}
 </​code>​ </​code>​
  
ライン 142: ライン 211:
     i←i+1     i←i+1
 を繰り返す を繰り返す
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +i=0;
 +while(i<​10){
 +  print(i);​
 +  i+=1;
 +}
 +</​code>​
 +
 +回数を指定した繰り返し文は、次のように記述します。
 +<​code>​
 +i ← 0
 +ここから5回、
 +  iを表示する
 +  iを1増やす
 +を繰り返す
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +i=0;
 +repeat(5){
 +  print(i);​
 +  i+=1;
 +}
 </​code>​ </​code>​
  
ライン 154: ライン 250:
     3を表示する     3を表示する
 を実行する を実行する
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +if(1!=1){
 +  print(1);​
 +}else if(2!=2){
 +  print(2);​
 +}else{
 +  print(3);​
 +}
 </​code>​ </​code>​
  
ライン 161: ライン 268:
 </​code>​ </​code>​
  
 +<​code>​
 +// 英語表示
 +if(1==1) print("​Hello"​);​
 +</​code>​
  
  
ライン 176: ライン 287:
  
 ===配列の要素を入れ替える=== ===配列の要素を入れ替える===
-「入れ替える」は、配列の要素を入れ替えます。+「入れ替える(swap)」は、配列の要素を入れ替えます。
 <​code>​ <​code>​
 Arr ← {"​a","​b","​c"​} Arr ← {"​a","​b","​c"​}
ライン 183: ライン 294:
  
 ===配列の要素を削除する=== ===配列の要素を削除する===
-「削除」関数は、番号を指定して配列の要素を削除します。+「削除(remove)」関数は、番号を指定して配列の要素を削除します。
 <​code>​ <​code>​
 Arr ← {"​a","​b","​c"​} Arr ← {"​a","​b","​c"​}
ライン 190: ライン 301:
  
 ===配列に要素を挿入する=== ===配列に要素を挿入する===
-「挿入」関数は、番号を指定して要素を挿入します。+「挿入(insert)」関数は、番号を指定して要素を挿入します。
 <​code>​ <​code>​
 Arr←{"​a","​b","​c"​} Arr←{"​a","​b","​c"​}
ライン 197: ライン 308:
  
 ===配列の要素数を取得する=== ===配列の要素数を取得する===
-「要素数」関数は、配列の要素数を取得します。+「要素数(length)」関数は、配列の要素数を取得します。
 <​code>​ <​code>​
 Arr←{"​a","​b","​c"​} Arr←{"​a","​b","​c"​}
ライン 204: ライン 315:
  
 ===変数の確認=== ===変数の確認===
-プログラムの中で使われている変数の値を確認します。+「確認(dump)」関数は、プログラムの中で使われている変数の値を確認します。
 <​code>​ <​code>​
 Arr ← {1,​2,​3,​4,​5} Arr ← {1,​2,​3,​4,​5}
ライン 228: ライン 339:
     strを表示する     strを表示する
 を実行する を実行する
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +function hello(){
 +  print("​hello!"​);​
 +}
 +function write(str){
 +  print(str);​
 +}
 </​code>​ </​code>​
  
ライン 237: ライン 358:
  
 二倍(5)を表示する // 10が表示される 二倍(5)を表示する // 10が表示される
 +</​code>​
 +
 +<​code>​
 +// 英語表示
 +function twice(num){
 +  return num*2;
 +}
 +print(twice(5));​
 </​code>​ </​code>​
  
ライン 243: ライン 372:
 以下の内容を測定しています。 以下の内容を測定しています。
   * 実行時間   * 実行時間
-  * 各for文のループ回数+  * 各for文/while文のループ回数
   * 各if文の「条件判定を行った回数」「真が評価された回数」「偽が評価された回数」   * 各if文の「条件判定を行った回数」「真が評価された回数」「偽が評価された回数」
 +  * 各関数の呼出回数
  
 次の例は、関数の性能を測定します。 次の例は、関数の性能を測定します。
ライン 259: ライン 389:
 を実行する を実行する
 倍数判定()の性能を確認する 倍数判定()の性能を確認する
 +</​code>​
  
 +<​code>​
 +// 英語表示
 +function is_multiple(){
 +  for( x=1 ; x<=10 ; x+=1 ){
 +    print(x);​
 +    if(x%3==0){
 +      println("<​-3の倍数!"​);​
 +    }else{
 +      println(\n);​
 +    }
 +  }
 +}
 +profile(is_multiple());​
 +</​code>​
 +
 +<​code>​
 (出力例) (出力例)
 1 1
ライン 271: ライン 418:
 9<​-3の倍数! 9<​-3の倍数!
 10 10
-性能テスト---------------- +統計情報------------------ 
-実行時間 ​=> 0.003秒 +(実行時間
-for1 : 実行回数 ​=> 10 +0.007秒 
-if1 : 比較回数 => 10, 真の回数 => 3, 偽回数 ​=> 7+(実行回数
 +for1 : 10 
 +if1 : 比較 10, 真 3, 偽 
 +(呼び出し回数
 +倍数判定 : 1
 -------------------------- --------------------------
 </​code>​ </​code>​
ライン 293: ライン 444:
 倍数判定() 倍数判定()
 性能を確認する 性能を確認する
 +</​code>​
  
 +<​code>​
 +// 英語表示
 +function is_multiple(){
 +  for( x=1 ; x<=10 ; x+=1 ){
 +    noNL_print(x);​
 +    if(x%3==0){
 +      print("<​-3の倍数!"​);​
 +    }else{
 +      print(\n);​
 +    }
 +  }
 +}
 +is_multiple();​
 +is_multiple();​
 +performance();​
 +</​code>​
 +
 +<​code>​
 (出力例) (出力例)
 1 1
ライン 315: ライン 485:
 9<​-3の倍数! 9<​-3の倍数!
 10 10
-性能テスト---------------- +統計情報------------------ 
-実行時間 ​=> 0.011秒 +(実行時間
-for1 : 実行回数 ​=> 20 +0.018秒 
-if1 : 比較回数 => 20, 真の回数 => 6, 偽回数 ​=> 14+(実行回数
 +for1 : 20 
 +if1 : 比較 20, 真 6, 偽 14 
 +(呼び出し回数
 +倍数判定 : 2
 -------------------------- --------------------------
 </​code>​ </​code>​
dncl.1539118215.txt.gz · 最終更新: 2018/10/10 05:50 by klab