当サイト関連記事:
・ネットのプチコン講座をご紹介。3DSやニンテンドースイッチで自作ゲームが作れます。
・石焼き芋屋さんの売り声を3DS・DSiにしゃべらせるプログラムを作りました。
・ヤマハ音楽教室CMのレッスン曲をニンテンドーDSiに歌わせるプログラムを作りました。(プチコンmkII)

このプログラムは、ユーザーに何か数字を入力してもらって、1桁の数字だった場合は「おわり」と表示して終了、2桁以上の大きな数だった場合は繰り返し入力待ちになるプログラムです。簡単に言うと「このニンテンドー3DSは1桁の数字を入力してもらってさっさと終わりたいプログラム」です。入力されたものが文字だった場合のチェック機能も付いています。
なお、GOSUB~RETURN命令の動きを勉強するために、わざと何回もラベルに飛んで戻ってくるという、ややこしい書き方をしています。
【プログラムの解説】
1 注釈なので実行されないで次の行へ進みます。'を頭に書いた行は実行されません。
2 ラベル@L1。@を頭に入れたラベルの所にGOTO命令などで飛んでその下の行から実行されます。
3 ユーザーの入力待ち命令。文字を入力して[Enter]で、文字列変数A$に文字が入ります。
4 入力されたA$の中身が数字の場合は、計算することができる「数値」に変換して変数Aに入れます。アルファベット、かな文字、グラフィック文字などの場合は変数Aに0(ゼロ)が入ります。
5 もし変数Aが1より小さい場合、つまり0の場合は、(IFとTHENは必ずワンセットで書きます。ここで改行しているので次の行へ進みます)
6 「すうじをにゅうりょくしてください」と表示します。0(ゼロ)を入力したときも「すうじをにゅうりょくしてください」と表示する不具合がありますがそこは目をつぶってください(笑)。
7 見やすくするために改行します。
8 ラベル@L1へ飛びます。入力されたものが数字ではない場合はここまでが繰り返しになるわけです。
9 5行目のIF~THENの後に続けてPRINT命令が書かれず改行されてからPRINT命令があるので、IFの結果が違う場合はこのENDIFの次の行に進みます。(もし変数Aが1より小さくない場合。1以上の数字が入力された場合になります。)
11 もし変数Aが10より小さい場合は、(次の行へ)
12 「ひとけた」と、入力された1桁の数値を一緒に表示します。
14 そうではない場合。もし変数Aが10より小さくない場合は、(次の行へ)
15 ラベル@L2へ飛んで、RETURNの所まで実行したら戻ってきて次の行16行目に進みます。
16 ラベル@L1に飛びます。
18 11行目のIF命令の終了。12行目で「ひとけた+1桁の数値」を表示した後にココに飛んできます。
19 ラベル@L3に飛んでRETURNで戻ってきます。
20 プログラムの終了。「OK」と表示されて終わります。
22 ラベル@L2。
23 「ふたけたいじょうのおおきなかず+変数Aの数値」を表示します。
24 GOSUB命令で飛んだ次の行に戻ります。この場合は16行目に戻ります。
26 ラベル@L3。
27 「おわり」と表示します。
28 GOSUB命令で飛んだ次の行に戻ります。この場合は20行目に戻ります。
中学生の頃から20歳の頃までいじっていたレトロパソコンには確か「ENDIF」という命令は無かったし、「THEN」の直後に改行された場合はIFの結果がどちらでも次の行に進む仕様でした。「:」を使って命令を横に続けて書くマルチステートメントは見づらいため、整理された見やすいプログラムを書けるように「ENDIF」が誕生したのだろうと思います。確かにこの書き方はごちゃごちゃしないで見やすくなったと感じます。
ちなみに、ほかにELSEIFという命令もありますが、ややこしくなるので今のところ自分は必要ないかなといったところです。ENDIFについては、使い方を覚えたのでこれからちょくちょく使っていこうと思います。

ニンテンドー3DSのプチコン3号の画面構成はこのようになっています。
一杯やりながらタッチペンでチマチマプログラミングしていました。ほかのお客さんとか店員さんにどのように思われていただろうか。って、そんなこと知らんもんね~。
(おわり)
- 関連記事
-
- ソートアルゴリズムの「マージソート」が気持ちいい件。
- プチコン3号で「IF THEN ELSE ENDIF / GOSUB RETURNの使い方」をプログラミングしました。
- 2020年ツイッター「プチコン4」プログラミング参考まとめ
