サンプルプログラム1

プログラマーからひとこと

いよいよ本格的なプログラムのはじまりです。ちょっとワクワクしますね。
ここからが長いと考えると、ちょっとウンザリしますね。

でもプログラムはおぼえたことが増えていくと、どんどん楽しくなってきます。
そのための準備運動だと思ってここはガマンしましょう。

今回用意したプログラムは、ここまでのおさらいでもありますが、ちょっと新しいこともいくつか出てきます。
どれもあとあと大事になってくることなので、ひとつひとつ身につけていきましょう。

LOAD命令

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

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

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

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

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

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

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

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

インテリ
うーん、今はとりあえず気にしないでいいかな。とりあえず読み込み成功なので右下の了解ボタンを押して先に進めよう。

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

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

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

神崎
CLSPRINT命令は見おぼえがあるけど、それ以外にもいろいろ……

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

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

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

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

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

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

ハカセ 編集モードのベンリ機能

ワシじゃワシじゃ、プチコン界のアイドルことハカセじゃ。
とうとう長めのプログラムのトウジョウじゃのう。そんな時にベンリなテクニックを教えておくぞい。
1画面スクロール
シフトキー+カーソルキーで、1画面ぶんスクロールさせられるぞい。
つまり……DSiのLボタンを押しながら十字ボタンで、サクサク大きくスクロールできるというわけじゃな。
1行削除
シフトキー+バックスペースキーで、カーソルのある1行を一気に消せるのじゃ。
もちろん、DSiのLボタンを押しながらYボタンでもいいし、Lボタン+画面のバックスペースキーという合わせ技も使えるぞい。
1行コピー&ペースト
画面の下の方に小矢印ボタンボタンがあるじゃろう。この下ボタンを押すと、コピー・ペーストボタンが出てくるぞい。
コピーボタンでその行がキオクされるから、好きなトコロでペーストボタンを押せばソコにコピーした行がはりつけられるのじゃ。1行まるごとのコピペじゃな。

REM命令

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

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

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

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

ワンパク
ハ、ハァ!? イミねえじゃねえか!

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

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

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

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

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

博士
やってもうたあああああああ


VISIBLE命令、コロン、COLOR命令

神崎
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になっているね。
プログラムを実行した画面でリンゴとミカンの数を表示しているから、どうしてこういうバケツの名前にしたか、だいたいわかるんじゃないかな?

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

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

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

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

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

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

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

PRINT 20+36
56
OK
ワンパク
おいおい、ちょっとした計算機じゃねえか! なんかスゲエまだるっこしいけど!

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


LOCATE命令

ワンパク
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っていうのは、やっぱり変数なのかな?

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

ワンパク
APPLEORANGEも変数……で、ってのは足し算か?

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

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

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

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

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

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

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

神崎
あ、行っちゃった。

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


END命令、SAVE命令

ワンパク
あのジジイ、最後の行はスッとばして帰りやがった。なんだコレ?

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つのキーは短縮ボタン」と、おおざっぱにおぼえておくと便利です。