DNCLの拡張要素

概要

XTetraで使用するDNCLの文法は公式の仕様書に準拠していますが、関数定義やコメント文などの拡張要素が存在します。

公式の仕様と異なる点

標準入力

XTetraでは標準入力の機能を組み込み関数として提供しています。Input()または入力()を使用して標準入力を受け取ります。Input()は入力を数値に変換して返します。入力()は文字列として返します。標準入力はコンソールに記述し,Enterキーを押すとプログラムに入力されます。

"xを入力してください>>" を改行なしで表示する
x ← Input()//「入力()」とすると文字列として読み込まれる
"xの値は:" + x を表示する

※キャンセルボタンを押すとプログラムが停止します。

変数

XTetraでは論理値などの定数を表す変数を構文の一部として提供しています。

特別な変数

true//論理値「真」を表します
True//論理値「真」を表します
false//論理値「偽」を表します
False//論理値「偽」を表します
NaN//非数値を表します
null//空値を表します

※変数にnullを代入すると、その変数は変数リストに表示されなくなります。

配列

配列の初期化方法

array1D←Array(10)//大きさ10の配列を作成
array2D ← [[1,2,3],[4,5,6]]//2行×3列の2次元配列を作成
array←[1,2,3,4]//要素を指定して配列を作成
p["x"]←10//文字列「x」でマッピング
p["y"]←20//文字列「y」でマッピング

配列の参照方法

//array1Dの1番目の要素を表示
array1D[1]を表示する
//array2Dの1,2成分を表示
array2D[1,2]を表示する
//文字列「x」でマッピングした要素を表示
p["x"]を表示する

拡張繰り返し文

文法

拡張繰り返し文は、C#やPHPにおけるforeach文に相当します。列挙可能な配列値の各要素についての処理を記述することができます。

<配列> の要素 <変数> について,
 <処理>
を繰り返す

使用例

大きさの異なる配列を要素にもつ多次元配列の列挙の際に力を発揮します。

array ← [[1,2,3,4,5],[6,7,8],[9,10],[11,12,13]]
array の要素 x について,
    x の要素 y について,
        y + " " を改行なしで表示する
    を繰り返す
    改行 を表示する
を繰り返す

関数

関数の定義方法

関数は以下のように定義します。関数名は英字から始まる英数字とアンダースコアの並びもしくは、予約語でない日本語名が使用できます。すべての関数は戻り値を持ち、「<値>を返す」により戻り値を設定しない場合はnullが返されます。関数内から関数外の変数を参照することはできません。

関数 <関数名> (引数1,引数2,...)は
    <処理>
を実行する

※関数の入れ子構造は許容していません。

関数の例

/* * 
 * nの2乗を返す関数
 **/
関数 二乗(n)は
    n × n を返す
を実行する

関数の呼び出し方法

関数は「<関数名>(引数1,引数2,...)」のようにして呼び出します。

x←二乗(100)//関数「二乗」を呼び出す

手続き

手続きの定義方法

手続きは以下のように定義します。手続き名は英字から始まる英数字とアンダースコアの並びもしくは、予約語でない日本語名が使用できます。手続きは戻り値を持ちません。手続き内から手続き外の変数を参照することはできません。

手続き <手続き名> (引数1,引数2,...)は
    <処理>
を実行する

※手続きの入れ子構造は許容していません。

手続きの例

/* * 
 * 文字列"こんにちは"を表示する手続き
 **/
手続き あいさつ()は
"こんにちは" を表示する
を実行する

手続きの呼び出し

//手続き「あいさつ」を呼び出す
あいさつ()

コメント文

インラインコメント

//これはインラインコメントです

ブロックコメント

/* * 
 * これはブロックコメントです
 **/
Copyright 2020 © Takumi Daimon. All Rights Reserved.