#navi(マニュアル/基本)
*繰り返し [#p104ae3f]
#contents
*for [#xba05f84]
for文は
#code(aya,nooutline,nolink,nonumber){{
for 初期条件; 終了条件; 各ループの最後に実行される処理 {
...
}
}}
のように書きます。
たとえば10回ループさせたい場合は
#code(aya,nooutline,nolink,nonumber){{
for _i = 0 ; _i < 10 ; _i = _i+1{
_i+"回目\n"
}
}}
とすると0回目,2回目...9回目が改行しながら出力されます。_i++は各ループ処理の後、つまり_i+"回目\n"が出力された後に実行されることに注意してください。
この例では"9回目\n"が出力された後、_iが+1されて10になり、判定条件が偽になるためループが終了し、0から9で合計10個のループ回数になります。
また、ループ文でよく使う演算子として++, --, +=, -=などがありますが、これは
-a++ は a = a+1
-a-- は a = a-1
-a+=b は a = a+b
-a-=b は a = a-b
と同じです。従って上のfor文は
#code(aya,nooutline,nolink,nonumber){{
for _i = 0 ; _i < 10 ; _i = _i++{
_i+"回目\n"
}
}}
と書いても構いません。
また、YAYAにおいては、for文はif文と違い
また、YAYAにおいては、for文や後述するwhile文ではif文と違い
for(_i = 0; _i < 10 ; _i++){
...
}
と条件式を()でくくるとエラーとなるので注意してください。
のように条件式を()でくくるとエラーとなるので注意してください。
*while [#l78d197c]
for文のほかにwhile文を使ってもループを書けます。
while ループ終了条件 {
...
}
のように書きます。
前述のfor文は
#code(aya,nooutline,nolink,nonumber){{
_i = 0
while _i < 10 {
_i+"回目\n"
_i++
}
}}
のように書けます。
以下のようにwhile文の判定式を常に正とすると無限ループになり、処理が終わらなくなります。
#code(aya,nooutline,nolink,nonumber){{
while 1 == 1 {
...
}
}}
1 == 1は恒等式で常に成立するので無限ループになります。またYAYAではbool値(真偽値)は数値の0か0でないかで判定されるので
#code(aya,nooutline,nolink,nonumber){{
while 1 {
...
}
}}
も無限ループになります。
* breakについて [#j60dd51a]
for文、while文の途中でループを抜け出したいときはbreakを使います。
たとえば
#code(aya,nooutline,nolink,nonumber){{
_i = 0
while 1 {
if (_i >= 10){
break
}
_i+"回目\n"
_i++
}
}}
この処理は、while文の条件式が常に真なので無限ループに見えますが、while文の中で"_iが10以上になったらbreak"の処理が入っているので、前述の10回ループする文と同値の処理になります。
// ** continue
#navi(マニュアル/基本)