Basic イントロダクション
Android6.0以上では起動時に
SDカードにsaveを許可するか尋ねるパーミッションダイアログが表示されます。
saveに外部SDカードを使用する場合は’許可:Allow’を選択して下さい。
実行
プログラムの入力
行番号 コマンド パラメータ
[例]
100 print
"parameter" [enter]
コマンド
パラメータの間は区切りとして一文字の空白が必要ですが、
パラメータが括弧やダブルクォーテーションで始まる時は必要ありません。
コマンドは大文字も小文字も使えます。
表示の上書きと[enter]で修正できます。
[参照] EDIT
AUTO ステートメント
行番号がない時は即実行されるダイレクトコマンドになります。
使用文字
: コロン
1行に複数の文を書くマルチステートメントの区切りに使います。
, コンマ
複数のパラメータの区切りに使います。
[例]
box(5,2)=7:print a,b
行番号だけの時はその行の消去となります。
[例]
100
[enter]
ラベル
飛び先の指定は行番号の他に全般的にラベルが使用出来ます。(on~goto,gosub含む)
ラベルは行の先頭で名前の後ろに ':'コロンを付けます。
[例]
100 label:
110 input a$
120 print a$
130 goto label:
もう一つの指定法はラベル名の前に * を付けます。
[例]
100 *label
130 goto *label
ver 3.15
ダブルクォーテーション""で囲った
ポケットコンピューター式のラベルに対応しました。例) "label"
定数・変数
定数は実数型と文字型の2種類あります。
文字型は""で囲まれて表されます。
[例]
3.14
"ABC"
実数、変数は double (64bitの浮動小数点型)で
有効桁15桁の精度を持っています。
変数はデータを出し入れできる箱のようなものです。
文字変数は変数名の後ろに $ が付けられます。
変数の値の代入は = を使います。
変数は最初に現れた時に自動宣言されます。
変数はグローバルとローカル2つのスコープを持ちます。
通常の宣言をされた変数はグローバル変数となり全体で参照、代入できます。
ユーザー定義のfunctionの内側で宣言をされた変数はローカル変数となります。
ローカル変数はユーザー定義の内側でしか参照、代入できません。
変数名の大文字と小文字の違いは区別されます。
参照:'func'命令‐グローバル変数定義位置の注意点 も一読して下さい。
[例]
10 no=5 :
name$="tree" : 'global
20 func test(f)
30 d=f+n : ' f,d local
40 endfunc d
配列変数
配列変数は番号を付けて多くのデータを扱うことができる変数です。
多重配列も取り扱うことができます。
配列変数もグローバルとローカル2つのスコープを持ちます。
[例]
10 dim no(20), a$(20) : ' The range
0-19
20 dim box(80,60) : '
Multidimensional array
計算式
四則演算
優先順に (括弧内は例です)
^ (2^8) 指数演算(べき算)
- (-16) マイナス符号
* , / (5*2 , 10/3) 乗算、除算
\ (10\3) 整数の割り算
mod (10 mod 3) 剰余(除算の余り)
+ , - (12+4 , 20-2) 加算、減算
括弧で囲まれた式が優先して計算されます。
[例]
print
5*(4+6)
50
*日本での'¥'(キャラクターコード92)は'\'(逆スラッシュ:同じく92)として扱われ、表示されます。
関係演算
2つの値を比較して結果を(真:-1:、偽:0)で返します。
IF文の条件判断等に使われます。
A= B A と B は等しい。
A<>B (><) A と B
は等しくない。
A<B A は
B より小さい。
A>B A は B
より大きい。
A<=B (=<) A は B
以下。
A>=B (=>) A は B 以上。
[例]
10
a=15
20 if a>10 then print "large"
large
論理演算
整数に置き換えられてビット単位の演算が実行されます。
下の例は2進数で表現されています。
優先順に
NOT 0101 -> 1010
0011 AND 0101 -> 0001
0011 OR 0101 -> 0111
0011 XOR 0101 -> 0110
0011 INP 0101 -> 1101
0011 EQV 0101 -> 1001
[例]
10
a=val("&b1010")
20 b=val("&b1100")
30 c=a and b
40 d=a or b
50 print "and ";bin$(c)
60 print "or ";bin$(d)
and 1000
or 1110
ビットシフト演算
00010100<<2
-> 01010000
00010100>>2 -> 00000101
[例]
10
a=val("&b1010")
20 b=a>>1
30 c=a<<2
40 print "1010>>1 ";bin$(b)
50 print "1010<<2 ";bin$(c)
1010>>1 101
1010<<2 101000
複合代入演算子
変数に演算を行い同時に値を代入します。
書式: 変数名+=数値または計算式
演算タイプは a+=1 a-=1
a*=1 a/=1 等、四則演算が使用できます。
配列変数にも使用できます。
[例1]
変数 a に 5
を加えます。
10 a=2
20 a+=5
30
print a
7
[例2]
dt(5,7)+=b*2+1
配列変数dt(5,7)に b*2+1 の値を加えます。
文字列の演算
文字列を比較して結果を(真:-1:、偽:0)で返します。
"ABC"= "ABC" Equal
"ABC"<>"AB12" Not
equa
不等号での比較 <
>
"ABC"<"ABC" 等しいので偽:0になります。
"ABC1">"ABC" 文字数が多い方が大なので真:-1になります。
"ABD">"ABC" キャラクターコードの番号が大きいほうが大なので真:-1になります。
文字列の結合
+
により文字列の結合ができます。
[例]
10 a$="ABC"+"123"
20 print a$
ABC123
組み込み関数
値を決められた方法で計算してその値を返します。
[例]
a=sin(3.14/2)
print sqr(8)
計算優先順位
1. 括弧で囲われた式
2. 関数
3. 指数演算
4. 符号
5. 四則演算
6. ビットシフト演算
7. 関係演算
8. 論理演算
ユーザー関数
サブルーチンとして呼ばれるユーザー関数を定義することができます。
定義はどの場所でも配置することができます。
文字関数の場合、引数が文字列の場合は末尾に $ が付けられます。
関数定義内で出現した変数、仮引数の変数はローカル変数として定義されます。
f=pow(8,4) のような形で呼び出されます。
endfunc
の後ろに返し値を記述します。
[例]
10 f=pow(8,4)
20 print f
30 func pow(a,b)
40 c=a^b
50 endfunc c
拡張命令
Androidコントロール関係の拡張命令のコマンドは
先頭2文字+アンダーラインで種別が区別されています。
EX_ Androidコントロール関係拡張命令。
SP_ スプライト操作関係。
BG_ BGグラフィック操作関係。
BT_ Bluetooth操作関係。
RE_ 正規表現関係。
UI_ Androidユーザーインターフェイス関係。
ファイルシステム
ファイルを扱う基本カレントフォルダは次の2つがあります。
SDカード側を指定した場合。
/mnt/sdcard/ Android4.4
/storage/emulated/0/Android/data/and.bas/files/
Android10の場合
起動時のサブパス(カレントの後ろに続きます)
and.bas/ Android4.4
Android10以降の場合は末尾がfiles/なので初期状態でのサブパスはヌル(文字なし)です。
本体側を指定した場合。
/data/data/and.bas/ Android4.4
/data/user/0/and.bas/files/
Android10の場合
起動時のサブパス(カレントの後ろに続きます)
files/ Android4.4
Android10以降の場合は末尾がfiles/なので初期状態でのサブパスはヌル(文字なし)です。
SDカード側指定で起動した場合は通常ここで始まります。(and.bas/がサブパス)
/mnt/sdcard/and.bas/ Android4.4
/storage/emulated/0/Android/data/and.bas/files/
Android10以降の場合
(機種によってこれと異なる場合もありますが大半の機種はこの場所になります)
このサブパスの部分は'chdir'コマンドにより移動することはできます。
基本カレントフォルダより上位には上がれません。
新しいフォルダは'mkdir'コマンドにより作成できます。
キーアサインの状態は本体側に保存されます。
カレントフォルダ名は
curdir$() で取得できます。
コマンドでのセーブとロード。
save"file1.bas"
load"file1.bas"
先頭が"/"で始まる場合はフルパスを指定したことになります。
[例] load"/mnt/sdcard/my/test/file1.bas" 記述されたままの場所。
"/"で始まらない場合は、現在のカレントフォルダに継続するパス&ファイル名と判断されます。
[例] load"file1.bas" -> mnt/sdcard/and.bas/file1.bas
と判断される。
また、上位の階層を参照するのにDOS同様に"../"が使用できます。(複数可)
[例] load"../my/file1.bas" -> mnt/sdcard/my/file1.bas
と判断される。
(一度上へ上がってsdcard/に行き、my/に下がる)
*アクセス権限のないパスにはアクセスできません。
特殊ファイルアクセス
・adbコマンドを使う方法
準備 パソコンにADBをインストールする:
ADBは、Android SDKに含まれています。Android SDK Platform
Toolsをダウンロードして、パソコンにインストールしてください。
ダウンロード:
https://developer.android.com/studio/releases/platform-tools
開発者オプションの有効化: 次の手順に従います:
[設定]
> [端末情報] > [ビルド番号] に移動します。
ビルド番号を 7
回タップして、開発者向けオプションを有効にします。
USBデバッグを有効にする:
Androidデバイスで、開発者オプションを有効にしてUSBデバッグをオンにします。
デバイスとパソコンを接続する:
USBケーブルで、Androidデバイスをパソコンに接続します。
コマンドプロンプトを開く:
Windowsの場合はスタートメニューから「コマンドプロンプト」、Macの場合はターミナルを開きます。
必ず管理者権限で実行する必要があります。
デバイスを認識させる:
以下のコマンドを実行し、デバイスが認識されていることを確認します。
adb devices
認識されている場合は、デバイスシリアル番号が表示されます。
ファイルをロードする:
以下のコマンドを実行し、ファイルをデバイスへロードします。
adb
push <パソコン側のファイルパス> <デバイス側の保存先パス>
例:
adb push C:\Users\Public\test.txt /sdcard/test.txt
<パソコン側のファイルパス>: パソコンに保存されているファイルのパスを指定します。
<デバイス側の保存先パス>: デバイスにファイルを保存するパスを指定します。
ファイルをデバイスからパソコンへセーブする:
以下のコマンドを実行し、デバイスからファイルをパソコンへコピーします。
adb pull <デバイス側のファイルパス> <パソコン側の保存先パス>
例:
adb pull /sdcard/test.txt
C:\Users\Public\test_copy.txt
<デバイス側のファイルパス>:
デバイスに保存されているファイルのパスを指定します。
<パソコン側の保存先パス>:
パソコンにファイルを保存するパスを指定します。
・Android studioのDevice
Explorerを使用してファイルアクセスする方法もあります。
この方法は操作がシンプルです。
割り込み
各種割り込み機能が使えます。
error エラーがでたとき。 ('goto'-'resume')
stop STOP キーが押された時。
time$ 指定時間になった時。
interval インターバルタイマーが呼ばれた時。
play
音楽演奏チャンネル0の演奏が終了した時。
touch
タッチパネルがタッチ又はタッチオフされた時。
bluetooth
データを受信した時。
on (割り込み種類)
gosub 飛び先
return
エラー
プログラムが実行不能な場合、エラーメッセージ、行番号を出力してコマンドレベルに戻ります。
Autorun
起動時カレントに "autorun.bas" ファイルがある場合、読み込んで実行されます。
初期の設定などに使われます。
スクリーンモード
当BASIC は次の4つのスクリーンを持っています。
T - テキストスクリーン
G
- グラフィックスクリーン
S - スプライトスクリーン
B - バックグランドグラフィックスクリーン
スプライトは256個使用出来ます。
各画面は'PRIORITY'ステートメントにより優先順位を決めることができます。
画面サイズは各機種によって異なります。
画面の縦横方向は起動時の状態によって決定されます。
リファレンスの見方、表記
Command Parameter [,Parameter]
'Command' は大文字でも小文字でも記述できます。
[] で囲まれたパラメータは省略できます。
'...' は以下にいくつかのパラメータを並べて記述することができます。
|A or B| で囲われた表記はどちらか一つを選んで記述します。
[例] [結果] で使用例や結果が示されています。
例では行番号が省略して記述されている場合があります。
[smp_サンプルプログラム名.bas]の表記のあるものはストレージに同梱されているので
ロードして実行することができます。