« RZ1Basic v0.2.5 公開 | トップページ | ROBOBASIC講座(IF...THEN...) »

ROBOBASIC講座(DIM...AS, CONST)

【DIM...AS (ディム?...アズ)】
 変数を宣言する(DIMはDimentionの略)
 構文:DIM [変数名] AS [変数型]
 例: DIM A AS BYTE     BYTE型でAを宣言
    DIM B AS INTEGER  INTEGER型でBを宣言

【CONST(コンスト?)】
 定数を宣言する(CONSTはConstantの略)
 構文:CONST [定数名] = 数字
  例:CONST ID=0


今回は、数値、変数および定数についてです。プログラミングの基本なので、マニュアルを見て頂ければOKです。かなり重複するところもあると思いますが、いちおう書いておきます。

《数の表記》
一般に使う、10進数以外に、2進数、8進数、16進数を扱うことが出来ます。10進数以外の場合は、それが何進数かを表す記号を数値の前に付けます。その記号は「"&"+英語の頭文字」なので、ついでに英語でなんというのかも覚えてしまいましょう!ちなみにHexadecimalの Hexa- はヘックスレンチ(六角レンチ)とか、テレビ番組のヘキサゴンとかで耳にしますが、「6」を意味します。
Finderscreensnapz003

これまでにもROBOBASIC講座の中で何の説明もなく16進数の表記をよく使ってしまってましたが、ROBOBASICに限らず、プログラムでは16進数はよく使いますし、便利なので、慣れておくといいと思います。あと、この16進数の接頭記号ですが、ROBOBASICでは"&h"と書きますが、C言語とかでは"0x"になります。このROBOBASICの講座内、統一した表記をしていませんので、あしからず。。

《進数と桁数》

Pagesscreensnapz00110進数以外で表す場合、「何で、わざわざ10進数以外を使うのか?」なんですが、ひとつには桁を揃えて解りやすくする為だと思います。Pagesscreensnapz003例えば、8ビット とか、16ビットとか言いますが、2進数で表せば、8桁、16桁になります。8進数も16進数も2の乗数なので同じ感じです。コンピュータはバイト(8 ビット)単位で物事を扱います。バイト単位で数値を扱う時、16進数が便利になります。

16=2の4乗です。
2進数だと4桁、16進数だと1桁で左の表の様に表すことができます。なので、1バイト=8ビット(4乗+4乗)は、16進数2桁で表すことができるということですね

ちなみに当たり前と言えば当たり前なんですが、16進数の2桁を2進数に書き換える時、例えば、&hA3は、Aは1010で、3は0011なので、繋げればOKで、&b10100011です。その逆の2進数を16進数に書き換えるときも同じ要領でできますので、&h0から&hFまでの2進数を覚えておけば、2進数<->16進数の変換はバッチグ〜〜

《数の範囲》
ROBOBASICで変数を扱う場合、その変数がどんな変数なのかを定義しなくてはいけない仕組みになっています。ROBOBASICでは、BYTE型と、INTEGER型の、2種類の変数を利用することができます。
Pagesscreensnapz009

他のプログラム言語では、これ以外にもいろいろな型が使えるもありますが、兎に角、この2つだけで、負の数を扱える型はありません。それぞれ表にあるように、BYTE型の方は、0から255までの数値、つまり1バイトの数値、INTEGER型の方は、0から65535までの数値、つまり2バイトの数値を利用できます。

《計算結果が型の範囲外になると》
型に慣れてない方は、以下のようなことが起こることを頭の片隅にでもおいといて下さい。変数だと、その変数がどんな数値になっているかプログラミングの中では解りにくいですからね。

BYTE型
 例:255+1=0
   255+2=1
   0-1=255
   0-2=254

INTEGER型
 例:65535+1=0
   65535+2=1
   0-1=65535
   0-2=65534

《文字列の型はないけど》
ROBOBASICには、文字列用の型はないのですが、

DIM A AS BYTE
DIM B AS INTEGER

A="5"
B="B"

のような使い方ができます。BYTE型でも、INTEGER型でも1バイトしか無理みたいです。つまり、

A="AB"
B="CD"

とした場合、

A=65
B=67

になります(ASCII表参照 )。
とりあえず、数値と文字は違いますので

A="5"
B=5

は、B=5ですが、A=53です(ASCII表参照)。

《コマンドと変数/定数/数値》
ROBOBASICのコマンドの引数として、何が使えるのか、というか、roboBASICでコンパイルした時、エラーが出るか出ないかを調べてみましたので、プログラミングの際の参考にして下さい。ちなみに、変数可のものは、定数も、数値も可、定数可なものは、数値も可です。INT可は、INTEGER型とBYTE型のどちらの変数でも使用でいます。INT不可なものは、BYTE型の変数のみ使用できます。RZ1Basicでは、コンパイル時これらのチェックをしていませんので、その内、これらのチェックにも対応させなくてはいけないですね。

(a,b,c 順)
Pagesscreensnapz005

|

« RZ1Basic v0.2.5 公開 | トップページ | ROBOBASIC講座(IF...THEN...) »

ROBOBASIC講座」カテゴリの記事

コメント

今晩は!
毎日寒いですね。

進数・変数・数値などなど、デザイン系の
私には、頭の痛くなる事柄です。

テンプレートMAINループのフローチャートは、
基本を理解する上で参考になります。

出来ましたら、
Template Ploguram For GameConのフローチャートと解説を、
お願い致します。
虫の良い話で、すみません。

投稿: shirasu | 2008年2月27日 (水) 17時13分

shirasuさん
いつもありがとうございます。
了解しました、GameConのフローも作ってみますね。

投稿: micono | 2008年2月28日 (木) 10時42分

ブログ拝見させてもらっております。
いろいろ勉強させてもらって、有難う御座います。
何も解らなかった私が、お蔭様でロボザックを、私の思った様に
動かすことが出来るようになりました。
RZIBasicも使わせてもらっております。
ところでロボザックは歩けるようになりましたか、お蔭様で私は20間接で
歩けるようになりました殆んど倒れないです。
モーションを作成しロボザックに挿入し動作させると一度目はよくても
二度目は駄目、何故だろうと思いました。試行錯誤の結果わかりました。
問題は股間接の5番と23番の隙間に気が付いたのです。
これを直すにハタッピングビス 3mm-100mmのなべビスをフライホーン
に取り替える。電工ドライバーで目一杯閉める、なくなるまでがたが
この利点はシャフトが折れない事 私も3本折りました今では全部
入れています。今はとても調子が良いです。歩いても演技しても
倒れません。騙されたと思って一度やってみてください。
モーションを書き込んでおきます
20間接で動くと思います.
有難う御座いました。ブログを楽しみにしております。
'================================================
HIforward_walk: SPEED 2
MOVE24 111, 77,145, 93, 99,100, , , ,,,, , , ,,,, 86, 71,152, 91,102,100
HIforward:
SPEED 10
MOVE24 90, 107, 105, 105, 110,100, 90, 40, 80, 70, ,, 100, 40, 80, 70,,, 114, 76, 145, 93, 94,100
MOVE24 87, 52, 143, 122, 114,100, 80, 40, 80, , 80,, 105, 40, 80, ,,, 113, 78, 145, 90, 90,100
MOVE24 85, 42, 163, 112, 114,100, 80, 40, 80, 60, ,, 105, 40, 80, 60,,, 110, 78, 145, 90, 90,100
SPEED 5
MOVE24 100, 66, 141, 113, 100,100, 90, 40, 80, 80, ,, 100, 40, 80, 80,,, 97, 83, 156, 80, 100,100
MOVE24 113, 71, 142, 105, 90,100, 100, 40, 80, 70,100,, 100, 40, 80, 70,,, 86, 97, 136, 85, 114,100
IF RR = 34 THEN GOTO STOP_1
SPEED 10
MOVE24 114, 76, 145, 93, 95,100, 100, 40, 80, 50, ,, 90, 40, 80, 50,,, 90, 107, 105, 105, 110,100
MOVE24 113, 80, 145, 90, 90,100, 105, 40, 80, ,110,, 80, 40, 80, ,,, 86, 56, 143, 122, 114,100
MOVE24 112, 80, 145, 90, 90,100, 105, 40, 80, 70, ,, 80, 40, 80, 70,,, 86, 46, 163, 112, 114,100
SPEED 5
MOVE24 97, 80, 156, 80, 100,100, 100, 40, 80, 50,100,, 90, 40, 80, 50,,, 98, 64, 141, 110, 100,100
MOVE24 87, 96, 136, 85, 114,100, 100, 40, 80, , ,, 100, 40, 80, ,,, 113, 72, 142, 105, 90,100
IF RR = 34 THEN GOTO STOP_2
GOTO HIforward
'***************************************************
HI_forward_walk:
SPEED 2
MOVE24 111, 77,145, 93, 99,100, , , ,,,, , , ,,,, 86, 71,152, 91,102,100
Loop:SPEED 10
MOVE24 80,101,105,107,113,100, 95, 40, 80, 60, ,,105, 40, 80, 60,,,115, 77,140,100, 91,100
MOVE24 85, 51,143,122,106, , 90, , , 70, 90,,110, , , 70,,,106, 88,140, 87, 97,100
MOVE24 95, 43,163,112,100, , , , , 70, ,, , , , 50,,, 98, 89,143, 87, 98,100
SPEED 5
MOVE24 102, 64,141,112, 98,100, 105, , , 80, ,,105, , , 80,,, 97, 84,154, 80, 98,100
MOVE24 112, 73,142,104, 95, , 100, , , 70,100,,100, , , 70,,, 87, 99,134, 85,108,100
IF RR = 34 THEN GOTO STOP_1
SPEED 10
MOVE24 115, 77,140,100, 93,100, 100, , , 50, ,,100, , , 50,,, 90,108,105,107,113,100
MOVE24 108, 85,140, 87, 97, , 105, 40, , ,110,, 95, , , ,,, 85, 55,143,122,105
MOVE24 98, 91,140, 87, 97, , 105, , , 70, ,, 95, , , 70,,, 98, 44,163,112, 98,100
SPEED 5
MOVE24 94, 83,154, 80,100,100, 110, , , 50,100,, 90, , , 50,,,102, 64,141,112, 98,100
MOVE24 82, 98,134, 85,109, , 100, , , , ,,100, , , ,,,110, 74,142,104, 94,100
IF RR = 34 THEN GOTO STOP_2
GOTO Loop
RETURN
'***************************************************
'*******************************************************************
STOP_2:
SPEED 5
MOVE24 78, 97,115,100,115,100, 100, 40, 80, 40,100,,100, 40, 80, 40,,,111, 76,145, 93, 93,100
SPEED 2
GOTO Standard_pose
RETURN
STOP_1:SPEED 5
MOVE24 111, 77,145, 93, 97,100, 100, 40, 80, 40,100,,100, 40, 80, 40,,, 80, 88,130, 97,107,100
SPEED 2
GOTO Standard_pose_1
RETURN
'**************************************************************

投稿: noboru aoki | 2009年12月 9日 (水) 10時43分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ROBOBASIC講座(DIM...AS, CONST):

« RZ1Basic v0.2.5 公開 | トップページ | ROBOBASIC講座(IF...THEN...) »