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 選択肢番号
のように使います.
今日の練習,投票
関連リンク
教科書の補足
今日の課題
- 講義中に投票を求められるので,投票システムを使って投票をしてください.
- 講義で用いた練習問題で自分が解いたプログラムとその説明,今回の講義の感想,改善意見等(100文字以上)をCFIVEの掲示板CFIVEの掲示板11/6の課題,質問に書き込んでください.