10/23 数の計算と関数・配列による画像の表示


前回の感想,質問より

Q.
def feet_to_cm(f,i)
  30.48*(f+i/12)
end
A(増子さん).
feet_to_cm関数で,
30.48*(f+i/12)
とありますが,iが整数のときに問題が発生します.整数/整数の結果がどうなるかを思い出しましょう.
A
「5/12」のような例では整数同士の除算というのが見て分かりますが,「i/12」のように片方が変数の場合は, と変数の値によって動作を変えます.「代入を '=' で書く」と並んで,「整数同士 の余りを切り捨てる除算を '/' で書く」のは,初心者向けのプログラミング言語で は好ましくないと個人的には思います.これを防ぐために,「代入を ':='と書く」, 「整数a, b の割り算は a `div` b と書く」などの工夫をしているプログラミン グ言語もありますが,必ずしも広く受け入れられているわけのが不思議なところです.
Q.
小数点で値を出したいときに、例えば
 a/3.0
とし、aに値を代入すれば値は小数になりますが、 引数にa,bを取り、
a/b
の値を小数で表示させたいときは、aやbにわざわざ小数の形で値を代入しなければいけないのでしょうか。 > 型の定義の方法など、何かいい方法があれば知りたいです。
A.
1.0を掛けるとか,0.0を足すという方法もありますが,整数値を実数値にするためのRuby言語の標準的な方法は,式の後に「.to_f()」をつけるというものです.
  irb(main):001:0> x=1 
 => 1
  irb(main):002:0> y=2 
 => 2
  irb(main):003:0> x.to_f() 
 => 1.0
  irb(main):004:0> x.to_f()/y.to_f() 
 => 0.5
  irb(main):005:0> (x/y).to_f()
 => 0.0
という例を見ると使い方は分かると思います.
Q.
特に最後のプログラムを保存した りなんだりするところは、授業の進行速度に追いつくことができませんでした。何度か繰り返して説明していた だけると助かります。
Q.
miの使い方の説明をもう少しだけして頂きたかったです。
Q.
今回はmiを使って関数を保存するところでつまづきました。主に口頭で説明する部 分はもう少しゆっくり説明してもらえると助かります。
A
すべてをスライドで説明するのは難しいので,はいぱーワークブックなどを 参照してもらうところがあります.ファイルの保存でつまづくと,今後,大変になっ てくるので,今日の講義の最初に少し時間を取って説明する予定です. 
Q.
miを開くと始めはnormalモードで起動してしまうのですが、初期設定をrubyモードにすることは出来ないのです か。
A(増子さん).
miのメニューから「mi」->「環境設定」を選択し,メニュータブに「Command+Nで開くモード」というオプションが有る ので,コンボボックスからRubyを選ぶことでできます.
Q.
最初、sqrt関数を使わずに2分の1乗を用いて式を作ったのですがうまくいきませんでした。
A(増子さん).
うまくいかなかったプログラムも掲示板に書きましょう.TAや先生が問題点を指摘できます.
A.
xの平方根を計算するのに,
x**(1/2)
としたのかもしれませんね.「1/2」は整数同士の除算なので,余りを切り捨てて0になってしまい,x**0 すなわち1になってしまいます.
Q.
defからメソッドの定義が始まるのはなんとなくわかりやすくて嫌いじゃないです。 ただ返り値の型がわかりにくい気もします。
A.
実は,Ruby言語では他の言語のように return で明示的に値を返すこともできます.したがって,
 def distance(x,y,u,v)
  return Math.sqrt((u-x)**2+(v-y)**2)
 end
のように書くこともできます.ただ,教科書は,「関数の最後の式の計算結果を返す」のが分かりや すいと考えて作られているので,それで統一しています.ただし,課題を解く際,試験の解答を作成 するときには,教科書で扱っていないRuby言語の書き方をしても問題ありません.
Q.
変数宣言時に型を宣言しないのが凄く違和感があってもんにょりします。 ぼくはCげんごにかえりたいです
A(増子さん).
MacにはC(以外にもいろいろ有りますが)コンパイラが入っているので, 投票に参加しつつC言語でプログラミングをされてはいかがでしょうか. ruby言語以外のプログラムでも,TAは目を通します.
A.
この講義は「Ruby言語を使う」のは目的ではなく手段なので,個人的に他の言語を使うのは 構いません.ただし,試験の際には,Ruby言語が読み書きできることが前提に出題されててい るので,理解はしてください.

前回の課題について


補足


投票システム

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

今日の練習,投票

関連リンク


教科書の補足


今日の課題