10/27 条件分岐と繰り返し
前回までの補足
- 第3章のスライドは改訂しました.古いファイルをダウンロードした人は,CFIVEの教材のところで新しいものをダウンロードしなおしてください.
- miの改行コードの変更は,miを立ち上げてメニューバーから「mi」->「モード設定」を選んでください.
の画面が出るので,モードを「Ruby」にして,改行コードを「LF(UNIX)」にして,ウィンドウを閉じてください.以降は,ファイル作成のさいに,「ファイル」->「新規」->「Ruby」で作成すると正しい改行コードが設定されているはずです.
- Finderの中でダブルクリックするだけでmiを起動できるようにしたい人は,Rubyソースファイルをmiと関連付けするを読んで設定してください.
前回の感想,質問より
- Q.
- 気になったのですがa.length()の最後の()はいったい何のためにあるのでしょうか? length(a)とかならわかりますが…。
- A.
- a.length() とうい書き方は,教科書の第8章「レコードとオブジェクト」の
P.173で初めて出てくるメソッドの呼び出しに対応しています.ここまで出てきた
構文で書くならばlength(a)の方が自然だという気持ちはわかります.
- Q.
- flag()やlength()とかの()は何ですか?書かなくても動作してるのですが…。
- A.
- これらは引数がない関数呼び出しの構文ですね.Ruby言語では引数がない
関数呼び出しの「()」は省略することができます.ただ,教科書では省略して
書くと変数と間違えやすいので必ず「()」をつけて書いています.
- Q.
- ドット絵って書くのは大変なんですね。これ以上画素数が増えたら気が狂います。スーパーマリオとかカービィにもプログラマーの努力が詰
まっているのでしょうか。
- A.
- 今回のような方法でドット絵を書くのは大変ですが,スーパーマリオや
カービィの絵を書くときは,ペイントツールを使っていると思いますよ.
- Q.
- 先生の講義のPDFから(Macのプレビューで見ています)
textをコピーしてMiへ(Rubyモードの時)
貼りつけたら文字化けします。どうすればいいですか?
Terminalに貼りつけても文字化けしました。
- A.
- PowerPointをPDF化したものではそのようになるようです.スライド中のプログラムは第2章の練習,投票のようなところに貼ってあるので,そちらからコピー&ペーストしてください.また,今後は情報科学入門: Rubyを使って学ぶ / 配付プログラムからファイルをダウンロードして使うことも多いと思います.
- Q.
- 白黒画像のところで試してみたのですが、1よりも大きい値を入れても
白のままのようですね。
- A.
- いろいろ試してみるのは良いですね.0以下の値は黒,1以上の値は白としているようです.今後プログラムで画像を作る時には間違えて0から1までの範囲を超えた値を入れた配列を作ってしまうこともあると思いますが,showした時になるべく作者の意図に合わせて表示しようということなのでしょう.
- Q.
- 三行の白黒の絵と、カラーの絵の区別をどうやってつけるのか。
- A.
- 3次元配列の時はカラーの絵, 2次元配列の時は白黒の絵だと判断するようです.
- Q.
- irbだとshowが使えないのは分かったが、isrbと比較したときのirbの利点は何なのか。
- A.
- 大学の環境でやる分にはirbの利点は「rsdlという余計なアプリケーションが起動しない」位ですね.irbはRubyを普通にインストールするだけで使えるので,自習のために
自宅のPCなどで使いやすいという利点もあります.
- Q.
- 今回の講義でisrb環境において色を表現するとき、RGBで表現したのですが、使える数字は0~1とのことでした。今までにhtmlで書くときは色を表現するのに256*256*256のRGBで表現していたのですが、isbrは8bit色表示には対応していないのでしょうか。
[0.2,0.5,0.8]などと表現するのには違和感がありますし、不便すぎると思います・・・。
- A.
- 「RGBの各階調を 0-255の8ビットで表す」というのは現在の多くの画像入
力,画像出力装置の制限から最大公約数的に決まっているものですが,慣れて
いる人にとっては自然かもしれませんが,isrbでは先入観なしに考えると0-1の
方が自然だと考えたのだと思います.
- Q.
- 配列の要素の数字をまとめて変更することはできないのでしょうか。
例えば、a=[1,1,1,1,1,1,1,1,1,1,0,1,1,1,1]とa配列を作った後、全ての1を一度の操作で0に変更して、
a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]とすることは可能でしょうか。
- A.
- 今回やります.
前回の課題について
投票システム
vote.rbをダウンロードして,ホームディレクトリに保存してください.ドックからターミナルを起動して,
ruby vote.rb 選択肢番号
のように使います.
今日の練習,投票
関連リンク
教科書の補足
- 情報科学入門: Rubyを使って学ぶ / 配付プログラムにあるプログラムは一括ダウンロードできます.allcode.zipをダウンロードして,ファインダーからダブルクリックするとallcodeというフォルダーができます.その下にすべてのファイルが入っています.そこのファイルをすべて,講義用のフォルダーにコピーすると良いでしょう.
- 講義に関連したファイルはホームフォルダ直下に置くのではなく,講義専用のフォルダ(たとえば is10 という名前で)を作って置くのが良いでしょう.ターミナルでフォルダを作るには,
mkdir is10
のようにしてください.そして,ターミナルを開くたびに
cd is10
と入力してからirbを動かすと良いでしょう.詳しくは,はいぱーワークブック「13.4 コマンドを使ったファイル操作」を参照してください.
- 情報科学入門: Rubyを使って学ぶ / 配付プログラムの中には練習問題のチェックプログラムが含まれています.たとえば,第1章の練習問題をテストする時には,同じディレクトリに,練習問題で作成したプログラムを教科書で指定されたファイル名で置いて,
ruby check.rb ex01.rb
と実行すると,関数を与えた時の入力と出力があっていることが確認できます.
今日の課題
- 講義中に投票を求められるので,投票システムを使って投票をしてください.
- 講義で用いた練習問題で自分が解いたプログラムとその説明,今回の講義の感想,改善意見等(100文字以上)をCFIVEの掲示板CFIVEの掲示板10/27の課題,質問に書き込んでください.