< Return to Video

6.3: For Loop - Processing Tutorial

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

more » « less
Video Language:
English
Duration:
07:00

Japanese subtitles

Revisions