目次

演算

算術演算

a + b足し算
a - b引き算
a * b掛け算
a / b割り算
a % ba を b で割った余り
a++処理実行してから a を 1 増やす
a--処理実行してから a を 1 減らす
++aa を 1 増やしてから処理実行
--aa を 1 減らしてから処理実行

※ a++ と ++a の違いに注意。

a+bは文字列結合になる場合あり

要注意。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    var a = 12;
    var b = 5;
    var r =  a + b;
    t.addText("a+b=" + a+b + "\n"); // 文字列結合
    t.addText(a+b);t.addText("\n"); // 足し算
    t.addText(a+b + "\n");          // 足し算
    t.addText(r);  t.addText("\n"); // 足し算
  </handler>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

算術演算

サンプルはa=12、b=5、c=10のときの結果:

a+b17
a-b7
a*b60
a/b2.4
a%b2
c++10
c--10
++c11
--c9

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    var a = 12;
    var b = 5;
    var c1 = 10;
    var c2 = 10;
    var c3 = 10;
    var c4 = 10;
    var r1 = c1++;
    var r2 = c2--;
    var r3 = ++c3;
    var r4 = --c4;
    t.addText(a+b +"\n");
    t.addText(a-b +"\n");
    t.addText(a*b +"\n");
    t.addText(a/b +"\n");
    t.addText(a%b +"\n");
    t.addText(r1  +"\n");
    t.addText(r2  +"\n");
    t.addText(r3  +"\n");
    t.addText(r4  +"\n");
  </handler>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

代入演算

a = bbの値をaに代入
a += baとbを足した結果をaに代入
a -= baからbを引いた結果をaに代入
a *= baとbを掛けた結果をaに代入
a /= baをbで割った結果をaに代入
a %= baをbで割った余りをaに代入

サンプルはa=12、b=5のときのaの値:

a=b5
a+=b17
a-=b7
a*=b60
a/=b2.4
a%=b2

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    var a = 12; var b = 5;
    t.addText(a=b);t.addText("\n");
    var a = 12; var b = 5;
    t.addText(a+=b);t.addText("\n");
    var a = 12; var b = 5;
    t.addText(a-=b);t.addText("\n");
    var a = 12; var b = 5;
    t.addText(a*=b);t.addText("\n");
    var a = 12; var b = 5;
    t.addText(a/=b);t.addText("\n");
    var a = 12; var b = 5;
    t.addText(a%=b);t.addText("\n");
  </handler>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

ビット演算

これいつ使うんですかね?

一応、試してみました。ビット演算はビット単位でOR、AND、左右シフトができます。

NOTはないみたいです。

a|ba OR b
a & ba AND b
a<<aを左に1ビットシフト(数値としては2倍になる)
a>>aを右に1ビットシフト(数値としては半分になる)
a = 0xD ( 16進数D 2進数1101 10進数13 )
b = 0x9 ( 16進数9 2進数1001 10進数 9 )
とすると、
1101 OR  1001 = 1101 ・・・13(10進数)
1101 AND 1001 = 1001 ・・・ 9(10進数)
1101 左1ビットシフト = 11010 ・・・26(10進数)
1101 右1ビットシフト = 110   ・・・ 6(10進数)

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <script>
    var a = 0xD; // 16進数D 2進数1101 10進数13
    var b = 0x9; // 16進数9 2進数1001 10進数 9 
  </script>
  <handler name="oninit">
    t.addText(a|b);t.addText("\n");     // 1101=13
    t.addText(a&amp;b);t.addText("\n"); // 1001=9
    canvas.bitShift();
  </handler>
  <method name="bitShift">
    <![CDATA[
      t.addText(a<<1);t.addText("\n");  // 11010=26
      t.addText(a>>1);t.addText("\n");  // 110=6
    ]]>
  </method>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

比較演算

値の大小を比較評価します。比較の結果、真(true)か偽(false)が返ってくるので、それをもとに条件分岐します。

XML文書では < とか > は特殊な記号として扱われるので、必ず <![CDATA ~ ]]> で囲います。

サンプルは全部trueなので、テキスト表示のメソッドがすべて実行されています。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    <![CDATA[
      var a = 10; var b= 20;
      if(a==10) t.addText("aは10に等しい \n");
      if(a!=b)  t.addText("aはbと等しくない \n");
      if(b>a)   t.addText("bはaより大きい \n");
      if(a>=10) t.addText("aは10以上 \n");
      if(a<b)   t.addText("aはbより小さい \n");
      if(a<=10) t.addText("aは10以下 \n");
    ]]>
  </handler>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

論理演算

2つの値を評価して、その結果を論理値(true/false)で返します。

XML文書では & は特殊な記号として扱われるので、必ず <![CDATA ~ ]]> で囲います。

!a aではない時:true
aである時:false
a&&baとbの両方がtrue:true
それ以外:false
a||baかbのどちらかがtrue:true
それ以外:false

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <handler name="oninit">
    <![CDATA[
       var a = 10; var b = 20; var T = true; var F = false;
       if(T)  t.addText("Tはtrueである \n");
       if(!F) t.addText("Fはtrueではない=falseである \n");
       if( a==10 && b==20) t.addText("a=10 b=20は両方true \n");
       if( a==20 || b==20) t.addText("a=20はfalseだが、b=20はtrue \n");
 
    ]]>
  </handler>
  <text id="t" fontsize="15" multiline="true"/>
</canvas>

条件演算

  (A) ? (B) : (C) ;

if文なら数行になるような処理を、これなら1行で済ませることも可能です。

サンプルでは、ボタン名とテキストエリアの高さを制御しています。

この内容を表示するためには Adobe Flash Plugin が必要です。

<?xml version="1.0" encoding="UTF-8"?>
<canvas proxied="false" bgcolor="0xeeeeee"> 
  <simplelayout/>
  <button>開く
    <handler name="onclick">
      this.setAttribute('text',this.text=="開く"?"閉じる":"開く");
      t.animate('height',t.height==0?150:0,500,false);
    </handler>
  </button>
 
  <text id="t" width="100%" height="0" bgcolor="0xffffaa" multiline="true">
     あいうえお<br/>
     かきくけこ<br/>
     さしすせそ<br/>
     たちつてと<br/>
     なにぬねの<br/>
     はひふへほ<br/>
     まみむめも<br/>
     らりるれろ<br/>
  </text>
</canvas>