CONTINUE

CONTINUE

REPEAT-UNTIL,WHILE-WEND,FOR-NEXTループの先頭に戻る
CONTINUE [ループ数]

・ループ数・・・多重ループの場合に指定数だけのループの先頭に戻る。省略時は1

ループ中、一部の処理を飛ばしたいときは・・・

BREAKの場合REPEAT-UNTIL,WHILE-WEND,FOR-NEXTのループを途中で抜けてしまいます。
そうではなく、一部の処理だけ飛ばし
またループの先頭に戻りたい場合はどうすればよいのでしょうか。
そんなときにCONTINUEを使います。
簡単な例を見てみましょう。

//通常"A=変数"は10まで出力されますが・・・
FOR A = 1 TO 10
 //6の場合だけ、PRINTによる出力はしたくない、だけどループは続けたい
 IF A = 6 THEN CONTINUE
 PRINT "A=" + A
NEXT

多重ループで、指定ループをCONTINUEさせたい場合は

CONTINUEの書き方で
CONTINUE [ループ数]と言う表現を記載しています。
例えば多重ループというループ文の中にループ文が入れ子にされた状態の場合
CONTINUEだけしか記載していない場合は、
記載してあるループ文で先頭に戻るだけです。
全ループの先頭に戻りたい、2つ上のループに戻りたい場合は
‘CONTINUE ループ数’という表現にしましょう。
2つの多重ループでサンプルをお見せします。

この投稿の続きを読む »

タグ

2012年7月29日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

BREAK

BREAK

REPEAT-UNTIL,WHILE-WEND,FOR-NEXTのループを中断する
BREAK [ループ数]

・ループ数・・・多重ループの場合に指定数だけのループを抜ける。省略時は1

ループを途中で中断しよう

REPEAT-UNTIL,WHILE-WEND,FOR-NEXTは、条件を満たすまでは処理が繰り返されます。
しかし間にBREAKを入れることで、ループ終了条件前でもループを抜けることができるようになります。
簡単な例を見てみましょう。

//通常"A=変数"は100まで出力されますが・・・
FOR A = 1 TO 100
 PRINT "A=" + A
 //50の場合はBREAKの一文により、途中でループは終了
 IF A = 50 THEN BREAK
NEXT

多重ループを全部抜けるには

BREAKの書き方で
BREAK [ループ数]と言う表現を記載しています。
例えば多重ループというループ文の中にループ文が入れ子にされた状態の場合
BREAKだけしか記載していない場合は、
記載してあるループ文が中断されるだけです。
全部のループを抜けたい、あるいは複数のループを抜けたい場合は
‘BREAK ループ数’という表現にしましょう。
3つの多重ループでサンプルをお見せします。

この投稿の続きを読む »

タグ

2012年7月26日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

REPEAT-UNTIL

REPEAT-UNTIL

REPEAT-UNTILによるループ処理を行う
REPEAT
処理
UNTIL 条件

・条件・・・判定結果がFalseの場合ループが続き、Trueで終了

最低1回は実施されるループ

REPEAT-UNTILは条件がFalseの結果を返す限り処理を続けるループ文です。
なのでUNTIL FALSEとした場合は、BREAKを入れない限り、無限ループとなります。
FOR-NEXTループと異なり、カウンタは無いため、
自分で用意する必要があります。

//カウンタは自分で用意
CNT = 1
REPEAT
 PRINT "CNT:" + CNT
 CNT = CNT + 1
UNTIL CNT > 100

WHILE同様、状態が変わるまで処理を続ける場合にはREPEAT-UNTIL、但し・・・

REPEAT-UNTILは先に処理が記述され
その後でUNTILの所で、条件判定が行われています。 大事なポイントは、REPEAT-UNTILはループ終了条件だったとしても
最低1回は処理が実行されると言うことです。
WHILE-WENDは条件がTrueの限りループ
REPEAT-UNTILは条件がFalseの限りループ(Trueになったら終了)
という点もご留意下さい。

マウスが移動したら処理を止める

マウスの起動時の位置を記憶しておき、
吹き出し表示という処理を行い続けます。
もし、マウスの位置が移動したら、
処理を終了するというスクリプトを書いてみましょう。
以下のようになります。

この投稿の続きを読む »

タグ

2012年7月19日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

WHILE-WEND

WHILE-WEND

WHILE-WENDによるループ処理を行う
WHILE 条件
処理
WEND

・条件・・・判定結果がTrueの場合ループが続き、Falseで終了

基本のループ

WHILE-WENDは条件がTrueの結果を返す限り処理を続けるループ文です。
なのでWHILE TRUEとした場合は、BREAKを入れない限り、無限ループとなります。
FOR-NEXTループと異なり、カウンタは無いため、
自分で用意する必要があります。

//カウンタは自分で用意
CNT = 1
WHILE CNT < 100
 PRINT "CNT:" + CNT
 CNT = CNT + 1
WEND

状態が変わるまで処理を続ける場合にはWHILE-WEND

他にもFOR-NEXTやREPEAT-UNTILといったループがあるため
最初はその使い分けが分からないかもしれません。
FOR-NEXTは回数や個数が分かる場合にループに使うケースが多いのに比べ
WHILE-WENDやREPEAT-UNTILは
状態の変化を判別するループに使われることが多いです。
なお、WHILE-WENDは条件判定が処理の前にくるため
判定結果によっては、1度も処理が実施されない場合もあります。

スクリプト起動から5秒経過するまで処理を続ける

スクリプトを起動してから5秒を判定するといっても、いつ起動されるかわからないので
5秒後の時間を指定することもできません。
ここでWHILE-WENDの出番です。
スクリプト起動時の時間を取得し、5秒以上経過するまでを条件に
スクリプトを書いてみましょう。以下のようになります。

この投稿の続きを読む »

タグ

2012年7月18日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

FOR-NEXT

FOR-NEXT

FOR-NEXTによるループ処理を行う
FOR 変数 = 初期値 TO 終了値 [ STEP 刻み値]
処理
NEXT

・変数・・・カウンタ変数
・初期値・・・開始値
・終了値・・・最終値
・刻み値・・・カウンタ変数の1ループあたりの増加数、STEP省略時は1

パラメーターは多いけど使いやすいループ

FOR-NEXTはある処理を繰り返す(ループ処理)場合に便利です。
最初に登場するパラメーターが最低でも3つもあるのが少し戸惑いますが、
慣れてしまえば簡単です。

FOR A = 1 TO 10
 PRINT "A:" + A
 PRINT "->Hello For Next"
NEXT

上記はFOR-NEXTの簡単なサンプルです。
カウンタ変数として「A」に初期値1を設定。
その後、Aが1ループごとに1増加しています。

回数や個数が決まっている場合に便利なループ

他にもWHILE-WENDやREPEAT-UNTILといったループがあるため
最初はその使い分けが分からないかもしれません。
FOR-NEXTはループ回数が決まっている場合や
対象の個数が決まっている場合に使うケースが多いです。
100回実行する(FOR A = 1 TO 100)、
配列や文字数だけ実行する(FOR A = 1 TO LENGTH(TEXT)、FOR A = 0 TO (RESIZE(ARRAY) – 1))、
こう言った場合はFOR-NEXTの出番です。
逆に、状態が変化するまで、処理を続けると言った場合には
WHILE-WENDやREPEAT-UNTILを使います。

STEPの刻み値を利用し、カウンタが減少していくループ

さて、ちょっとだけ応用。
STEPの後に数値を指定することで、カウンタの増加数を自由に決めることができます。
この機能を利用して、カウンタが減少していくスクリプトを作りましょう。
このようになります。

この投稿の続きを読む »

タグ

2012年7月16日 | コメントは受け付けていません。 |

カテゴリー:構文・制御文

このページの先頭へ