コンピュータを楽しもう!!

今、自分が面白くていろいろやってみたことを書き綴りたいと思います。連絡先はtarosa.yでgmail.comです。

OsoScript Ver0.02の仕様

OsoScript Ver0.02の仕様をまとめてみたいと思います。

処理の流れ

処理はmain()関数から始まります。必ず、function main(){  }を書いてください。

コメント

コメント文は、

  • 一行コメント #.......
  • 複数行コメント #[.....改行有り.....#]となります。

型の区別ははありません。ただし、数値の計算は、内部的にすべてfloatです。
宣言は、グローバルとローカルと配列宣言だけです。グローバル変数は、関数宣言より前に宣言してください。配列変数は、関数宣言の前に宣言したものはグローバルとして、関数内部で宣言したものはローカルとして扱われます。ローカル変数は、関数内部で宣言します。

#グローバル変数宣言
global abc; ・・・・・・・・コマンドの後ろにはセミコロンを付ける。
global def = 10; ・・・・・・宣言時に代入できる。
global ghi = "TEST";・・・・・文字はダブルクォーテーションでくくる。
global gjkl = 'テスト';・・・文字はシングルクォーテーションでもくくれる。
array y[10];・・・・・・・・・arrayを用いた配列宣言では値の代入不可。
global u[0] = 10; ・・・・・直接配列宣言も可能。
global u[2] = '配列'; ・・・飛ばしての宣言も可能。

#メイン関数
function main(){
local xyz = 0;   #ローカル変数宣言
array qwe[10];   #ローカルの配列宣言

}

変数

変数に関して、配列番号の無い変数は、すべて配列[0]番の変数となります。すなわち、

abc==abc[0]

となります。また、宣言した時点で、変数は0となります。文字としては、"0"が入っています。OsoScriptでは、変数の値をすべてテキストで持っています。

変数の条件

  • 変数は現在、100個までしか使えません。同時に使用できる変数が100個までということです。
  • 変数の文字数は12文字までです。使えるのは英字先頭で英数字です。また"_"も使えます。
  • 変数の大文字小文字は区別します。
  • 変数の多重宣言のチェックはしていません。先に宣言した方が優先されます。
  • 同名のグローバル変数とローカル変数は、ローカル変数が優先されます。
  • 【要注意・バグとも言う】12文字を超えた文字を代入して宣言すると、それ以降に宣言した変数が無視されます。これではまることがあります。

ブロック

ブロックは{}で囲みます。ただし、ifやwhile、forといった構文でしか使用できません。

関数定義

関数定義は、function 関数名() {} で行います。関数名は12文字以下です。関数内部で関数の宣言はできません。

function main(){
local u;

  u = aaa( 'テスト', 4 );

}

function aaa( bb,  vcv ){
  print( 0, 0,0, bb , rgb(31,31,31) );
  return( 1 );
}

引数は、()内でカンマで区切って宣言します。【注意】引数は8個までしか取れません。

if文

if文はif(){}elseif(){}else{}のように書きます。

if( a==0 ){
  print( 0, 0,0, 'ゼロ' , rgb(31,31,31) );
}
elseif( a==1 ){
  print( 0, 0,0, 'イチ' , rgb(31,31,31) );
}
elseif( a==2 ){
  print( 0, 0,0, 'ニ' , rgb(31,31,31) );
}
else
  print( 0, 0,0, 'その他' , rgb(31,31,31) );
}

while文

while文はwhile(){}のように書きます。

a = 0;
while( a<5 ){
  box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 );   #黒く塗る
  print( 0, 0,0, a, rgb(31,31,31) );       #aの値を書く
  a = a +1;
}

break;で強制的にループから抜けます。
while( true ){
  box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 );   #黒く塗る
  print( 0, 0,0, a, rgb(31,31,31) );       #aの値を書く
  a = a +1;
  if( a==5 ){  break;  }
}

for文

for文はfor(初期化,終了条件,増分値){}のように書きます。

for( i=0, i<10, 1 ){
  box( 0, 0,0, 2*6,,11, rgb(0,0,0), 1 );   #黒く塗る
  print( 0, 0,0, a, rgb(31,31,31) );       #aの値を書く
}

c言語と違い、カンマで区切ります。また、増分値は、for文開始後、変更されません。注意してください。

日本語の対応

基本的に日本語(S-JIS)が通りますが、文字コードに0x22を含むものをダブルクォーテーションでくくると、おかしくなります。その場合は、シングルクォーテーションでくくってください。

条件式の評価

条件文の評価は、真が0以外、偽が0です。よって、複数条件の評価は下記のようになります。また、true、falseも使えます。

  • 真 0以外, true
  • 偽 0 , false
AND条件の表現(論理積)
if( (A==0)*(B==0) ){ }
条件結果を掛け算する。

OR条件の表現(論理和)
if( (A==0)+(B==0) ){ }
条件結果を足し算する。

比較演算子

比較演算子は下記です。

  • より大きい : >
  • より小さい : 
  • 以上    : >=
  • 以下    : <=
  • 等しい   : ==
  • 等しくない : !=

四則演算子

  • 加算    : +
  • 減算    : -
  • 乗算    : *
  • 除算    : /
  • 余り    : %

ビット演算子

NDSに依存しない実装コマンド

  • int( ) 小数部を切り捨てます。
  • exec(Osoスクリプトファイル名) 指定のOsoScriptを実行します。

DSに依存する実装コマンドは、2009/12/27のブログ「DS版OsoScriptを作った - コンピュータを楽しもう!」に書いています。
新規追加コマンドは、inputです。

inputコマンド  input(キーボード表示画面,キー代入変数,初期文字列,入力許可文字数);

inputコマンドは、キーボード表示画面に、タッチスクリーンの画面を指定し、タッチしたキーの内容を保存する変数と初期文字列があればその文字列、そして、入力許可文字数を指定します。現在は、12文字までしか使えないので、最大12となります。

以上がOsoScript Ver0.02の仕様です。

本当にやりたいこと

(ブログの終わりにやりたいことを書いておきたいと思います)

  • 求職活動・・・このブログで興味を持った人一声かけてください。m(_ _)m
  • Androidプログラム
  • Web系のプログラム