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