AX

電霊ログ

私のやってるサイト、電子の言霊の活動ログ

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • [HSP超入門] ラベル5

かな~り長いこと放置してしまったな~
そろそろ気を取り直して書いて行こうかな。

button 命令を紹介した時に 指定したラベルが存在しない時はエラーが出ると説明しましたが、これは goto や gosub 命令でも同じで、必ずラベルを作ってから使用してください。(今まで言うのを忘れていましたゴメンよ)
たとえばこんな風に、

goto *abc
stop

goto 命令のパラメータに指定したラベルがどこにも無い時にエラーが出ます。
ですのでこの様に、

goto *abc
stop
*abc

goto や gosub そして button 命令などで使用しているラベルは必ず作成してから使いましょう。


ここで「メインルーチン」と「サブルーチン」について説明したいと思います。
ルーチンとは関連性のある まとまった処理の事で、メインルーチンはその名の通りメインのルーチンなのですが、分かりやすくおおざっぱに言うと プログラム全体を管理しているルーチンと言う事になります。
それに対してサブルーチンは、名前の通りサブのルーチンで、メインルーチンなどの他のルーチンから呼び出されて使われるルーチンです。

サブルーチンに付いてはもう少し詳しく説明しましょう、
メインもサブもなく ある程度大きなプログラムを書いていると読みにくいだけでなく、色々な所で同じ様なプログラムを書いてしまっている事があります。
これら共通の処理を1つのまとまりとしておいて、それらの処理が必要な箇所でそのつど共通な処理を呼び出せば、同じ様な処理は1つで済みプログラムサイズが減るだけでなく全体のプログラムも見やすくなり、修正する時も1箇所だけで済むので、プログラミングの負担も軽減されます。それがサブルーチンです。サブルーチンは言い方を変えればプログラムの部品の様な物ともいえますね。
ですので1つのプログラムにつきサブルーチンは複数ありますが、メインルーチンは1つだけです。

HSPではラベルを使う事で、このメインルーチンやサブルーチンを作成する事が出来ます。
では簡単な例で見て行きましょう。まずはメインもサブも無いベタ書きのスクリプトです。

repeat

mes a
a=a+1
if a>=20 {
a=0
b=b+100
pos b,0
}

wait 10
loop

変数aに1ずつ加算していってそれを表示するだけスクリプトです。そして変数aが20になったらaを0に戻して表示位置を横に100づらしています。
これをルーチン分けするとこうなります。

*main

gosub *sub1
gosub *sub2
gosub *sub3

wait 10
goto *main

*sub1
mes a
return

*sub2
a=a+1
return

*sub3
if a>=20 {
a=0
b=b+100
pos b,0
}
return

まず最初に *main と言う名前のラベルがありますね、さっしの通りこれがメインルーチンです。そしてメインの中に gosub 命令が3つありそれぞれ sub1,sub2,sub3 のラベルを順番に呼び出しています、これがサブルーチンです(今までの説明から分かったと思いますが、サブルーチンを呼び出す命令だからgosubという名前なのでした)。
サブルーチンをどこまで細かく分けるかは人それぞれで、もっと細かく分けても大雑把に分けても構いませんが やはりこれもどの位が丁度いいのか研究して見て下さい。
今回は、
sub1 =画面に結果を表示するルーチン、
sub2 =数を加算するルーチン、
sub3 =変数の内容を監視するルーチン
と言う具合に、処理の意味によって無理矢理3つのルーチンに分けました。

ルーチン分けした事によって、最初は全てが1つのまとまった処理の様に書いていた物が、目的ごとに分けられた事によってプログラムの構造がハッキリして来ましたね。これがメインルーチン、サブルーチンの考え方です。(量は逆に増えてしまっていますが、もとともが小さいプログラムなのでそこは目をつむって下さい)

この場では取り合えずサブルーチンのラベルを sub1,sub2,sub3 としていますが、実際に活用する時には処理内容にあったラベル名を付けます。たとえばゲームならデータを読み書きする、load(ロード)やsave(セーブ)などですね。

前半にサブルーチンは「色んな所で共通する処理を一まとめにした物」と書きましたが、別に全てがそうなっている必要はありません。今回の様に目的ごとに分けるだけでも十分使用するメリットはあると思います。
関連記事

コメント

コメントの投稿

   管理者にだけ表示を許可する
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。