AX

電霊ログ

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

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

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

繰り返し」を使えば色々面白い事が出来ますが、
ここでは今まで覚えた知識だけでやってみる事にしましょう。

と、その前に、
システム変数について少しだけ説明しておきます。
システム変数とはHSPが内部で使用している変数のことです。
このシステム変数はいくつかあって、それぞれに色々便利な情報が格納されていてHSPのプログラミングではよく使うのですが、私達が勝手にこの変数に代入する事は出来ませんので、注意が必要です。

では話を「繰り返し」に戻します。
次のプログラムを実行してみて下さい。

repeat 10

mes cnt

loop


「実行結果」
20061127165913.png


なぜか0~9までの数字が表示されましたね。でもどうしてこうなったのでしょう?
repeat 命令中に mes 命令がありますが、その引数に cnt が指定されています、どうやらこのcntがあやしそうですね。
実はこの cnt がさっき説明したシステム変数なのです。
この cnt には 「今何回目の繰り返しか」という情報が入っています。
なので繰り返し命令の外で使用すると中身はずっと0のままです。

それはそうと10回繰り返しているのになんで9までなの?10でしょ?と思うかもしれませんね。
なぜこうなるのかと言うと repeat を通った時はまだ cnt が0のままで、loop 命令を通過した時に cnt が1プラスされるからです。
なので0~9の10個が表示されたんですね。

ここまで散々cntについて説明しておきながらなんですが、実は自分で変数を管理する事でcntを使わなくても同じ事が出来ます。
実行してみて下さい。

repeat 10

mes count

count = count + 1

loop


「実行結果」
20061127165925.png


何をしたかというと、ループ中でカウント変数を作ってそれを自分で1ずつ増やしています。
count 変数には「自分自身に1をプラス」した計算結果を上書きします。

順を追って言うと、
HSPでは プログラム中に新しい変数が出てきたら中身が0になるので、最初の mes count は0になりますね。
2回目以降は ループするごとに count に1が足されて行き、この調子で10回繰り返された頃には count は9になった言う事です。

ただこの2つには違いがあります。
その違いを確かめる為にこの下のプログラムを実行してみて下さい。

repeat 10
mes cnt
loop

mes "cntの中身は"+cnt+"です。"

repeat 10
mes count
count = count + 1
loop

mes "countの中身は"+count+"です。"


「実行結果」
20061127165931.png


これはループを抜けた後に 各カウント変数を表示させていますが、
まず cnt はループを抜けた後 中身は0になっていますね、先ほど「繰り返し命令の外で使用すると0になる」と説明していたので、これは思った通りの結果だったと思います。

次に count はループを抜けた後でも0になっていませんね、これは count 変数は自分で管理している変数なので、ループを抜けても0にはならなかったのです。
ところが 何故かループ中では count は9までしか表示されていないのに、ループを抜けたら10になっています、なぜ~?。
これはちょっとした引っ掛けみたいな物です。(そこまで大げさな物ではないですが)
下の矢印が書いてある行を見てみてください。

 repeat 10
   mes count
   count = count + 1 ←ここの行
 loop

mes で最後の9が表示されたあと 次の行で1プラスされています、
つまり表示してから 足されていたのです!。


ここまで読んできて0~9なんて感覚的じゃない!とか、日常では0から数えないとか 思った方、安心してください。
repeat 命令の2番目の引数に cnt の初期値を指定する事で、ちゃんと好きな数からカウントさせる事が出来ます。

repeat 10,1
mes cnt
loop


「実行結果」
20061127165936.png



自分で変数を管理した時にも好きな数からカウントする事が出来ます。

count=1

repeat 10
mes count
count=count+1
loop


「実行結果」
20061127165941.png



count 変数に予め1を代入して置けば、そこから加算されるので、1,2,3,4・・・となります。

これまで表示をしてから加算していましたが、加算してから表示をすると どうなるのか見てみましょう。

repeat 10
count=count+1
mes count
loop


「実行結果」
20061127170814.png


もうここまで読んできた方なら なんでこうなるのか説明しなくても分かりますよね。

今回はここまで、
次回はもう少し進んだ応用編をしたいと思います。

関連記事

コメント

コメントの投稿

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