Posted at

プチコン3号(SMILE BASIC)基礎文法最速マスター

More than 3 years have passed since last update.

買ったので。いちいちソフトを中断して説明書を画面に表示して、とするのが面倒だったので、基礎文法だけでもまとめておくことに。なお、他の種類のBASICについて、慣習などは不勉強のため、「こういう書き方はしない」などの点があるかもしれないところはご了承を。


DIRECTモードとEDITモード


EDITモード

ソースコードを記述するモード

DIRECTモード

EDITモードで記述したソースを読み込んで実行する。


Hello, World!

EDITモードのSLOT 0に記述。


EDIT-0

PRINT "Hello, World!"


記述したら、DIRECTモードに切り替えて、RUNする。


DIRECT

RUN 0



コメント

行の先頭にシングルクォート。


EDIT-0

'This is a comment.



変数

数値の場合、とりあえず、このような感じで良い。


EDIT-0

A = 123



STRICTモード

「OPTION STRICT」の命令を書いた場合、VAR命令で変数の宣言をしないとエラーになる。


EDIT-0

OPTION STRICT

VAR A = 123


変数の型

変数名の後に「サフィックス」という記号をつけることで、変数の型を自分で指定できる。「%」は整数型、「#」は実数型、「$」は文字列型。サフィックスをつけない場合は実数型。ただし「OPTION VARINT」の命令を書いた場合、サフィックス無しは整数型。


EDIT-0

OPTION STRICT

VAR I% = 123
VAR D# = 3.14
VAR S$ = "XYZ"

PRINT S$



数値


四則計算


EDIT-0

A = 5

B = 3

PRINT A + B
PRINT A - B
PRINT A * B
PRINT A / B


商(整数値)はDIV、余りはMODで求められる。


EDIT-0

A = 5

B = 3

PRINT A DIV B
PRINT A MOD B



インクリメントとデクリメント

インクリメントはINC、デクリメントはDECで行える。


EDIT-0

A = 5

INC A
PRINT A

DEC A
PRINT A



文字列


文字列の連結


EDIT-0

AGE$ = "34"

S$ = "ワタシハ" + AGE$ + "サイデス"
PRINT S$


文字列の長さ


EDIT-0

S$ = "アイウエオ"

PRINT LEN(S$)


文字列の切り出し


EDIT-0

S$ = "アイウエオ"

'アイウ
PRINT MID$(S$)



文字列の検索


EDIT-0

S$ = "アイウエオ"

'2
PRINT INSTR(S$, "ウ")

'-1
PRINT INSTR(S$, "カ")



文字列と数値の変換

文字列 -> 数値への変換にはVAL(文字列)、数値 -> 文字列への変換にはSTR$(数値)を使う。


配列

配列の宣言はDIM命令で行う。プチコン3号の場合、4次元まで対応。


EDIT-0

DIM INTARR[3]

INTARR[0] = 10
INTARR[1] = 20
INTARR[2] = 30

'10
PRINT INTARR[0]


文字列型の配列の場合は「$」のサフィックスをつける。


EDIT-0

DIM STRARR$[3]

STRARR$[0] = "ABC"
STRARR$[1] = "DEF"
STRARR$[2] = "GHI"

'ABC
PRINT STRARR$[0]



配列の操作

PUSHやPOPなどの命令もある。配列の要素数が増減する。


  • 配列の末尾に要素を追加:PUSH

  • 配列の末尾から要素を取り出す:POP(配列名)

  • 配列の先頭に要素を追加:UNSHIFT

  • 配列の先頭から要素を取り出す:SHIFT(配列名)

配列の要素数はLEN命令で取得できる。


EDIT-0

DIM INTRARR[1]

INTARR[0] = 10

PUSH INTARR, 20
PUSH INTARR, 30
PUSH INTARR, 40

TMP = SHIFT(INTARR)

'10
PRINT TMP

UNSHIFT INTARR, 50

TMP2 = POP(INTARR)

'40
PRINT TMP2

'50
PRINT INTARR[0]

'20
PRINT INTARR[1]

'30
PRINT INTARR[2]

'3
PRINT LEN(INTARR)



制御文


IF文


EDIT-0

SCORE = 80

IF SCORE >= 70 THEN
PRINT "CLEAR!"
ENDIF



IF-ELSE文


EDIT-0

SCORE = 60

IF SCORE >= 70 THEN
PRINT "CLEAR!"
ELSE
PRINT "FAILED."
ENDIF


WHILE文


EDIT-0

CNT = 0

WHILE CNT < 5
PRINT "LOOP " + STR$(CNT)
INC CNT
WEND


FOR文


EDIT-0

FOR CNT = 0 TO 4 STEP 1

PRINT "LOOP " + STR$(CNT)
NEXT


サブルーチン

ラベル文字列(@文字列)を利用する。


EDIT-0

'MAIN

PRINT "MAIN START"
GOSUB @SUB
PRINT "MAIN END"
END

@SUB
FOR CNT = 0 TO 4 STEP 1
PRINT "LOOP " + STR$(CNT)
NEXT
RETURN


BASIC言語なのでGOTOあり。ラベルを利用してGOTOを利用できる。が、ここではGOTOについては省略^^;


ファイル入出力

LOADやSAVEでファイルからの読み込みや、ファイルへの保存が可能。


その他

気が向いたら、何か追記するかもしれません。


参考資料

公式リファレンス

プチコン3号まとめwiki