[↑]
プチコン4複製リファレンス
DEF
1. DEFを使うと下記のような命令を独自に定義できる

DEF ユーザー定義命令について

1) USER ※引数なし、返値なし
2) USER X,Y ※引数あり、返値なし
3) A=USER(X) ※引数あり、返値1つ
4) USER X OUT A,B ※引数あり、返値複数

DEF共通ルール

・DEF~ENDまでが定義範囲となる。
・DEF~END範囲で定義された変数やラベルはDEF外から使用できない(ローカル変数)。
・DEF~END範囲をまたがったGOTO,GOSUBはできない。
・COMMON を付けることで定義したプログラムスロット外から使用可能な命令を定義できる。

2. 引数と返り値のないユーザー定義命令を定義する

DEF 定義名

' 文字表示
DEF FUNC
PRINT "SAMPLE" 
END
' 呼び出し
FUNC
3. 引数があり返値がないユーザー定義命令を定義する

DEF 定義名 引数[,引数…]

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

' 指定位置に文字表示
DEF FUNC2 X,Y
LOCATE X,Y
PRINT "SAMPLE" 
END
' 呼び出し
FUNC2 10,4
4. ユーザー定義関数(返値が1つだけあるユーザー定義命令)を定義する

DEF 関数名([引数[,引数…]])

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

返値

結果として呼び出し側に返したい値は、DEF~END内でRETURN命令を使用して設定する(RETURN ANS のような記述)

'足し算
DEF ADD(X,Y)
RETURN X+Y
END

' 再帰を使った階乗計算
DEF FACTORIAL(N)
IF N==1 THEN RETURN N
RETURN N*FACTORIAL(N-1)
END

' 文字列反転
DEF REVERSE$(T$)
VAR A$="" 'ローカル文字列
VAR L=LEN(T$) 'ローカル
WHILE L>0
 A$=A$+MID$(T$,L-1,1)
 DEC L
WEND
RETURN A$
END

' 呼び出し
PRINT ADD(10,5)
PRINT FACTORIAL(4)
PRINT REVERSE$("BASIC")
5. 複数の返値を持つユーザー命令を定義する

DEF 命令名[引数[,引数…]] OUT 返値[,返値…]]

引数

関数に渡したい引数があれば必要な分の引数名をカンマで区切って指定する
・ここで指定した引数名はDEF~END内で変数として使用できる。

返値

結果として返したい数分の変数名をOUTの後に記述する
・DEF~END内でここで指定した変数に値を代入すると、呼び出し側に値を返す事ができる。

' 足し算と掛け算
DEF CALCPM A,B OUT OP,OM
OP=A+B
OM=A*B
END

' 呼び出し
CALCPM 5,10 OUT P,M
PRINT P,M
6. 可変長の引数や可変長の返値を持つユーザー定義命令の定義

DEF 命令名 * [OUT *]

・引数だけ可変長にしたり、返値だけ可変長にしたりする事も可能。

引数

命令名の後ろに*(アスタリスク)を書くと、引数の数が可変である事を宣言できる
・DEFARGC,DEFARG,TYPEOFを使用して引数の数・内容・型を調査できる。

返値

OUTの後ろに*(アスタリスク)を書くと、返値の数が可変である事を宣言できる
・DEFOUTC,DEFOUTを使用して返値の数を調査したり、返値を設定したりできる。

DEF VARFUNC * OUT *
 FOR I=0 TO DEFOUTC()-1
  DEFOUT I, DEFARG(I)*2
 NEXT
END
このサイトについて
当サイトはNintendoSwitch™用プログラミングソフト「プチコン4」(海外名:SmileBASIC4)の非公式マニュアルサイトです。
サイトの内容はソフトの開発・販売元である株式会社スマイルブーム公式リファレンスサイトから リアルタイム(最短24時間更新)で取得・表示していますが、自動処理の為、内容がおかしくなっている場合があります。
正確な内容は公式サイトでご確認ください。

2020/06/04
by みむ*mim
OK
|