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


前回の感想,質問より

Q.
最後の部分のsolutionでの解法だが、elseifは使えるのであろうか。if とendを つなげる形になったが、こころもとないし、冗長でわかりづらいのではないかと 思えてしまう。
A(滝瀬).
elseifでなくelsifとすれば使えますが,この講義ではifとelseのみを扱います. http://www.rubylife.jp/ini/if/index7.html などを参考にするといいと思います.
A(田中).
補足します.講義のサンプルで,
def sign(x)
 if x < 0
  -1
 else
  if 0 < x
   1
  else
   0
  end
 end
end
のように書いている関数signは,elsifを使うと
def sign(x)
 if x < 0
  -1
 elsif 0 < x
   1
 else
   0
 end
end
のように書くことができます.講義のサンプルなどでは elsif を使わずに if と else のみで示しますが,課題の回答では講義で 扱っていない elsif などの構文を使っても構いません.
Q.
german.rb
include (Math)

def german()
	[[[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],
	[[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0]],
	[[1,1,0],[1,1,0],[1,1,0],[1,1,0],[1,1,0]]]
end
isrb上で
load("./german.rb")
show(german())
ドイツ国旗を実現する配列をいちいち書くのが面倒だったので、別のファイルに、その配列を返す定数関数 german()を定義して、isrb上でそれをshowする、という手法を取った。german()の中身は、繰り返し処理およ びmake2dを使えばより冗長じゃなく書けるが、今回は書いていない。
A.
定数関数を上手に使いこなしていますね.良い発想だと思います.
Q.
今回の後半の講義は一学期の論理回路の苦戦を思い出したので、面白くなかったです。
A.
はい.組み合わせて複雑な条件式を作る部分は論理回路で扱ったブール代数と密接に関連しています. ブール代数の知識を使って,複雑な条件式から単純な条件式に書き換えできると,プログラムの実行 速度が向上したりするメリットがあり,達成感がありますよ.
Q.
1つ疑問がありますが、Shiftキーは左右で違いはあるのでしょうか?
A(滝瀬).
どちらの小指でも押せるように左右にありますが,特に違いはありません.
Q.
あとemacsなどのテキストエディタからshowコマンドを使えるようにしたい場合はどう したらいいのですか?今後また画像を描画するようなことがあれば是非教えてください。
A.
Emacsを使っている場合は,M-x(オプションキーを押しながら[x]を押す.[Esc]キーを押した後に,[x]キーを押しても良い) の後に「shell」+リターンキーとやってコマンド入力ができる状態にして,そこで
 cd ~/is12
 isrb
を実行することができます.

前回の課題について


投票システム

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

今日の練習,投票

関連リンク


教科書の補足


今日の課題