この動画では「forループ」についてお話しします
「whileループ」については勉強しましたね
なんならこの動画を飛ばしてもらってもいいんです
forループなんて必要ないんですよ
単にwhileループを短く書くだけなんですから
何度も何度も書きたくなるようなwhileループもあるわけです
でもProcessingの作例を見たり、いろいろやっていくうえで
forループを使った方が便利な場面も出てくるでしょう
ですからforループに触れてみて、使ってみたほうが良いと思います
ただし言っておきたいのは、新しい機能など何も付け加えず
ただwhileループを短く書くための方法を学ぶだけということです
forループの方がやや難しく感じるかもしれませんが
まあそれはこれから見ていきましょう
この動画ではまずwhileループをみて
次にforループをみて
whileループをforループに書き換える方法を学んで
そして実際にProcessingコードとして実行してみます
さて、これはこの間の練習問題の答えです
動きのないプログラムに書き換えておきました
steup()もdraw()もなく、実行されるのは
「x=0から始めて画面の端までリピートしましょう」
「y=0から始めて画面の下までリピートしましょう」
こういう内容です
この動画では水平の線と垂直の線を使って
こういったグリッドパターンを描いていきます
そのためにはまず「x=0」から始めて
xの値がウィンドウの幅より小さい間は
描画して、値を増やして...
つまり線になるものを描いていきます
あ〜 「線」ね
線は(x, 0, x, 高さ)の点からスタートして
ある値でxを増加させていきます
任意の値ですから20ピクセルとしておきます
今書いているwhileループはひたすら端まで線を描いていくものです
さてこのループの構成要素はなんでしょう?
3つありますが一つは初期条件です
ループが開始した直後に初期値となるものをここで設定します
ここではx=0となりますね
他の要素はなんでしょう?
ブール式です
この式をチェックして結果がtrueであれば、ループが続いていきます
falseであればループは終了します
もう一つの要素は?
増加の設定です
ループが終わるまで毎回変数を増加させていくんです
最終的には終了条件を満たすことになります
さて、forループには基本的に3つの要素が必要となります
初期設定、テストされるブール式、
そしてループの最後に行われる内容です
forループではこれらを1つの文で書くことができます
こんな感じ
「for」
int x = 0; (セミコロン)
x < 0; (セミコロン)
x = x + 20、カッコ閉じる
波カッコ、波カッコ閉じる
ちょっとカメラを確認しなきゃ
よし、ちゃんと波カッコが映ってる
見えますね、素晴らしい
近づいて「ハロー」なんて言ってみたりして
やれって言われたんだよ、バカらしくて恥ずかしいね
まあここはカットすればいいや
ここに要素その1
ここに要素その2
そして要素その3
要素その4はループの中で実行する内容です
ここでは「線を描く」こと
2つのループは100%一致していることがわかります
違いといえば...
forループは3行あったコードを並べて1行にできること
コードを短くすることができますね
言いたいことは「ループはx = 0から始まって
x < 幅を毎回確認して
ループの終わりで値を20増やす」
これを最初に学ぶあなたのような人にとっては
こっちの方が複雑にみえますよね
whileループでは上から順番に実行されるわけですから
まずこれを実行して、式をチェックして
線を描いて、それから値を増加する
式をチェック、描画、増加
式をチェック、falseならループを終了
でもforループでは順番通りじゃありません
1番を実行、2番を実行、描画を実行、
3番がtrueならまた2番を実行... ちょっと不規則なのです
だんだん理解できるようになるのですが
練習問題として
今まで書いたコードの中でwhileループを含むものを探して
forループに書き直して同じ結果が得られるかみてみると良いでしょう
いったん動画を止めて、やってみてもよいです
先程のグリッドの例を使って、これをコードに入れて、実行する
待った、もう僕がやってたじゃないか
まあでも何か違うものでやってみればいい
考えておきます
えっと何分経ったかな...
5分しか経ってない!素晴らしい動画だね
とりあえずこれをコードに入れて、ちゃんと動くことを確かめましょう
ここではxとyそれぞれにループがあって
どちらもwhileループなのでわかりやすくなっています
これはデモンストレーションなので実際には使わないような書き方をしますが
xの方はwhileループのままにしておいて
yの方をforループにしてみます
forループでまず必要なのは、初期条件でした
次にブール式、y < 高さ
増加の式
それからループの中で行う内容です
線を描くこと
2つのループは考え方としては同じなわけです
一つは水平方向の値、もう一つは垂直方向の値に関わっています
でもforループではギュッと縮まったのがわかりますね
whileループでは5行あるわけですが
こういうループを何度も実行するなら短い書き方があった方が良いでしょう
さあ実行してみましょう、結果が同じになることを確認してください
同じになりました
シンプルで簡単な練習問題としては
このxの方をforループに書き換えてみるのが良いでしょう
実際そんなに簡単な話でもないですけどね
妙な書き方ですよね
セミコロンだのいろんなカッコだの、順番がどうだとか
慣れるにはちょっと時間がかかリますけど
これでwhileループとforループの役割がどんなふうに理解されているか
つかんでもらえたらと思っています
要するにforループはwhileループの短い書き方
とはいえwhileループの方がフレキシブルです
変なコードを何行も並べて
一方forループはとても限定的で選択肢は3つです
かなり短い動画になったんじゃないかな
廊下で誰か笑ってるよ
きっと僕が一人で喋ってるのを聞いて笑ってるんだろう
たしかに笑えるよね
OK、今回はここまで
次の動画でお会いしましょう