11/4 関数から「計算」へ(1)


補足


質問と回答

Q.
講義で扱っていないRubyの記法は使ってはいけませんか?
A.
Ruby言語として正しければ使って構いません.
Q.
ただ、Array.new(2)をつかった2つのプログラムの違いがわからなかったので、 もっと詳しく説明していただきたい.
A.
要点だけを繰り返します.
a = Array.new(2)
b = Array.new(2)
for i in 0..1
    b[i] = a
    for j in 0..1
        b[i][j] = i
    end
end
のように書くと,

のような構造が作られて,見かけは二次元配列だがそれぞれの要素が独立に変更できないものになるのに対して,
b = Array.new(2)
for i in 0..1
    b[i] = Array.new(2)
    for j in 0..1
        b[i][j] = i
    end
end
b
のように書くと,

のようになって,要素を独立に変更できるようになるというのがポイントになります.長々と説明をしたのは,
def make2d(h,w)
  b=Array.new(h)
  a=make1d(w)
  for i in 0..(h-1)
    b[i]=a
  end
  b
end
では駄目で,なぜ,
def make2d(h,w)
  b=Array.new(h)
  for i in 0..(h-1)
    b[i]=make1d(w)
  end
  b
end
と書かなくてはいけないかということを分かってもらうためですね.

前回の課題について


投票システム

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

練習,投票

関連リンク



今日の課題