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


前回の感想,質問より

Q.
そういえば、「!0」とか「!5」とか「!1」とか計算させるとfalseになるんですが、いったいどういうことでしょう……。なのに1 == trueはfalseなんですよね。不思議。
A
真偽値を要求されるところで,何を「真」と見なすかは言語によります.Rubyの場合は,false, nilなど少数の 「偽」と見なされる値以外は真と見なすようになっているようですね.プログラミング言語処理系を作る時に は,期待しない値が来ない時に例外処理を返すよりも,適当な基準で値を返す方が楽なので,そのようにするこ とは多いと思います.
Q.
作業としては単純なコピペの繰り返しで面倒だったので、 例えば「[0,0,0]を5回繰り返す」のような表記はできないのでしょうか。 もっと言えば、三行目の二列目を[1,0,0]にする、といったように座標を指定したりできないのでしょうか。
A.
「単純作業が面倒」と感じることは,プログラミングを上達するのに必要な能力の一つです.単純作業は コンピュータにやらせるに限ります.「できないでしょうか?」の答えは第3章ですぐに出てきます.
Q.
個人的な話ですが、僕はタイピングが苦手なので、いずれはブラインドタッチもでき るようになりたいです。
A.
音声入力や,タッチパネルからの入力が一般的になってきましたが,入力速度と正確さを考えると,当分の間, キーボードを使った入力が優位だと思うので,タイピングは練習しておいた方が良いでしょう. 自己流では限界があるので,はいぱーワークブックの「5.2.4 タイピングの練習」( http://hwb.ecc.u-tokyo.ac.jp/current/introduction/mouse_keyboard/keyboard/practice/ )で紹介されている自習ソフト 等を使って練習することをおすすめします.
Q.
ドイツ語選択者としてはなぜRubyではnullがnilなのかが気になります。
A.
「通常の値でないもの」を表す名前としてnullを用いるプログラミング言語と,nilを用いるプログラミング言語が あります.前者に C, C++, Javaなどがあり,後者にLispなどがありますが,Ruby言語の設計者のまつもとさんは, Lispとの類似性を重視してnilを使ったのではないかと思います.
Q.
配列の大きさを求めるやつで、最後に()がついている理由がよくわからない。 ()なしでも求められる?
A.
Ruby言語では,「引数の数が0の関数(定数関数など)は()なしで書いても同じ意味がある」という言語仕様が あるので,
 [1,2,3].length()
の代わりに
 [1,2,3].length
と書いても同じになります.ただし,この講義(および教科書)では,変数と関数呼び出しという動きが違うも のが同じように見えると混乱のもとになると判断しているため,「引数の数が0の関数も必ず()をつける」ように しています.

前回の課題について


投票システム

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

今日の練習,投票

関連リンク


教科書の補足


今日の課題