プチコン3号入門講座

キーボードから文字入力をしよう


お手軽に文字入力ができるINPUT



 ゲームといえば表示ばかりに気を取られがちですが、実際は入力がないとゲームとしては成立しません。

 まず代表的な入力命令といえばINPUTです。INPUT Aとすることでキーボードから入力した数字は[ENTER]キーを押すことで変数Aに代入されます。文字列変数を使用することでキーボードから入力した文字列は変数に代入できます。

 PRINTと同様にINPUTINPUT "はんけい=";Rのような記述ができます。こうすることで画面にはんけい=と表示してキーボードから入力した数字を変数Rへ代入することができます。
 これは使えば「半径を入力したら円の面積を求めるプログラム」も簡単にできますね。

INPUT "はんけい=";R
S=R*R*PI()
PRINT "めんせき=";S

 ちなみにPI()は円周率の値を返す関数です。(16桁くらいの値が入っています)

 INPUTは1つの命令で複数の変数に代入することも可能です。

 INPUT "なまえ,ねんれい=";NAME$,AGE

 このように複数の変数を「 , 」(コロン)を挟んで記述しておいた場合、おちゃめ,16というように「 , 」(コロン)を挟んで入力することで変数NAME$には"おちゃめ"という文字列が代入され変数AGEには16という数値が代入されます。

 INPUTを実行時にはそこでプログラムが一時停止します。そのためリアルタイムに文字列を入力するようなタイピングゲームのようなものを作る場合には下記のINKEY$()を使ってください。

 数字や文字の入力はDIRECTモードで計算をするときと同じくキーボードの[ENTER]もしくはAボタンを押すまでは自由にカーソルを動かし修正が可能なのですが、INPUT使用時にAボタンを押した場合には予期せぬ動作になる場合があります。
 例えば「Aボタンを押したらINPUTで文字入力する」というプログラムを作った場合にはAボタンを押した瞬間にINPUTが実行されその時にAボタンを押しているためINPUTで文字入力をする前に空入力で終了となってしまいます。

《 INPUTの処理がスルーされてしまうプログラム 》
@LOOP
 IF BUTTON()==16 THEN @MOJI
 VSYNC
GOTO @LOOP

@MOJI
 INPUT "もじをにゅうりょく";MOJI$
 PRINT "にゅうりょくしたもじは";MOJI$;"です"
END
BUTTON()については「ボタンやスライドパッドでキャラを動かしてみよう」VSYNCについては「VSYNCとWAITでタイミングを取れ」を参照

 このプログラムを正常に動作させるための方法を書いておきます。

 まずは、「Aボタンが押されてない状態になった時にINPUTを実行する」というものです。
 そのためには IF (BUTTON() AND 16)==16 THEN @MOJI もしくは WHILE BUTTON()AND 16:WENDINPUTの前に入れてください。要するにAボタンを離すまではループを行いINPUTの処理が行われないようにしているわけです。
 また、そうしなくても IF BUTTON()==16 THEN @MOJIIF BUTTON(3)==16 THEN @MOJI に変えることで解決も可能です。BUTTON()関数の引数を3にすると離した瞬間のボタン情報を取得できるためです。

 あと単純に「ボタンを離す時間を用意する」という方法があります。これは INPUTの前にWAIT 30などを入れるだけです。30ならば0.5秒待つのでその間にAボタンを離せば良いです。
 INPUTでの入力が連続する場合はキーリピート(ボタンリピート)が働いてしまうため押したらすぐに離すという操作を行わないとすべてのINPUTの前に「Aボタンが押されてない状態になった時にINPUTを実行する」というのを入れることになるためAボタンを押したらすぐに離すという操作に慣れてもらうのも1つの方法だと思います。

 INPUTで入力待ちをしている時には画面に必ず「」が表示されてしまいます。それが気になる人はINPUT "すうじ=",A のように「 ;(セミコロン)の代わりに「,(カンマ)を使えば解決できます。
 INPUTでは上記のように1回の入力で「 , 」で区切って複数のデータを入力が可能です。しかし、「 ,(コロン)は区切りコード用に使われていて,という文字そのものが入力できないという問題もあります。それだと困るという場合のために用意されているのがLINPUTという命令です。

 LINPUT "すきなもじをにゅうりょく=";MOJI$

 こうすることで、「 , 」を含んだ自由な文字が入力可能です。LINPUTを使用すると「 ; 」を使用時でもINPUTにおける「 , 」使用時と同じく「 ? 」が出ることは無くなる代わりにLINPUT "もじ",A$のように「 , 」を使うことはできない)
 ただし、「 , 」による区切りが使えないためINPUTのように1つの命令で複数の変数に代入することはできません。あとLINPUTは文字列変数しか使えないため数値変数への代入を行いたい場合は下記のように文字列を数値に変換する必要があります。

 また、INPUTLINPUTは空入力した時(何も入力せずにENTERキーやAボタンを押した時)の処理が異なっていてINPUTでは使用された変数の値が維持されるのに対してLINPUTでは初期化されます。

《 INPUTとLINPUTの動作の違い》
CLS
A$="ABC"
INPUT A$
PRINT A$
画面にはA$の内容を示す"ABC"を表示

CLS
A$="ABC"
LINPUT A$
PRINT A$
変数A$は初期化されるため画面には何も表示されない

 空入力時に思ったように動かないという場合はこれが原因である可能性が高いです。

 INPUTを使用時に注意するのが、代入するのが数値変数の場合にキーボードから0〜9以外の文字(アルファベットや記号類)を入力してしまった場合です。この時はRedo from startとエラー表示されてもう一度再入力を求められてしまいます。
 これは仕様上仕方がないのですが、これを避けたいならば下記の方法を用いて一旦文字変数に入れた後に数値に変換すると良いでしょう。

 ゲームやツールを作ってセーブやロードするときのファイル名をプレイヤーに入力させたいという場合には、このINPUT命令よりもファイル名に使える文字のみが入力でき入力できる文字数に制限を付けることが簡単にできるDIALOG命令を使った方が便利です。
 RPGなどを作る際にキャラの名前等を入力させたい時にファイル名を入力するDIALOG命令では文字種や文字数が合わないのであれば下記INKEY$を使って自前で入力文字数を制限するプログラムを用意すると良いでしょう。


数値にする?それとも文字にする?



 文字列変数には文字列、数値変数には数値しか入らないためプチコン3号には文字列を数値に変換する関数が用意されています。それがVAL()関数です。(文字でも数値でも入る変数が欲しいという人は「プチコン3号で配列を扱う場合の注意点」で書いた自作関数INIT()を使ってみてください)

 A=VAL("123") とすれば"123"という文字列を123という数値にすることで数値変数Aに代入することができます。

 数字以外の文字列が含まれている場合はエラーが出ずにVAL()関数の値は0になる(例えばB$="123A"の時A=VAL(B$)とすると変数Aの値は0になる)ためB$="0"以外の時に変数Aの値が0になっていれば数字以外の文字が含まれているということが分かります。厳密には一部の例外があって、"E""e"に関しては指数扱いなので含まれていても問題ないし、"+"(プラス)"-"(マイナス)は指数記号"E"の直後に付いてれば指数の符号扱いなので問題ないし、文字列の先頭に"-"(マイナス)が付けば負数扱いになるので問題ないけどそれ以外の場所だとVAL()関数では0を返します。先頭に"+"が付いている場合は一見問題が無さそうに見えますが、プチコン3号においては先頭の"+"は符号としては認識されず0を返すため注意が必要です。
 そのため、1+2RGB(255,0,0)などは計算結果は定数となるわけですが、これを文字列にしてVAL()関数でVAL("1+2")とかVAL("RGB(255,0,0)")のようにして数値化しようとした場合には0になってしまいます。VAL("1+2")0ではなく3になるようにしたいという人は私の自作関数RVAL()関数を使用すると良いです。(RVALはRight Valueの略)

《 自作関数 RVAL()を使用すればどんな式でも数値化が可能 》

 ◎あらゆる式の値を求められる RVAL()関数
 
 公開キー 【 D4E1E73 】
 《注意》RVAL関数はスロット1を別途使用します。したがって、RVAL()のプログラムはスロット1以外でのみ正常に動作します。

 RVAL関数はRVAL("1+2")のように演算子を含む場合でも値を求めることができるし、RVAL("RGB(255,0,0)")のように関数が含まれていても値を求めることができます。プチコン3号で演算が可能な書式であればどれだけ長くて複雑な式でもその値を求めることが可能になっています。多くの言語、処理系に見られるevalに近いものですが、RVAL()は変数を含む式には対応していないという違いがあります。

 ちなみにRVAL()関数とは異なり、VAL()関数では100桁以上の数値を文字列化したものを数値に変換することができないという仕様になっています。例えばFORMAT$を使用して大きな数値を文字列化した場合には100桁を超える恐れがあります。しかし、それをVAL()関数で数値に変換すると0になります。

 VAL()関数が誤動作する例 A$=FORMAT$("%0.0F",1E100):B=VAL(A$)
   本来ならば変数Bの値は1E100(10の100乗)になるはずなのに0になってしまう

 100桁以上の数値を扱う機会は少ないのですが、数字のみで構成されている文字列をVAL()関数で数値化した際になぜか値が0になったという場合にはこれが原因であるというのを知っておくと良いかもしれません。


 VAL()とは逆に数値を文字列に変換するために用意されている関数がSTR$()です。A$=STR$(123)とすれば、123という数値が"123"という文字列になって文字列変数A$に代入されます。
 STR$()は文字列に変換する桁数を指定することが可能で例えば変数Sにスコアが入っている場合はSTR$(S,5)で5桁(5文字)に変換してくれます。スコアが50点の場合は"   50"のように先頭にスペースを3文字分入れることで5文字の文字列へと変換します。そのためゲームのスコア等を表示する場合にスコアの桁数で表示位置が変わる心配をする必要が無くなります。

 桁数を指定することによって表示の整形にも使えるのですが、STR$(S,5)の場合は(整数部と小数部と小数点を合わせた)全体で5桁が指定されるためそれを超える場合は自動的に指定桁数を超えてしまうため注意が必要です。。123.4は全体で5文字なのでSTR$(123.4,5)のように5桁指定した場合に"123.4"の5文字で収まるけど123.45は全体で6文字なのでSTR$(123.45,5)は5桁を指定しても小数点込みで"123.45"という6文字の文字列に変換される)

 また、桁数指定の有無に関係なく実数型の数値を文字列に変換する際には整数部と小数部を合わせて最大6桁(6文字)までしか文字列化できません。したがって、STR$(1234.56789)"1234.57"という文字列に変換されます。(1234.56789は整数部が4桁あるので自動的に小数部は2桁になり、小数第3位を四捨五入された値に丸められる)
 それと、「プログラムを入力してみよう」で書いたようにプチコン3号では10の308乗くらいの大きな数まで計算可能なのですが、実際の有効桁数は16桁未満であるため普通に計算して数値変数に入れた際にその結果を表示すると末尾に0がたくさん付く非常に桁数の大きな結果(例えばA=POW(2,1000):PRINT Aとすれば一目瞭然)が表示されてしまいます。しかし、STR$()を使って文字列化すると指数表示になりすっきりとした表示が可能になります。

 数値変数と文字列変数ではそれぞれできることが異なるため相互利用が可能になるVAL()STR$()は使う機会は多いのでプログラミングを始めたばかりの初心者であっても「今は使わなくてもこういう関数がある」ということは覚えておいた方が良いです。

 ちなみに標準の実数型の変数を使用している場合はSTR$()を使うと上記のように有効桁数6桁に丸められてしまうためそれをVAL()で数値に戻した場合にはSTR$()で文字列化する前の数値と異なるものになってしまうという点には注意が必要です。例えば1234567という値が変数Aに入っている場合、これは整数部が7桁ありそれが6桁になるように丸められるためSTR$(A)とすることで"123457e+06"という文字列へとなります。この"123457e+06"という文字列はVAL()関数を使っても元の1234567という値には戻りません。

 ただし、6桁を超える数値を文字列化した際にSTR$()で丸められるのは実数型変数に入っている値だけで整数型変数に入っている数値(整数型の数値)は文字列へと変換しても丸められません。したがって、7桁以上(絶対値が100万以上)の大きな整数を文字列化したい場合は整数型変数に代入するか、整数型で演算を行う演算子<<>>ANDORXORDIVのいずれか)を用いて整数型へと変換してSTR$で文字列化すれば整数型で使用可能な範囲内の数(-2147483648〜+2147483647の整数)ならば丸められずに文字列化が可能となります。

《 整数型を使用すればSTR$で100万以上の数値を丸められずに文字列化が可能 》
A=123456789:Z$=STR$(A)
実数型変数に入った数値
 Z$には"1.23457e+08"という丸められた値が入っている
 VAL関数を使って文字列から数値に変換しても123457000という値になり元の値には戻らない
A%=123456789:Z$=STR$(A%)
整数型変数に入った数値
 Z$には"123456789"という丸められてない値が入っている
 VAL関数を使って文字列から数値に変換したら123456789という元の値に戻る
A=123456789:Z$=STR$(A<<0)
整数演算で整数化された数値
 Z$には"123456789"という丸められてない値が入っている
 VAL関数を使って文字列から数値に変換したら123456789という元の値に戻る

《 FORMAT$でも数値を文字列に変換できる 》

 数値を文字列に変換できる関数としてはSTR$()とは別にプチコン3号では上記でも使用したFORMAT$()という関数があります。これは「コンソール画面による表示方法」で少し説明をしましたが、これは桁数をそろて分かりやすく表示を可能にする関数で数値を指定桁数で文字列にすることができます。
 すでに書いているように整数型の数値であればFORMAT$("%4D",A%)で「4桁の数値」として文字列に変換が可能です。4桁に満たない数値の場合は先頭にスペースが入りますが(これはFORMAT$("%04D",A%)のように指定桁数の前に0「ゼロ」を入れるとスペースではなくゼロが入る)、4桁を超える場合には自動的に桁数が拡張されます。このため「画面表示の整形」のためにFORMAT$()を使用している場合は設定している桁数よりも大きな数値の場合は表示がずれるということを知っておく必要があります。

 実数型の数値を文字列に変換する場合は整数部の桁数や小数部の桁数を別々に指定可能です。例えば、FORMAT$("%5.2F",A)とすれば、変数Aの値を(整数部と小数部と小数点を合わせた)全体で5桁、小数部が2桁の指定で文字列に変換ができます。つまり、整数部分は2桁を指定となります。この場合、小数第3位を四捨五入して変換が行われますが、全体が5桁を超える場合(整数部分が3桁以上になる場合)は実際の桁数分だけ文字数が増えるため表示の整形用にFORMAT$を使用している場合は表示がずれてしまうため注意が必要です。(10の100乗を表示したら1e+100といった指数表示ではなく100桁の数値として表示される)
 桁数の指定は特に制限は無く整数部や小数部を0桁に設定も可能です。小数部を0桁にすれば整数へと変換(小数第1位を四捨五入)が可能です。FORMAT$を使用時には整数部分に関しては指定した場合には自動的に不足分が確保されるため整数部の指定を0桁(全体桁数を0桁)にすれば何桁の数値でもその数値の桁数で表示される)

 したがって、FORMAT$("%.F",A)(これはFORMAT$("%0.0F",A)を意味する)のようにすれば実数型変数に整数値が入っている場合に整数部分の値を桁数を考えることなく文字列にすることが可能になります。しかし、VAL()関数の仕様で100桁以上の文字列は数値化できない(値が0になってしまう)ため「VAL()で数値化することを前提」として考えるとFORMAT$()を用いる方法では99桁までの数値(絶対値が1e100未満の数値)にしか対応できません。

 FORMAT$を使用時で難しいのは小数値です。これは整数部分に関しては自動的に拡張されますが、小数部分はそれが行われないため必要な桁数をあらかじめ指定しておく必要があるためです。FORMAT$()は指数で表示できないため0.0000001234みたいな数を表示するためには小数第何位までを表示するのかを指定する必要があるということです。もしも、数値によって小数点以下何桁まで必要かをいちいち考えるのが面倒ならばFORMAT$("%.340F",A)のように小数点以下340桁指定すれば解決が可能なのですが、それだと0が非常にたくさん並び見た目で分かりにくいし、上記のVAL()の仕様にあるように100桁を超える文字列はVAL()で正しく数値化できないという問題があるためこの小数点以下340桁確保するというやり方は不適でありFORMAT$()では値によって指定する桁数を変える必要があるのです。
 そういう面では自動的に丸められるもののSTR$()を使った方が使い勝手が良い場合もあります。STR$()であれば絶対値が大きい値、絶対値が小さい値といった0がたくさん並ぶ数値は自動的に指数表記してくれるため見た目では分かりやすいです。
 また、プチコン3号は内部ではすべて2進数で数値が計算されているため小数を正確に表現することはできず、FORMAT$()で小数部分の桁数を増やすと普段よく目にする丸められた値ではなく「2進数で計算されているが故に正確に表現できない状態の値」で表示されます。例えばFORMAT$("%.16F",1.9)とすれば1.9000000000000000ではなく1.8999999999999999と表示される(当然1.89999999999999991.9として扱われている)のですが、「仕様上のため小数値は正確に表現できない」ため計算を繰り返すごとに誤差となって現れてきます。それを回避する方法は「実数型の誤差による誤動作を回避するための方法」に詳しく書いています。

 小数を含むあらゆる数値を丸められずに正確に文字列化したいという場合は私の自作関数であるPSTR$を使用してみてください。PSTR$を使えば絶対値が大きな数、小さな数は自動的に指数表記になるためFORMAT$のように100桁制限を気にしなくても良いし、指数表記であるが故に普通に表示するよりも見やすくなります。そして、STR$()とは異なり、PSTR$()は指数表記になっても元の値から変化することはなくVAL()関数を使えば元の値に戻すことが可能です。(PSTR$はPrecise Stringsの略)

《 自作関数 PSTR$()を使用すればどんな値でも丸められずに文字列化が可能 》
A=123456789.1234567:Z$=STR$(A) Z$には"1.23457e+08"という丸められた値が入っている
 VAL関数を使って文字列から数値に変換しても123457000という値になり元の値には戻らない
A=123456789.1234567:Z$=PSTR$(A) Z$には"123456789.1234567"という丸められてない値が入っている
 VAL関数を使って文字列から数値に変換したら123456789.1234567という元の値に戻る


 ◎数値を誤差ゼロで文字列に変換する PSTR$()関数
 
 公開キー 【 NKADEE93 】

 PSTR$は文字列に変換してもVAL関数で数値化した際に元の値から変化することがないためゲームのセーブデータを作る際に活用が可能です。セーブしたデータをロードしたら値が変わってしまうと困るけどPSTR$ならばその問題をすべて解決できるということです。PSTR$をセーブデータで活用したいという場合はリスト中のSV=FALSESV=TRUEに書き直せば25桁の文字列(25桁未満の場合は先頭にスペースが付く)で変換されます。これによって、複数の数値を文字列化した場合も先頭から25文字ずつ切り出していってVAL関数で数値化すれば簡単に元に戻せるわけです。

 セーブデータ作りを超お手軽にできるMIKIさんの自作命令VFILERにもこのPSTR$が使用されています。(VFILERに関してはMiiverseのMIKIさんのトピックス(外部リンク)参照)
 なお、丸められても困らない数値の場合(大体6桁分が正しければ問題ない場合)はFORMAT$PSTR$を使ったりとかを全く考えず普通にSTR$を使って何ら問題はありません。

 プチコン3号のデフォルトの関数と私の自作関数といろいろ混じっていて初心者には分かりにくい部分がありますが、初心者向けにまとめると次のようになります。

 ◎文字列を数値化したい場合はVAL()関数を使う
    VAL()関数で正しく数値化できない場合は私の自作関数RVAL()を使うことで解決できる

 ◎数値を文字列化したい場合はSTR$()関数を使う
    STR$()で正しく文字列化できない場合は私の自作関数PSTR$()を使うことで解決できる

 標準で用意されている関数の使い勝手に不満があっても自分の要望に合うものを自分で作ってしまえばそれは改善できるというわけです。自作関数の作り方や様々な注意点に関しては後述の「自作関数を作ろう」を参照してください。自分では作れないという人は、私や他の人が作った自作関数を活用するというのも1つの方法です。


リアルタイムに入力ができるINKEY$()



 INPUTを使ったゲームの場合は入力時に一旦動きが止まってしまいますが、リアルタイムゲームの場合はそれでは困ります。
 そこで用意されているのがINKEY$()です。

 K$=INKEY$()とすることで押したキーの1文字分が文字列変数K$に入ります。

 このINKEY$()を使えばINPUTでは実現できないリアルタイム性のある文字入力プログラムを作ることができるのですが、それだけではなくRPGなどを作る場合には「名前として最大5文字まで入力できるようにしたい」などのINPUTでは実現できないことも可能になります。

《 文字数を指定して入力可能にするプログラム 》
CLS
SYSBEEP=0
@LOOP
 M=5
 B=BUTTON(2)
 K$=INKEY$()
 L=LEN(N$)
 IF K$!="" AND L<M THEN BEEP 12:N$=N$+K$
 IF B==128 AND L>0 THEN BEEP 40:N$=LEFT$(N$,L-1)
 LOCATE 0,0
 PRINT "なまえ(さいだい";M;"もじ)=";N$,
 VSYNC
IF B!=16 OR L==0 THEN @LOOP
BEEP 70

 文字の1文字削除(バックスペース)Yボタン、決定はAボタンです。最大文字数は変数Mの値で決めることができます。
 IF K$!="" AND L<M THEN BEEP 12:N$=N$+K$は、何かキーを押していてかつすでに入力している文字数が最大値に達してない時はその時点で入力している文字を示す変数N$に押したキーの文字が追加される動作をします。IF B==128 AND L>0 THEN BEEP 40:N$=LEFT$(N$,L-1)は入力している文字数が0文字超(1文字以上)の時にYボタンを押すと入力している文字の最後から1文字分削除される動作をします。
 最後に入力した1文字を削除するためにはすでに入力している文字において「左から入力している文字数-1文字分を取り出す」ことで可能になります。初心者には分かりにくいですがこのLEFT$を使ったラスト1文字削除と同じ動作は配列変数のところで書いたPOP()関数を使いA$=POP(N$)と行うことも可能です。A$はダミー変数なので他所で使ってない変数ならば何でもいい)
 ちなみにIF命令は後述の「IF〜THEN〜による条件判断」を参照してください。
 VSYNCは処理のタイミングを取る命令です。詳しくは後述の「VSYNCとWAITでタイミングを取れ」を参照してください。よく分からなければ現時点ではおまじないとして「VSYNCをメインループに入れなければならない」と覚えておいても良いでしょう。

 またINKEY$()を使った超簡易キーボードプログラムを作ってみました。たったこれだけでプチコン3号が電子ピアノになります。

《 超簡易キーボードプログラム 》
SYSBEEP=0
@LOOP
 K$=INKEY$()
 A=INSTR("AWSEDFTGYHUJKOL",K$)
 IF K$!="" AND A>=0 THEN BEEP 22,A*100
 VSYNC
GOTO @LOOP

 INSTR()関数は文字列の中から指定文字が何文字目にあるかを返す関数です。このプログラムは押したキーが"AWSEDFTGYHUJKOL"の何文字目にあるかを調べることで半音いくつ分高い音を出せば良いのかが分かります。こうすることでIF命令を羅列して条件判断する必要が無くなるためこういう使い方があるということを覚えておくと役に立つことがあるでしょう。

 ちなみにBEEPは効果音を鳴らす命令です。プチコン3号ではBEEP 0BEEP 133の134種類の効果音を選択できます。これは、BEEP 22,100とすることで標準の高さの音(2番目の引数を省略した時の音)よりも半音高くできます。1オクターブ高くするにはBEEP 22,1200、1オクターブ低くするにはBEEP 22,-1200としてください。  あとGOTOはジャンプ命令です。後述の「ジャンプ命令と繰り返し命令」を参照してください。

 このプログラムの使用方法を簡単に説明すると使うキーはASDFGHJKLファで斜め上にあるキーを押すと黒鍵に相当する音も出ます。
 このプログラムを改造したプログラムは自由に公開してもらって構いません。ぜひ、どんどん改造してみてください。

 INKEY$()を使用する際に注意するのが命令実行前に押したキーの文字も代入されてしまうということです。INKEY$()では入力の取りこぼしがないように入力バッファという場所に押したキーの文字を入れているのですが、INKEY$()を実行時にはそれがすべて一気に流れ込んでしまいます。
 どういうことかというと具体的に言えばRUNをしてプログラムを実行開始した後にABCとキーボードから入力した場合には最初にINKEY$()を実行時にその"ABC"という文字が順番に入っていくというわけです。(本当は事前に押しているのにINKEY$()を実行してから「A」「B」「C」と順番に押したと見なされる)

 それを防ぐにはメイン部分のINKEY$()を実行前に以下のプログラムを実行してください。

 WHILE INKE$Y()>""WEND

 このプログラムをメイン部分の前に入れておくことで入力バッファをクリアしてくれます。WHILEWENDに関しては後述のループ命令で条件判断を参照)


RETURN (プチコン3号講座のページにもどる) RETURN *MAIN (トップページにもどる)

inserted by FC2 system