11/9 条件分岐と繰り返し・関数から「計算」へ


前回までの補足


前回の感想,質問より

Q.
青いマスを1つ出そうとして、
g=[0,0,1]
=> [0, 0, 1]
show(g)
としたところ、「黒・黒・白」という画像が出てしまいました。 青いマスを1つ出すにはどうすればいいのでしょうか。
A.
show(x)という関数は, と見なして表示します.1 x 1のサイズのカラー画像として青いマスを出すには,
g=[[[0,0,1]]]
show(g)
としてみてください.
Q.
b=[0,0,0]
r=[1,0,0]
y=[1,1,0]
g=[[b,b,b,b,b],
   [r,r,r,r,r],
   [y,y,y,y,y]]
show(g)
ドイツ国旗の作り方ですが、こんな風に先にb(黒),r(赤),y(黄)を作っておいて、 あとからその文字を代入するという形にすると簡単でした。
A
はい.これでもかまいません.ただ,このような作り方をすると,
 g[0][0][1]=1
 show(g)
とやった時に,左上の点だけでなく上の5点が黒から緑になってしまうので,混乱する人がいるかもしれません.

Q.
miの方でisrbを起動する部分まで書き込んでおくことはなぜできないのでしょうか?
A.
以下のようにしてできなくはありませんが,面倒なのでお勧めできません.
Q.
ちょっと先まで進んだのですが、is_evenのところの % ってどういう意味なんでしょうか。 わからないままに入力しています…次回説明いただけるとうれしいです。
A.
教科書5ページ「電卓代わり」のところを見てください.
7 % 2
1
になることと,説明で「割り算の余り」と書かれています.
Q.
このファイルをmiで作成してターミナルでloadして画像を呼び出そうと したときにload後配列を呼び出そうとすると はじめはうまくいきませんでしたが、 「d=」を「D=」というように配列の文字を大文字にするとうまくいきました。 なぜ小文字ではいけなかったのでしょうか?
A.
TAの増子です. rubyでは,識別子(変数の名前など)の先頭の文字が大文字のものを定数として扱い,先頭が小文字のものをローカ ル変数として扱います. 以下に説明があるので参照してください. http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2fvariables.html 対処法としては,aを配列を返す関数として定義するのが分かりやすいかと思います. 例えば,ロードするファイルに
def a()
[0,0,0]
end
と書いて,loadした後にshow(a)と入力すると上手く行きます.
Q.
投票に関してなのですが、投票が全然ない時間帯があったり、逆に投票連発の時があったりするので、時間的に等間 隔に投票を配置してくれるとありがたいです。
A.
そのようにしたいとは思っているのですが,投票に向いた部分とそうでない部分があり,なかなかできないでいます.
Q.
RGB画像が絵の具のように減法混色ではなく、光のように加法混色だというのは知らなかったです。何かそのように する理由はあるのでしょうか。
A.
おそらくは,「カラーディスプレイ可能なデバイスの多くがそのように指定するのが自然だった.」という歴史的な 理由に基づくものだと思われます.コンピュータ上でもCMY, CMYK等のRGB以外のカラーモデルが使われることもあります.
Q1.
スライドでは教科書に載っているものとは別の練習問題も載せて練習量を増やしていただきたいです。 先のスライドも見ていきたいのでもうすこし進度が速いと嬉しいです。
Q2:
周りを見ていると暇にしている人も多いようなので発展課題や面白い問題とかを出してもらえるといいと思います。 意欲的な人も多いので授業で扱わなくても発展的な内容のスライドなどを参考としてアップしていただけるといいと 思います。
A.
今のところは,スライドは扱う部分だけを載せる予定です.まずは,教科書の練習問題を解いて,
 ruby check.rb ex01.rb
のようにチェックプログラムを動かしてクリアすることを目標にしてください.それでも時間が余る 人がいる場合には考えます.

前回の課題について


投票システム

vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.

今日の練習,投票

関連リンク


教科書の補足


今日の課題