「繰り返し」とは、ある一連の動作を条件にしたがって繰り返し実行する構文です。もっとも単純な「繰り返し」は、次のようなものです。
repeat
(命令文)
end repeatこれはそのまま実行すると繰り返しし続けるため、「無限ループ」と呼ばれています。もちろんいつまでたっても終わらない繰り返しでは困りますので、どこかで繰り返しを抜ける動作が必要になります。
repeat
(命令文)
if (条件) then exit repeat
end repeat例えば条件文を実行して、条件に一致した場合は「 exit repeat 」を実行し繰り返しから抜けます。
次に、繰り返しの回数を指定したものがあります。
repeat x times
(命令文)
end repeat「 x 」に数を入れることで、繰り返しの回数を指定できます。
また、条件による繰り返しもあります。repeat while (条件文)
(命令文)
end repeatrepeat until (条件文)
(命令文)
end repeat「 repeat while ... 」は条件が真である間繰り返しを実行し、「 repeat until ... 」は条件が真になるまで(つまり偽の間)繰り返しを実行します。-- 参照
繰り返しの中でかなり頻繁に使われるのが、「数Aが数Bになるまで繰り返す」というものです。
repeat with i from A to B [ by C ]
(命令文)
end repeatこれは、整数Aが(整数Cずつ増えて)整数Bになるまで繰り返します。例えば、
repeat with i from 1 to 10 [ by 2 ]
(命令文)
end repeatとすると、1が2ずつ増えて10になるまでだから5回、繰り返しが実行されます。「 i 」には増えている途中の数が代入されます。つまりこの場合、「1、3、5、7、9」が順に代入されます。
尚、「 by ... 」を指定しなければ自動的に「 by 1 」が指定され、また「 by ... 」に負の数を代入すれば、「 i 」は減っていきます。例えば
repeat with theNum from 10 to 1 by -1
(命令文)
end repeatとすれば、「 theNum 」は10から1ずつ減っていき、最後に1になります。
「繰り返し」で一番面白いのは、次のものです。
repeat with i in (リスト)
(命令文)
end repeatこれはリストの各項目を順番に「 i 」に代入していき、全部代入し終わったら繰り返しを終了します。
例えば
repeat with aChar in { "A", "B", "C" }
display dialog aChar
end repeatを実行すると、"A"、"B"、"C" が順に表示されます。これは
set theList to { "A", "B", "C" }
repeat with i from 1 to ( count items of theList )
display dialog item i of theList
end repeatと書くのと同じことですが、最初の例の方がずっとすっきりスクリプトを記述できます。
基本的に「繰り返し」はすべての構文を使用する必要がありません。それぞれ他のもので代用できるからです。いくつかの構文を使いこなせるようになったら、それで十分スクリプトを組むことができます。まずは「 repeat x times 」と「 repeat with i from A to B 」を使って色々スクリプトを組んでみて下さい。
Reference
次へ進む