条件を満たすまで(条件式がFalseの間)処理を繰り返します。繰り返す回数がわかっている場合は<ruby>FOR-TO文<rt></rt></ruby>を使います。
- 構文
- REPEAT
処理UNTIL 式
- 引数
- 戻り値
後判定ループ
<ruby>REPEAT文<rt></rt></ruby>のようにループ処理を行ってから、繰り返しを終了するかの条件判定を行う方式を後判定ループといいます。
ループの処理を行ってから判定を行うため、前判定ループとは違いループ内の処理が必ず一度は実行されます。
対して、<ruby>WHILE文<rt></rt></ruby>のように繰り返し処理を行う前に条件判定を行う方式を前判定ループといいます。後判定ループと違い、条件判定が成り立たない場合ループ内の処理は一度も実行されません。
REPEAT文は後判定でループ内の処理を実行してから条件式の確認を行うので、<ruby>WHILE文<rt></rt></ruby>とは違い最低でも一回は処理が実行されます。
例えば入力されたパスワードが正しいかを判定する場合、一度は入力してもらう必要があるため後判定を使い以下のように記述します。
これを前判定の<ruby>WHILE文<rt></rt></ruby>を使って書くと以下のようになり、同じプログラムを無駄に2回書くことになります。またREPEAT文は条件式が成り立たない間繰り返すのに対しWHILE文は成り立つ間なので、条件式の符号も変わることに注意です。
条件式の書き方
条件式は比較演算子または論理演算子を使って書きます。
値の比較
REPEAT文では条件が真になるまで(偽の間)ループ内の処理が行われます。a,bには数値が代入されているものとします。
比較演算子とは2つの式や値を比較するための演算子で、2つの値が等しい・等しくない、大きい・小さいといった比較ができるようになります。
比較演算子を使うことで、○○と一致したときや○○ではないときといった条件式を書くことができます。
UWSCで使える比較演算子は以下のとおりで、a,bはともに数値が代入されているものとします。
| 演算子 | 記述例 | 意味 |
|---|---|---|
| < | a < b | aがbより小さければ真 |
| <= | a <= b | aがb以下ならば真 |
| > | a > b | aがbより大きければ真 |
| >= | a >= b | aがb以上ならば真 |
| = | a = b | aとbが等しければ真 |
| <> | <> b | aとbが等しくなければ真 |
複数条件
複数の条件を指定する場合は、論理演算子を使います。
以下の例ではa,bともに論理値(TrueまたはFalse)が代入されているものとします。数値の場合はビット演算になるので注意が必要です。
論理演算子とは、論理演算をするための演算子のことで、論理演算子を使うことで○○かつ○○、○○または○○といった比較演算子だけではできない複数の条件式を比較するといった書き方ができるようになります。
以下の例ではa,bともに論理値(TrueまたはFalse)が代入されているものとします。数値の場合は論理演算ではなくビット演算になるので注意が必要です。
| 演算子 | 記述例 | 意味 |
|---|---|---|
| AND | a AND b | aとbがともに真の場合に真 |
| OR | a OR b | aかbの少なくとも1つが真の場合に真 |
| XOR | a XOR b | aかbのいずれか一方が真の場合に真 |
| ! | !x | xが偽の場合に真 |
使い方
指定時間の間ループ内の処理を実行
ループに入る前の時間を取得しループの最後で経過時間を求め、指定時間になるまでループ内の処理を繰り返し処理を実行します。
以下は60秒間ループ内の処理を実行する例です。tm >= 60は60秒経過していたらループを抜けることを表しています。60秒経っていなかったら再度REPEAT文の先頭に戻ります。
指定画像が表示されるまで待機
image.bmpという画像が表示されるまで待機します。
CHKIMG関数 (スクリプト関数)は画像が見つかればTrue、見つからなければFalseを返すことを利用しています。
入力チェック
INPUT関数 (スクリプト関数)で入力された値をreTest関数 (自作関数)で正規表現チェックを行い、数値が入力されるまで繰り返します。
正規表現にマッチすればTrue、マッチしなければFalseを返すので、数値が入力されるまで繰り返し入力させることができます。
指定URLになるまで待機
Web操作でログイン処理する際、ロボット認証などプログラムでの操作ができないときに待機する例。メールアドレスやパスワードなどを入力した後にこの処理を入れておくと、ロボット認証・ログインボタンだけは手動で行うということができます。URLはログインボタンを押したあとに遷移するURLを指定します。
以下は、URLがhttp://example.comになるまで待機します。
公開日:
更新日:
関連記事
- FOR-TO文
- 条件が真の間、処理を繰り返し実行します。途中でループを抜けたいときは<ruby>BREAK文<rt></rt></ruby>を使います。
- FOR-IN文
- 配列の要素分だけ処理を繰り返します。FOR文でも書き換えられます。
- WHILE文
- ループ処理を行います。ループの始めに条件判定を行いループ内で条件を変えないと無限ループになります。条件が合わなければ処理は1度も実行されません。最低1度は処理を実行したい場合はREPEAT-UNTIL文を使います。前判定。
