UWSCのループについて教えて下さい

UWSCのループについて教えて下さい。ループの方法や、それぞれの制御文の違いが知りたいです。
ループ、いわゆる繰り返し処理ですが、UWSCにはいくつかの実現方法があります。
参考になる記事を下に記します。

【プログラミング不要】
プログラムを書くことなく、起動時の設定で、処理回数を選ぶ方法
繰り返し処理を行いたいけど制御文が難しい

【プログラミング必要】
FOR-NEXT・・・指定回数の処理を実行する
制御文:FOR-NEXTの解説

WHILE-WEND・・・指定した条件を満たす間、処理を実行する
制御文:WHILE-WENDの解説

REPEAT-UNTIL・・・指定した条件になったら、処理を終了する
制御文:REPEAT-UNTILの解説

繰り返し処理を途中で終了、継続するCONTINUE、BREAK
CONTINUE
BREAK

上記3つの繰り返し処理制御文の使い分けについて
UWSCでFORとかREPEATとか繰り返し処理は何を使うのがベストですか?

その他参考になる、掲示板の投稿
FOR~NEXTでカウント中のカウンター(a)は増やすことは出来ないのでしょうか?

タグ

2013年5月24日 | コメントは受け付けていません。 |

カテゴリー:Q&A

複合キーワードを一瞬で作るスクリプト

アフィリエイターは、複合キーワードを作成する必要に迫られる場面が多々あるのではないでしょうか?
例えば、アドワーズ出稿する場合などは、何通りものキーワードの組み合わせを用意しないといけません。

ということで、
今回は簡単に複合キーワードを作成できるツール
を公開します。 自動化できる作業はすべて自動化しましょう。

どんなスクリプトにする?

あるキーワード群Aとキーワード群Bをすべて組み合わせ、PRINTで表示する関数を作ります。

必要なモノ

この辺を組合わせて作成します。

スクリプト

DIM str1[] = "日本","ロシア","中国","イギリス","フランス"
DIM str2[] = "酒","ウォッカ","老酒","ビール","ワイン"

FOR num = 0 TO length(str1)-1	

	FOR cnt = 0 TO length(str2)-1	
		STR = str1[num] + " " + str2[cnt]
		print STR
	NEXT

NEXT

実行すると、すべての複合ワードパターンが一瞬で出来ます。

※組み合わせが多くなると、プリントで表示しきれなくなることがあるので、
その場合は、ファイルに書きだすようにすると良いでしょう。

タグ

2013年4月22日 | コメントは受け付けていません。 |

カテゴリー:アフィリエイター

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日 | コメントは受け付けていません。 |

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

指定回数を繰り返す(FOR)

FOR 変数 = 初期値 TO 終了値 [STEP 刻み値]
 

処理

NEXT       // NEXTの後に変数を書いてはダメ

「変数」が「初期値」から「終了値」の条件を満たす限り、
繰り返し処理を行います。
1回実行するたびに「刻み値」分だけ「変数」の値は増加していきます。
※刻み値を省略した場合は、変数は1づつ増加します。

FOR~NEXTはかなり使用頻度の高い制御文です。

「UWSC大好き」と100回表示するサンプル

FOR KAISU = 1 TO 100
	PRINT "UWSC大好き"
NEXT

「変数」であるKAISUを処理で使用することも可能です。

KAISUの増加を確認するサンプル

FOR KAISU = 1 TO 100
	PRINT KAISU
NEXT

STEPの増加を確認するサンプル

この投稿の続きを読む »

タグ

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

カテゴリー:逆引き関数

まとめて特定の組合わせの文字列をつくりたい。

まとめて特定の組合わせの文字列をつくりたい。
具体的には、アフィリエイト用のキーワードを作りたいと思っています。
例) 
Aグループ
FX
株式
日経225
先物
Bグループ
登録
入会
口座開設
比較

それぞれのグループのワードを全て組合わせたキーワードを作成したいです。
FX 登録、FX 入会、FX 口座開設、FX 比較、株式 登録、株式 入会・・・
といった具合です。よろしくお願いします。

EXCELでもできないことはありませんが、
すべての組合せをいちいちやるのは大変ですね。

また、VBAを利用する方法がありますが、
UWSCと較べると少しハードルが高いようです。

UWSCならば、FOPEN関連のスクリプトを使えば簡単にできます。
前提として、
Aグループのワードを1語づつ改行したテキストファイルをA.txt
同様にBグループをB.txtとします。

PRINTで組合せを表示するサンプル
///ファイルオープン
fid	= FOPEN("A.txt", F_READ)
fid2	= FOPEN("B.txt", F_READ)

For KAISU_A = 1 to FGET(fid, -1)

	STR_A = FGET(fid, KAISU_A)	//A.txtのデータを取得
	For KAISU_B = 1 to FGET(fid2, -1)
		
		STR_B = FGET(fid2, KAISU_B)	//B.txtのデータを取得

		PRINT STR_A + " " + STR_B	//AとBを組合わせる

	NEXT
NEXT
FCLOSE(fid)
FCLOSE(fid2)

解説

使用している関数はFOPEN,FGET,FOR~NEXTになります。
これら個々の説明は関数一覧などを参照していただくとして、
サンプルの中で、覚えておきたいのは、
FGET(fid, -1)です。

通常、FGET関数は、fidの後は行番号を指定しますが、
「-1」の場合、ファイルの行数を返します。

これにより、ファイルの行数分、上からデータを取得できます。
このテクニックは非常に有効なので、覚えておくと便利です。

後は、すべての組合せを実現するためにFORの中でFORをかます
というテクニックですべての組合せを行えます。

さらに便利に使いたい場合は、
A.txtをフォームから生成させる方法などがあります。

タグ


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

カテゴリー:Q&A

繰り返し処理を行いたいけど制御文が難しい

繰り返し処理を行いたいですが、制御文の書き方が難しいです。どうすればいいでしょうか。
制御文を覚える前に、実行回数を設定できる機能を覚えてみましょう。

ある処理を何回か繰り返したい時に制御文は大変便利です。
WHILE-WEND、REPEAT-UNTIL、FOR-NEXT。
この3種類がありますが、書き方や使い分けは
最初のころは難しく感じると思います。


まずはこういった制御文を覚える前に、
実行回数を簡単に設定できる方法があるので
お伝えしましょう。

*

上の図のようにスクリプト・ファイルを開く際に
ファイル名の他に
実行回数が指定可能です。

ここで任意の数を入力すると
その回数だけスクリプトを実行してくれます。

WHILE-WEND、REPEAT-UNTIL、FOR-NEXTは、
どの文でも繰り返し処理は実行できます。

どの制御文も微妙な差異がありますので
用途に応じて使い分けるのがいいでしょう。

簡単なスクリプトでその違いを見てみます。

この投稿の続きを読む »

タグ

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

カテゴリー:Q&A

このページの先頭へ