MEL合宿 -16日目-は、「MEL合宿 -15日目-」にやったfor文の「もう一つの書き方」をやっていきたいと思いまーっすv(*´ω`*)v
もう一つのfor文
前回のfor文は、「配列から1つづつ取り出して繰り返し処理する」と言うものでした!もう人つは、条件式を併用して行う方法です。プログラム的には、コチラのほうが一般的?な書き方かもしれません。
for(初期化の式; 条件式; ターン毎の処理の式){ 繰り返し行いたい処理 }
このfor文に処理が進むと、以下のような処理が行われます。
- 「初期化の式」を実行し、変数を初期化します。
- 「条件式」が成り立つか調べます。成り立たなければ繰り返し処理は終了します。
- for文のブロック内に書いた「繰り返し行いたい処理」を行こないます。
- 「ターン毎の処理の式」を実行します。
- 2に戻ります。
もーーーーーっし、絶対成立しかしない式を書いてしまうと、、、
永遠の18歳
☆(ゝω・)
for文の処理がずっと終わりません。これを「無限ループ」と言います。Mayaを強制終了する以外に止める方法はありませんのでご注意ください(`・ω・´)ゞ
簡単なサンプルとして、10回繰り返すようにしてみます。
for($i=0; $i<10; $i++){ print ($i+"\n"); }
処理の内容を箇条書きすると、以下のようになります。
- 「$i=0」を実行し、変数を初期化します。
- 「$i<10」が成り立つか調べます。成り立たなければ繰り返し処理は終了します。
- for文のブロック内に書いた「print ($i+”\n”);」を行こないます。
- 「$i++」を実行します。(変数「$i」の値に1足します)
- 2に戻ります。
前回のコードを書き直す
前回のコードを、今回やったfor文の書き方に変えてみます!
前回は配列からデータを取り出すだけでしたが、今回は繰り返す条件を作らなくては行けません。配列の大きさを調べる「size」を使って、繰り返す回数を制御してみましょう!
{ string $selection[] = `ls -sl`; for($i=0; $i<`size $selection`; $i++){ } }
続いては、繰り返し処理の中身です!こちらも前回は取り出したデータが変数に代入されていましたが、今回はされていません!(´・ω・`)
そこで、変数「$i」をうまく使っていきます。変数「$i」は繰り返すごとに数値が1つづつ増えていきます。
この数値、配列のインデックス指定に使えそう!!
配列のデータを取る時は「$selection[2]」といった具合に取り出したい数値をしていするので(覚えているかな!?)、インデックス値の部分を変数「$i」にします(`・ω・´)ゞ
{ string $selection[] = `ls -sl`; for($i=0; $i<`size $selection`; $i++){ string $shapes[] = `listRelatives -s $selection[$i]`; if(`size $shapes` >= 1){ print ($selection[$i]+"\n"); } } }
まとめ!
- 「for(初期化の式; 条件式; ターン毎の処理の式){}」書くことで、条件が成り立つ間繰り返す!
- 条件が成り立たなくなるようにしないと、永遠に繰り返す!
- 永遠に繰り返すことを、無限ループという!
- 配列のインデックス指定に、「$selection[$i]」のように変数を使うことができる!
それでは、次回もお楽しみに!(`・ω・´)ゞ