14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

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

買ったので。いちいちソフトを中断して説明書を画面に表示して、とするのが面倒だったので、基礎文法だけでもまとめておくことに。なお、他の種類の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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
14
Help us understand the problem. What are the problem?