サンプルプログラム1
いよいよ本格的なプログラムのはじまりです。ちょっとワクワクしますね。
ここからが長いと考えると、ちょっとウンザリしますね。
でもプログラムはおぼえたことが増えていくと、どんどん楽しくなってきます。
そのための準備運動だと思ってここはガマンしましょう。
今回用意したプログラムは、ここまでのおさらいでもありますが、ちょっと新しいこともいくつか出てきます。
どれもあとあと大事になってくることなので、ひとつひとつ身につけていきましょう。

ほっほっほ。ショクン、がんばっておるかな? ワシからのプレゼントとしてサンプルプログラムを用意したぞい。

プチコンにはサンプルプログラムが最初からいくつか入っているんだよね。

そのトオリだぜ! どうやって見ればいいのかも知らねえけどな!

そういえば方法はまだ教えてなかったね。実行モードでこう入力してみよう!
LOAD”SAMPLE1”

ゲームのセーブデータを「ロード」するのと同じ、英語の「LOAD」なんだね。

ミミザワリな効果音がついてるじゃねえか。パンクスピリットを感じるゼ!

パンクかどうかはわからんが、昔のBASICではこんなふうに音声化したデータをロードしていたのじゃよ。この画面で流れる音はさすがにただのカザリじゃがな。

画面にいろいろ書いてあるけど、「リソース」って?

うーん、今はとりあえず気にしないでいいかな。とりあえず読み込み成功なので右下の

ボタンを押して先に進めよう。

オイ、OKしか出てこねえぞ! 失敗したんじゃねェのか?

気が早いなあ。編集モードにしてごらん。

ウ、ウオォ、なんだか今まで見たコトのない世界じゃねえか。コレは逃げるしかねえ!

CLSやPRINT命令は見おぼえがあるけど、それ以外にもいろいろ……

まあまあ。そうコワがるモノでもないんじゃよ。どれも知れば「なーんだ」というくらいの命令じゃ。ためしにRUNしてみればよかろう。

キホン的には、文字を表示するプログラムなんだね。色つきになってるところがあるけど、どうやってるんだろう?

グムム……下の方では足し算をやってんのか? オレは算数とか勉強みてえのはエンリョしたいゼ。

だいじょうぶだよワンパク君。計算するのはキミじゃなくプチコンだから。

ナニ? 計算もプログラムでやるってのか、聞きずてならねェな!?

じゃあ1行目から順に見ていこう!

プログラムのあちこちに’で始まる行があるのがわかるよね。

ホントだ。1~4行目、8行目、13行目……
0001#. ’┌──────────────────┐
0002#. ’│SAMPLE1 │
0003#. ’│ コンソ-ルヘノモシ゛シュッリョク │
0004#. ’└──────────────────┘
#####.
0008#. ’--- タンシ゛ュンナ モシ゛ノヒョウシ゛
#####.
0013#. ’--- イロシテイ
#####.

で、ケッキョクこの’はナンだってんだ?

こうやって’と書くと、その行はプログラムで何も起きなくなるんだよ。

ハ、ハァ!? イミねえじゃねえか!

ははは。プチコンにとっては意味がないかもしれないね。でも、ボクらがプログラムを読むときにはベンリだろう?

そうかあ……8行目から後は「タンシ゛ュンナ モシ゛ノヒョウシ゛」、13行目からは「イロシテイ」をするって、メモしてあるんだね。

そういうこと! この’はかわりにREMと書くこともできるんだ。REMとは英語のREMARK(コメント)の略だから、プログラムに自分のコメントを書くための命令ってことだね。もっとも、4文字使ってREM と書くよりもシンプルに’と書く方が多いかな。

「---」と線を書いておるのも、プログラム的には意味はないが、見やすくするためのクフウじゃな。1行目のように記号を使ってちょっと見た目を良くしたり、REM命令はある意味プログラマーのこだわりポイントじゃぞ。

そこなんだがよォ、「
シュッリョク」って、なんだ? 「シュツリョク」じゃねえのか?
0003#. ’│ コンソ-ルヘノモシ゛シュッリョク │

やってもうたあああああああ

REM文が続いた次の5行目でまた新しい命令が出てくるね。「
VISIBLE」……?
0005#. VISIBLE 1,1,0,0,0,0

む。これはショクンにはまだ早いかの。言ってしまえば画面上に表示するもの・しないものを決めているのじゃが……今のところ文字ぐらいしか表示しとらんからのう。

じゃあナンのためにプログラムに入れてるんだ? ムダじゃねえか!

他のプログラムを実行した後だと、その画面がまだ残っていることがあるからね。
もっともリセットすればそれも消えるし、いまボクらがやっているコトの間はあまり関係ないのさ。

今はこう書いておけば役にたつこともある、くらいにおぼえておくのがいいのかな。
じゃあ次の6行目を見てみようか。
0006#. CLS:COLOR 0
CLSはもう知ってるけど、その後はなんだろう?

まず「
:」が注目だね。
「
:」は2つの命令を1行に書くための「つなぎ」なんだ。だからこの行は、こう書いてあると考えていいんだよ。
0006#. CLS
0007#. COLOR 0

コロンを使わないと、どうしてもタテに長いプログラムになってしまうのう。ここでコロンを使うのは、リストをコンパクトにまとめるクフウじゃ。
ほかにも、区切りのいい命令まとめて1行におさめたい時なんかにも使うわい。

ひとつワカッたが、そうなると「COLOR 0」の方はナンなんだ?

COLORは色のことだよね。でも色をゼロにするって……?

これは「0番の色を選ぶ」と考えるといいよ。プチコンでは基本カラーとして

こんなふうに0番から15番まで色が決まってるんだ。

0番は白だから、つまり白をエラんで、……だから、どうだってんだ?

いちどえらんだ色はその後もずっとえらびっぱなしになるんだ。つまり7行目から後は、またCOLORで決めるまで、ずっと白色で字を表示することになるね。

オッ、やっとわかる行が出てきたゼ! 9~10行目で白色で文字を
PRINTしてるってワケだ!
0009#. PRINT”Ж:ニコチャン”
0010#. PRINT”ALPHABET”

この2行はカンタンじゃな。一応、記号とカナとアルファベットを全部入れてみたぞい。

前から思ってたんだけどよォ、Жって「ニコチャン」マークってほど笑ってなくねェか?

そこは気がつかんかったああああああ

11行も
PRINT文だけど、いつもとちょっと違うね。
0011#. PRINT”12345”;”カタカナ”
この途中にある記号はさっきの
:に似てるけど、別のもの?

この記号「;」は「セミコロン」と言って、PRINT命令でよく使われるんだ。
カンタンに言えば、”を閉じた後に、改行せずに文字をくっつけるんだよ。

あんまりカンタンじゃねーぞ! もっとワカるように言いヤガレ-!

ためしにこう書きかえてみようか。
0011#. PRINT”12345”:PRINT”カタカナ”
こうして
RUNするとどうなるかな?
12345
カタカナ

PRINTで1回書くと、そのたび次の行に表示されるんだね。

では、元にもどして
RUNしよう。
0011#. PRINT”12345”;”カタカナ”
12345カタカナ

くっついてる! たしかにくっついてるぜ! ……意味がねェぞ!! そのままPRINT”12345カタカナ”って書けばすむコトじゃねーのか!?

これはいちばんカンタンな例だからね。じゃあ、この先で「;」が本当に役に立つところを見てみよう。
0014#. COLOR 12:PRINT”а”;
0015#. COLOR 13:PRINT”б”;
0016#. COLOR 11:PRINT”Я”;
0017#. COLOR 9:PRINT”в”

いままで習ったことがいくつも入っているね。まずCOLORで色を決めて、その色で記号をPRINTして、「;」で……

なるほど! そういうワケか!

気が付いたようだね。PRINT文の最後に「;」を付けておくと、次にPRINTするときにも、くっついたままで表示されるんだ。こんなふうにね。
абЯв

あいだにCOLOR命令が入ってもダイジョウブってコトか……。
コロンといいセミコロンといい、イミはちがっても2つの行をくっつけるのは同じってトコだな。

ワンパク君、なかなかスルドイのう。
この後で出てくるが、セミコロンにはもう1つダイジな使い方があるのじゃよ。

21行と22行は、変数だね。
0021#. APPLE=56
0022#. ORANGE=123

今度の変数の名前はずいぶん長いけど、リンゴとミカンになっているね。
プログラムを実行した画面でリンゴとミカンの数を表示しているから、どうしてこういうバケツの名前にしたか、だいたいわかるんじゃないかな?

つまり変数APPLEには、リンゴの数を入れて、変数ORANGEには、ミカンの数を入れたってことだね。

スターップ! テメエらめんどクセエぜ! バケツにそれぞれリンゴ56コとミカン123コを入れたってことだろ、要するによォ!

ものすごくランボウにたとえたが、まさしくそういうコトじゃな。こんなふうに書くこともできるぞい。ちょっと書きかえてみい。
0021#. APPLE=20+36

よ……よけいややこしくなってんじゃねェか!

ちょっと待って、コレは足し算になってるのかな?

さよう。20個のリンゴと36個のリンゴを、バケツにまとめて入れたら56個。変数APPLEには56という数字が入っておることになるな。

PRINT 20+36みたいな使い方もできるよ。これを実行モードで書いてみると……
PRINT 20+36
56
OK

おいおい、ちょっとした計算機じゃねえか! なんかスゲエまだるっこしいけど!

今はまだ電卓を使ったほうがラクなレベルじゃが、プログラムの世界ではこの計算がなにかと役に立つんじゃよ。まあおいおいワカってくるじゃろう。

25行目にある、こりゃナンだ?
0025#. LOCATE 5,10
ロ…カ……テ?

初めて出てきた命令だね。読み方は「ロケート」。英語で「場所を決める」って意味さ。

たしかにRUNすると、この先の文字が表示される場所が変わってるね。

文字をどこに出すか決める命令ってワケか。だが、しくみがサッパリだぜ! なんだこの5とか10とかの数字?

プチコンの上画面はヨコに32文字ぶん、タテに24文字ぶんあるのは知ってるね。マス目にするとこうかな。

左上のマスをゼロとして、順に数字をふっていくとこうなる。

つまり
LOCATE 5,10は「左から6文字目、上から11文字目」に表示するということになるね。

ゼロから始まるから、6文字目をあらわす数字は「5」になるんだね。イメージした数より1少なくなるのは注意しないといけないなあ。

ワナみてえなモンじゃねェか! なんで左上を1にしなかったんだ?

こればっかりは、「コンピューターの世界ではゼロから始まるのがお約束」としか言いようがないのう。ゼロで始まる数え方はコレ以外の命令でもちょくちょく出てくるから、よーくおぼえておいた方がいいじゃろうな。

とにかく文字を出す場所はよくワカったぜ! そのPRINT文はコレ、どういうこった?
0026#. PRINT”リンコ゛ = ”;APPLE;”コ”

セミコロンはもう出てきたね。

そんでAPPLEってのはたしか変数だったよな。それがセミコロンでくっつく……?

そうか! 変数
APPLEには
56って数字が入ってるから、これはこう書いてるのと同じなんだね。
0026#. PRINT”リンコ゛ = ”;56;”コ”

たしかにRUNしても同じように表示されてるぜ! ナルホドな、PRINT文で文字と変数をつないで書きたいときは、セミコロンでつなぐしかねえってコトか……。

わかってきたじゃないか。そうやって26行と28行でリンゴとミカンの数を表示してるんだね。32行ではまた違った変数の使い方をしているよ。
0032#. TOTAL=APPLE+ORANGE
0033#. PRINT”コ゛ウケイ= ”;TOTAL

このTOTALっていうのは、やっぱり変数なのかな?

何が変数で何が命令か、初心者にはなかなか区別がむずかしいね。英字のあとにイコールが付いていたら、その英字はたいてい変数だって考えると早いかもしれないな。

APPLEもORANGEも変数……で、+ってのは足し算か?

その通り! 変数の中に数字が入っていれば、そのまま計算式が使えるんだ。ここでTOTAL=APPLE+ORANGEと書いてあるのは、中の数字におきかえればTOTAL=56+123ということになるね。

それを33行目で表示してるんだね!
0033#. PRINT”コ゛ウケイ= ”;TOTAL

それにしても……ナンのために変数を使ってんのか、オレはまだナットクいってねェぜ。サイショからゼンブ数字で書いてもいいんじゃねえか?

ホッホッホ。気持ちはワカらんでもないわい。
じゃが、たびたびリンゴやミカンの数が変わるとしたらどうじゃ? まず上のリンコ゛=の数を書きかえて、次はミカンの数、最後に合計の数を順に書きかえねばならんな。これが変数なら、APPLEとORANGEの数を書き換えるだけで、最後の合計分は自動になるのじゃぞ。

プログラムの中でリンゴやミカンの数が何度も出るほど、手間がはぶけるってことだね。

ウーム……。カンゼンにナットクしたワケじゃねーが……。

まだモヤモヤしておるようじゃな。よかろう、そこがスッキリするようなサンプルを次までに用意しておくぞい。さらば、カミングスーンじゃ!

あ、行っちゃった。

いまさらだけど、博士って何の仕事してる人なんだろうね。

あのジジイ、最後の行はスッとばして帰りやがった。なんだコレ?
0036#. END

END命令は、プログラムを終わりにするという、名前のとおりの命令だよ。

そのまんまだね……。

しかしコレ、どうせ最後の行だろ? ワザワザそんな命令入れなくても、自動的に終わるんじゃねえか?

だよね。かといってプログラムの途中に書いても、そこから先が実行されなくなるからムダになっちゃうし……

今はまだそう思うよね。この命令の使いどころはすぐに出てくるから、それまではこういう命令があるとだけおぼえておこう!

さっきからそんなのバッカリだな。オレのナカにモヤモヤがチクセキされていくぜ!

キソをおぼえておけば、応用がラクになるのがプログラムさ。応用に入る前におぼえておく方がトクだよ。

チッ、オリコウさんぶりやがって! しかしつねにラクな道を選ぶのがオレだ。今のうちにオボエとくぜ!

……。

今回のサンプルプログラムはほとんどいじってないけど、最後だしプログラムのセーブ方法もおぼえておこうか。

ロードがLOADだったということは、セーブもSAVE?

つまりそのままロードとセーブを置きかえて、こういうコトだな!
SAVE”SAMPLE1”

上書きできねェだと!? ナットクいかねえな!

サンプルプログラムだけは、上書き禁止になってるんだ。

ヘンに改造したままセーブすると、サンプルプログラムがなくなっちゃうものね。でも書き換えたプログラムは保存できないのかな?

大丈夫、プチコンでは自由にファイル名を付けられるよ!
SAVE”TORIAEZU”
OK

とりあえずすぎるファイル名だな、オイ!

8文字以内で英数字であればなんでもいいよ。逆にこうして名前を付けたプログラムは、上書きしても確認なしでセーブされるから気をつけないとね。

テキトーにテストしたプログラムを大事なファイルに上書きしてタイヘンなことになったこともあるんじゃああああああ

(帰ったんじゃなかったっけ……)
実行モードのベンリ機能
ワシじゃワシじゃ、プチコン界のドンことハカセじゃ。
実行モードにもダイブなれてきたことじゃろう。ちょっとしたテクニックをさずけておこうかのう。
- ログのまき戻し
- カーソルキー上下で、これまでに入力した命令をさかのぼれるのじゃ。
何度も似たような命令を打ち込むなら、十字ボタンでチョイチョイとさかのぼって、書きかえてEnterするのがカンタンじゃな。
セーブやロードをそのまま実行すれば、書きかわってしまうので注意じゃぞ。
- ファンクションキー
- 画面の上にある5つのキーがファンクションキーじゃ。

見てのとおりキーを1回打つだけで、登録されたコマンドが入力されるラクチン仕様じゃ。「RUN」はワシもよく使うのう。
ジツはこのキーのナカミも「KEY」命令で書きかえられるのじゃが……キョウミがあれば、説明書をさがしてくれい。
- LOAD命令
- LOAD”(ファイル名)”
中に書いてあるファイル名のプログラムをロードします。
- SAVE命令
- SAVE”(ファイル名)”
中に書いてあるファイル名で、プログラムをセーブします。
- REM命令
- REM (好きなことば)
’(好きなことば)
自由なコメントを書きのこせます。
- VISIBLE命令
- VISIBLE 1,1,0,0,0,0
とりあえずこう書いておけば今はまちがいない、とだけおぼえておきましょう。
- COLOR命令
- COLOR (番号)
文字の色を変更します。
- LOCATE命令
- LOCATE (横方向),(縦方向)
横0~31、縦0~23まで好きな位置に、文字の表示位置を決めます。
- END命令
- プログラムを終了します。
- たし算
- PRINT 1+1
A=1+1
PRINT B+C
A=B+C
このように数字や変数で計算したり、変数の中に入れることができます。
- コロン(:)
- (好きな命令):(好きな命令)
ふたつの文を1行につないで書けます。
- セミコロン(;)
- PRINT ”(好きな文字)”;”(好きな文字)”
PRINT ”(好きな文字)”;
セミコロンの後には、文字がくっついて表示されます。
- 編集モードのベンリ機能
- 「Lボタン+十字ボタンで1画面スクロール」「Lボタン+Yボタン(バックスペースキー)で1行消す」「
ボタンで1行まるごとコピー・ペーストボタン表示」とおぼえておくといいでしょう。
- 実行モードのベンリ機能
- 「十字ボタン上下で、これまでの命令を読みもどし」「画面の上にある5つのキーは短縮ボタン」と、おおざっぱにおぼえておくと便利です。