Dartの勉強7:繰り返し
繰り返し処理にはforとwhileとdo-whileの3つの方法があります。
void main() {
//for loop
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
print(i);
}
}
List planetList = ["Mercury", "Venus", "Earth", "Mars"];
for (String planet in planetList) {
print(planet);
}
//while
var i = 0;
while (i < 10) {
print("$i in while");
i++;
}
do {
print("$i in do-while");
i++;
} while (i < 10);
}
実行結果は
0
2
4
6
8
Mercury
Venus
Earth
Mars
10 in do-while
となっております。
特徴は、forはカッコ内の処理が終わると勝手にカウントをして所定の条件に達したら終わってしまいます。
whileは続いて指定する条件に合致しないと処理は行わず、次のブロックに進んでしまいます。i=10とか指定していると、処理せず先に行ってしまいます。
do-whileは、必ず1回はdoの後の処理を行って、条件にあってしないと終わります。
breakを入れると実行中の繰り返し処理を途中で終わります。また、ラベルをつけてラベル指定でbreakすると、そのラベルの処理を終わらせます。
continueは、処理は終わらずスキップします。
void main() {
outerLoop:
for (int i1 = 0; i1 < 5; i1++) {
for (int i2 = 0; i2 < 5; i2++) {
if (i2==1){
continue;
}
print("$i1 $i2");
if (i1>3 && i2 > 2) {
break outerLoop;
}
}
}
}
実行結果は
0 0
0 2
0 3
0 4
1 0
1 2
1 3
1 4
2 0
2 2
2 3
2 4
3 0
3 2
3 3
3 4
4 0
4 2
4 3
ということで、i2が1の時はcontinue以降の処理は飛ばされて、i1が4でi2が3になったところで、外側のforループが終了しています。
計算中にある一定の値を超えたら終わるとか、0がでたらその処理は飛ばすとかで使ったりします。
continueもラベル指定できますが、ラベル指定して外側のループに飛んだら、内側のループは以降の処理が全て飛ばされてしまいます。
void main() {
outerLoop:
for (int i1 = 0; i1 < 5; i1++) {
for (int i2 = 0; i2 < 5; i2++) {
if (i2==3){
continue outerLoop;
}
print("$i1 $i2");
if (i1>3 && i2 > 2) {
break outerLoop;
}
}
}
}
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
3 0
3 1
3 2
4 0
4 1
4 2