AX

電霊ログ

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

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

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

ああなんて久しぶりの更新・・・。
毎日少しずつ書いてたんですが うまい表現が全然思い付かないしなかなかどうしてはかどりませんでした(x_x)

さて、今回からはラベルについて説明して見たいと思います。でもいきなりラベルと言われても、何の事だかよく分かりませんね。
一般の辞書で調べて見ると、ラベルとは「品物に貼られた紙切れ、レッテル、レーベル、分類記号、商標」などと出てきます、しかしコンピュータープログラミングでの意味はこれとは少し印象が違い「目印、しおり、目的地」と言った方が近いかも知れません。
ですがそれも正しくはなく、正確には プログラムの好きな位置に付けた名前の事で、変数の様に名前も好きに付ける事が出来ます。

・・・と、いくらこんな説明を読んでいても実感がわかないと思いますので、早速実際にやって見ましょう。
まずラベルの書き方ですが、
*label

この様に * を頭に付るだけです。* はアスタリスクと言い、頭にこれをけた文字はラベルとして扱われます。
ラベルの名前は自由に付ける事が出来ますが、変数の時と同じようにいくつかの制限があります。
その制限とはたとえば、半角なら59文字を超えたら59文字以降は無視される、命令やシステム変数など内部で使われている名前は付けられない、スペースや特殊な記号は使えない、などです。( _ は使えます)

書き方が分かったところで使い方を見てみましょう。
ラベルはこの様にインデントせずスクリプトの左端に書きます。

*aaa
mes "らべる"
mes "てすと"


書く場所はどの行でも構いません。

mes "らべる"
*aaa
mes "てすと"


こんな風にしても実行出来ますが、分かり難さを極めるので止めて下さい。。

mes "らべる" :*aaa
mes "てすと"


しかしこれらを実行してもラベルを書いた事による変化は全くありません。実はラベルをただ書いただけでは意味が無いのです。最初にラベルと言うのはプログラムの特定の場所に名前を付ける事だと書きましたが、今ためしたスクリプトが何も起こらなかったのは名前を付けただけだからです。変数も代入しただけじゃ そと見は何も変わらないのと同じですね、使って始めて変化が分かります。
ならラベルも使ってみましょう。そうすれば変化が見えるはずです。
ラベルは「目印、しおり、目的地」見たいな物、と言ったのを覚えていますか? もっというと駅やバス停、タクシー乗り場にも似ています。これらはどれも ある所から別の場所へ運んでくれるという意味で共通しています、そして目的地に移動するには名前が必要なのも一緒です。
少しずつ読めて来ましたか? そうです乱暴に言えばラベルもそれと同じです。つまりラベルはプログラム中に名前をつけ、自由に行き来するための物だったのです。

自由に行き来するためにはラベルへジャンプする命令が必要ですね。
では久しぶりに新しい命令を覚えましょう、それは

goto 命令です。(ゴートゥーと読む)

「どこどこへ行け」と読んで字のごとくラベルへ飛ばす命令です。使い方は

goto *label

の様に goto の後にラベル名を続けます、この時アスタリスクは省略出来ません、きっちりと忘れずに書いて下さい。それと
goto*label の様に縮めて書いても問題なく実行出来ますが、読みやすさのために(何より恥ずかしいので・・)goto と *label の間にスペースを入れて
goto *label と書くようにして下さい。
これで指定したラベルへ飛ばす事が出来る様になりました。

goto *aaa
mes "らべる"
*aaa
mes "てすと"


これを実行すると、「てすと」だけが表示されます。
1行目の「goto *aaa」から 3行目のラベル「*aaa」へとジャンプしたので、2行目の「mes "らべる"」は実行されなかったのです。

ただ単にラベルに飛ばしても面白く無いので、色々応用して見ましょう。

a=1
if a=1 :goto *jump
stop
*jump
mes "ぴょーん!"


if文とラベルを組み合わして、変数の内容によってラベルジャンプをしています。さらに

a=1
if a=1 :goto *jump1 :else :goto *jump2
stop
*jump1
mes "誰の言葉?"
stop
*jump2
mes "忘れた。"
stop


やりたい事によってラベルを複数使えば、完全に処理を書き分ける事が出来ます。しかしこれ位ならラベルを使わなくても if だけでも十分できますね。

a=1
if a=1 {
mes "誰の言葉?"
} else {
mes "忘れた。"
}


出来るどころかラベルを使わない方が短くスッキリ書けてしまいました。じゃあ何でラベルなんかわざわざ使っているのか疑問ですね。それはやはり ラベルはラベルでいい所があるのですが、結構長くなってしまったので それは今後やって行きたいと思います。
では今回はこの辺で。
関連記事

コメント

コメントの投稿

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