りな塾#16 FORの使い方いろいろ
だいぶ、FORには慣れてきたでしょうか?
最後に、もう少しFORループのいろんな使い方を見ていきましょう。
強制停止したい
ループ文は事前にセットした条件に合致するまで繰り返され続けますが、途中で強制的にループを止めたい時があります。
例えば、100ページある電話帳から電話番号を読み込むようなとき、記録されている電話番号の数が少なく10ページ以降は空白だとわかったら、その時点で次のページを読み込むループから抜け出したいですよね。
そんなときに使えるのが break; です。
for(i = 0; i < 100; i++){
if( i == 10){
// i が10になったらループを強制停止
break;
}
}
例えば、ifと組み合わせてこの様に書くと、iの値が10になった時点でループ処理は止まります。
無限ループ
あんまりやりませんが、まれに無限にループし続ける処理を書きたいときがあります。
for( ; ; ){
// 明示的にbreak;が呼ばれるまで
// ループし続けます。
}
条件をカラッポにすれば無限にループし続けます。
一生終了しないプログラムになってしまうので、必ず break; 処理(または、りな塾ではやってませんが、強制的にプログラムそのものを強制終了するなど)を入れて終了条件を明確にすることを忘れないようにしましょう。
条件を複数設ける
真ん中の条件は、IF文の時と同じです。複数条件を設けたいときは論理演算子で結合しましょう。
for( i = 0; i < 10 && name != "no name"; i++)
初期値と後処理を複数設ける
カンマで区切ることで、初期値と後処理も複数指定することができます。
for( i = 0, j = 100; j >= 0; i++, j--)
このようにすることで、ループ処理前に iとjの変数にそれぞれ0と100を代入することができます。
また、ループ処理がまわるごとに、i++とj--がそれぞれ実行されます。ループ処理のなかで、二つ以上の変数を連動させたいときに覚えておくと便利です。
今日のクイズ
さて、今日はいままでやってきた変数、IF、FORの知識をフル活用して以下の問題を解いてみてください。
前回、米国旗の星の部分を描いてください、という問題を出しました。
でも、よーーくみると米国の星の部分は★5 x 10行の星の羅列ではありません。。。星と星の間にはスペースがあって、、、★ x 6個の行と、★ x 5個の行が交互に連なっている9行の羅列です。
そこで、star、newLineに加えて、spaceという変数を用意しました!これらの変数を使って、上記のような正しい星条旗の星部分を表示してみてください。
star = '★';
space = ' ';
newLine = '\n';
この記事が気に入ったらサポートをしてみませんか?