この動画では「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、今回はここまで 次の動画でお会いしましょう