語学クラス : XXXX語 系 : XXXX系 学籍番号 : c106XXXXX 氏名 : XXXXXX 1. A. 0b100011=0d35 2**0+2**1+2**5=1+2+32=35 つまり、2進数100011を、10進数で表せば35になる。 0d35=0x23 35を16で割ると2あまり3となるので、 16進数で表すと23になる。 B. 授業中に先生に問題をあてられました。 「答えがわかるなら、堂々と答えてみる。そうでなければ勘で言ってみる。」 という行動であった。これをプログラムにする。 プログラムは、 授業中に先生に問題をあてられました。 if 答えがわかるなら、 then 堂々と答えてみる。 else 勘で言ってみる。 end となる。 2. c. 考えた設定 2007年11月の銀行が、いつ営業しているかを調べます。 1日〜30日までは、各曜日にわけ 平日ならば 「○○曜日なのでOKです。御利用ありがとうございました。」 休日ならば 「○○曜日は、お休みなのでNGです。またきて下さい」と表示する。 また、11月は30日までしかないので、31以上を入力すると 「そんな日にちはありません」と表示される。 作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("2007年11月の銀行が、いつ営業しているかを調べます。: ") day = gets.chomp.to_i if day >= 30 bank = "そんな日にちはありません。" else d = (3 + day) % 7 # 11月 2 日は金曜日なので # day == 1 なら d = 5 となるよう調節 if d == 0 bank = "日曜日は、お休みなのでNGです。\nまたきて下さい。" elsif d == 1 bank = "月曜日なのでOKです。御利用ありがとうございました。" elsif d == 2 bank = "火曜日なのでOKです。御利用ありがとうございました。" elsif d == 3 bank = "水曜日なのでOKです。御利用ありがとうございました。" elsif d == 4 bank = "木曜日なのでOKです。御利用ありがとうございました。" elsif d == 5 bank = "金曜日なのでOKです。御利用ありがとうございました。" else bank = "土曜日は、お休みなので、NGです。\nまたきて下さい。" end end printf("%d日 %s\n", day, bank) もとにしたプログラムからの変更点 文章の変更 STDERR.print("2007年11月の銀行が、いつ営業しているかを調べます。: ") 追加 if day >= 30 bank = "そんな日にちはありません。" else により、30以上の数値を受け付けなくなった。(11月が、30日までしかないため。) プログラムを実行した結果画面 irsv{c106090}% ./bank.rb [~/Ruby] 2007年11月の銀行が、いつ営業しているかを調べます。: 1 1日 木曜日なのでOKです。御利用ありがとうございました。 irsv{c106090}% ./bank.rb [~/Ruby] 2007年11月の銀行が、いつ営業しているかを調べます。: 17 17日 土曜日は、お休みなので、NGです。 またきて下さい。 irsv{c106090}% ./bank.rb [~/Ruby] 2007年11月の銀行が、いつ営業しているかを調べます。: 31 31日 そんな日にちはありません。 導き出された結果の考察 (ここで計算結果が合っているか調べる) (3 + day) % 7より 1日は、 3+1/7=0あまり4となり elsif d == 4に当てはまるので bank = "木曜日なのでOKです。御利用ありがとうございました。" と表示される。 17日は、 3+17/7=2あまり6となり if文の条件のelse以下にあてはまるので、 bank = "土曜日は、お休みなので、NGです。\nまたきて下さい。" と表示される。 31日は、 if day >= 30 により bank = "そんな日にちはありません。" と表示される。 参考文献 (参照した本、ホームページなど) まどか先生のホームページ 感想 理解するのに毎回苦労してます。 特に、if文の31日のあたりが、とても苦労しました。 次回も頑張りたいと思います。