10/31 演算と関数,関数から「計算」へ
前回の課題について
- 16人が提出,2人が未提出.
- 提出した人全員が,「第1回目」だけで80%以上の得点となった.この場合,第2回目は受けても受けなくても評価は変わらないが,自習用に活用してほしい.
感想, 質問より
- Q
- 関数の定義についてやりましたが、Rubyの場合変数の型を明示的に定義する必要はないのですね? (C++など、型によって関数をオーバーロードする必要があった気がします) 変数の型をstrictに考える(Cで言う型キャストとか...)ような記述法もあるのですか?
- A
- Rubyは変数を使うのに型宣言が不要な言語です.このような言語(たとえば
Lispなど)でも高速に実行するために明示的な型宣言(たとえばCommon Lispにお
けるthe)の構文が用意されている場合がありますが,現在のRubyではそのよう
な構文は用意されていないようです.
- Q
- マイクの音量をもう少し上げて欲しい(複数).
- A
- 検討します.
- Q
- 東京大学の後期課程でRubyを使う授業はあるのでしょうか。
- A
- 後期課程でRubyを使う講義があるかどうかは分かりません.相談員などから聞いた話によると,一昨年まで1年生用のプログラミング教育はJavaで行っていたのでJavaを使う講義が多いと思いますが,C,C++やFORTRANも使われているようです.
- Q
- 情報科学2のスライドの再帰的データ構造のところで何を表現しようとしているのか分からない。(特に木構造の定義の右)
- A
- 無理に「木構造と演算子と木構造の3組」などと書かずに
[ 木構造 , 演算子, 木構造 ]
などと書いた方が良かったかもしれません.あるいは,「変数名」や「数」なども含んだものも「木構造」と呼ぶのがわかりくいのかもしれません.
- Q
-
計算式をわざわざアスタリスクやらで囲って無理矢理配列の形にすることのメリットが全く感じられませんでした。
- A
- 「木構造」のスライドにある「因数分解や展開でどんどん数式の形が変わる.」ような時には文字列で扱うよりも木構造に直してからの方が扱いやすいのですが,具体的なプログラムなしに理解するのは難しかったかもしれません.
- Q
- この授業ではRuby言語を主に扱っているようですが、Ruby言語の専門書を買って、読む必要はあるのでしょうか?
- A
- Ruby言語の専門書は,「この講義で単位を取る」ためには不要ですが,この講義をきっかけにRuby言語でプログラムを書いてみようと思った場合には買っても良いとは思います.
- Q
- 「==」にはまだ慣れていなくて違和感があります。
- A
- 等式は「==」とする派と「=」とする派があっ
て,何十年も宗教戦争をしているのですが,最近は「==」派が優勢のようです.
- Q
- 初回にもらった「Rubyのインストール、利用法について」というプリントに書かれている「Rubyスクリプトの実行」の箇所で、「例としてscript/sample.rbを用意する」と書かれていますが、このscriptフォルダはどこにおけばいいのでしょうか。デスクトップですか?
- A
-
大学のMac環境の場合は,ターミナルを起動した時のカレントディレクトリがホームディレクトリになっているので,scriptディレクトリはホームディレクトリの下に作ると良いでしょう.
「ホームディレクトリ」,「カレントディレクトリ」などの意味は,はいぱーワークブック
の「13. ファイルシステム」のあたりを読むと分かると思います.
- Q
- 第三回のスライドの12ページですが、&&のほうが||より優先度が高いのでしょうか。それとも先に書かれている方が優先度が高いのでしょうか。
- A
-
Ruby リファレンスマニュアル - 演算子式
にあるように,「||」よりも「&&」の方が優先順位は高いので,
a && b || c
は
(a && b ) || c
として扱われます.
- Q
- 連想メモリ・ハッシュ・属性表・レコードの違いが今イチよく分からない。 連想メモリというのは、離散写像を表現するモデルのことで、Rubyではハッシュという機構を利用して実現される。 属性表というのは、連想メモリのうち、定義域の値に名前を割り振ったもので、これもRubyではハッシュを利用して実現される。 レコードというのは、ある属性表を一つの値として見るということ。 という理解であっていますか?
- A
- はい.その理解で合っています.ただ,講義でもやったように,レコードと呼ぶ時は属性表のように属性を簡単に増やしたりはせずに,どのような要素をもつかをあらかじめ決めてあるというイメージがあります.
- Q
- ようやく関数などが出てきて、だんだんプログラムっぽくなってきてわくわくしてきました。そして、わくわくしたので早速フィボナッチ数列や自然対数の底を求めるプログラムを作りました。Rubyの無限多倍長の整数はとても便利だと思いました。 ただ、ブロックの終わりでの end が省略できないのが面倒だなあと思いました。
- A
- ずいぶん先のほうまで自習していますね.
まつもとゆきひろ×結城浩,Rubyを語る
にあるようにRubyのendがきらいだという人は多いようです.
今日の資料
今日の課題
- CFIVEに入って,
コース選択で,「情報科学(水4)」を選択して下さい.15:10以降に入ると,
「テスト」のところで,「10月31日分 1回目」が選べるようになるので,23:55までに解いて提出する.16:10以降は,「対象のモデル化とデータ構造(2) 2回目」が選べるようになる.
- クラス指定の受講生以外は,教材のダウンロード,課題の提出のため
CFIVEに登録する必要があるので,学生証番号を知らせるように.
- 「(1回目)]という小テストは講義の時間内(あるいは当日の夜23:55まで)に回答して8割以上を満点(8割以上は同じ),「(2回目)」という小テストは,講義期間内(試験前)のいつでも回答できて,10割を満点として採点する.この2回のうちの高い方を評価に用いる.