ホーム > HSP講座 > HSPの基本編 > 第12章 繰り返し その2

第12章 繰り返し その2

登録タグ: HSP Hot Soup Processor 繰り返し while wend do until


今回も「繰り返し」についてですが、今回はもうちょっと違うタイプの物になってきます。

前回話したように、繰り返しはプログラム中で同じ処理を何回か繰り返したい場合に使用します。
同じ処理を何回も行わせる時に、同じプログラムを連続して記述していく方法もあります。
しかし、そうするとプログラムの文章自体が長くなってしまうため、通常はプログラムをスッキリさせるために使用します。

今回は、前回扱った「repeat - loop」命令以外の繰り返し処理について説明します。
そう、「repeat - loop」命令の次に簡単な「while - wend」命令と「do - until」命令です。

まずは、「while - wend」命令と「do - until」命令の違いを簡単に説明します。

「while - wend」命令
繰り返し処理の最初に条件式を判断して、条件式を満たしているあいだ繰り返します。
「do - until」命令
繰り返し処理の最後に条件式を判断して、条件式を満たすまで繰り返します。

はじめに書いておきますが、今回の繰り返し処理中ではあらかじめカウンタ用の変数を自分で用意しておかなければいけないので、繰り返し用のカウンタ変数「a」を用意してあります。
この変数は自分の好きな名前をつけてもかまいません。
ただし、「repeat - loop」命令の時に使用した「cnt」というシステム変数は使用できないので注意してください。

ではまず「while - wend」命令について説明します。

; while - wend文を使った繰り返し処理
; while命令を使う前に繰り返し処理中で使うカウンタを
; あらかじめ初期化しておく(無くてもいい)
a = 0
; while命令を使って処理をスタートさせる
while ( a < 10 )
    ; 現在のカウンタの数値を表示させる
    mes "繰り返し処理 " + a + " 回目です。"
    ; カウンタを増やす(通常は1ずつ、またカウンタを
    ; 増やさないと無限ループになるので注意する)
    a = a + 1
; 繰り返し処理はここまで、wend命令を使う
wend

; stop命令を使用してプログラムを終了する
stop

このスクリプトを実行すると、画面に「繰り返し処理 0 回目です。」から「繰り返し処理 9 回目です。」まで、今回はカウンタの数値を1ずつ増やしているので、合計10回文章が表示されると思います。

「while」命令の条件式のため、カウンタ用の変数aが10より小さい時のみ「繰り返し処理 何 回目」と表示されるようになっています。
※また「while」命令は、条件式が真(正しい)の時に繰り返されるので、カウンタ用の変数aが10になった時点で「aが10より小さい時のみ」という条件と合わなくなるため、繰り返し処理を抜けることになります。

「repeat - loop」命令との違いは「パラメータのところに条件式を設定することができる点」です。
条件式については「if」命令の所で説明してあると思います。
また、条件式を書かなかった場合は無限ループになるので注意してください。

次に「do - until」命令について説明します。

; do - until文を使った繰り返し処理
; until命令を使う前に繰り返し処理中で使うカウンタを
; あらかじめ初期化しておく(無くてもいい)
a = 0
; do命令を使って処理をスタートさせる
do
    ; 現在のカウンタの数値を表示させる
    mes "繰り返し処理 " + a + " 回目です。"
    ; カウンタを増やす(通常は1ずつ)
    a = a + 1
; 繰り返し処理はここまで、until命令を使う
until ( a >= 10 )

; stop命令を使用してプログラムを終了する
stop

このスクリプトを実行すると、画面に「繰り返し処理 0 回目です。」から「繰り返し処理 9 回目です。」まで、今回はカウンタの数値を1ずつ増やしているので、合計10回文章が表示されると思います。

「until」命令の条件式のため、カウンタ用の変数aが10より小さい時のみ「繰り返し処理 何 回目」と表示されるようになっています。
※また「until」命令は、条件式が偽(正しくない)の時に繰り返されるので、カウンタ用の変数aが10になった時点で「aが10以上の時」という条件と合うため、繰り返し処理を抜けることになります。

「repeat - loop」命令との違いは「パラメータのところに条件式を設定することができる点」です。
条件式については「if」命令の所で説明してあると思います。
また、あらかじめ条件が満たされていても一度だけ実行され、条件式を書かなかった場合は繰り返し処理が実行されません。

ここで、「あれ?」と思われた方もいらっしゃると思うので少し説明します。
「while - wend」命令では10回、「do - until」命令では11回文章が表示されましたが、これは「while - wend」命令では繰り返し処理の最初に条件式を判断しているのに対し、「do - until」命令では繰り返し処理の最後に条件式を判断しているためです。
また、「while - wend」命令では条件式を満たしているあいだ繰り返すのに対し、「do - until」命令では条件式を満たすまで繰り返すためです。

※上の文章の違い(文章が表示された回数)は、条件式の設定ミスのが原因で異なる回数が出力されていたために起こりました。
指摘してくださったキャスパー(木安)さん、ありがとうございます。

そのほかにも繰り返し命令は存在しますが、これ以上やるとさすがに混乱してしまうのでこの辺で止めておきます。

今回は以上です。次回は「変数と配列変数」をやろうと思います。

← 前へ | 次へ →


カテゴリー:HSPの基本編
2012/06/23 05:15:29 更新

Powered by AkiWiki. Wiki syntax is based on PukiWiki, and extends it.

スポンサード リンク

メニュー

HTML講座

HSP講座

Inkscape講座

スポンサード リンク