5 月 9 日のレポートについて 語学クラス:XXXX語XX 系: XXXX 学籍番号:c106XXXX 氏名:XXXXXXXXX 筆記問題。説明は端的かつ明確にせよ。意味の通らない解答は採点しない。 A.2 進数表示の 100011 すなわち "0b100011" は 10 進数、および 16 進数では いくつか。 10 進数では 0d**, 16 進数では 0x** と、その進数をあらわして 書け。 途中式を用いて答えよ。 0b100011=1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+1*2^0 =32+0+0+0+2+1 =0d35 0b100011=0010,0011に分けれるから 0010=0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 0+0+2+0 =2 0011=0*2^3 + 0*2^2 + 1*2^1 + 1*2^0 = 0+0+2+1 =3 出た結果を十六進数に変換する。 左側:2右側:3 故に0x23となる。 B.今日の始めに学んだように、何かの出来事を if 文や while 文を使って分 解して書け。ルビ緒ロボットの例を参考にせよ。 飲み会があって皆の行動を観察してた。 「友達が酔っていたならば、介抱をして、そうでなければ一緒に楽しむ。」 という行動であった。これをプログラムする。 プログラムは if 友達が酔っていたならば than 介抱 if 友達が酔っていなかったら than 一緒に楽しむ end 2. C.ある日付と曜日を指定する。(例えば 2007 年 6 月 1 日は 金曜日である。)その日 から何日か後の日付 (例えば 6 月いっぱいまでの日付まで) を入力すると、その日が 何曜日であるか答え、平日は OK、土日は NG と表示するプログラム bank.rb 。銀行の インターネットバンキングのシステムである。 a.考えた設定 上の文章 b. 作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("2007年6 月1日以降の曜日を当てます。日にちをどうぞ: ") day = gets.chomp.to_i d = (4 + day) % 7 if d == 0 wday = "日" elsif d == 1 wday = "月" elsif d == 2 wday = "火" elsif d == 3 wday = "水" elsif d == 4 wday = "木" elsif d == 5 wday = "金" else wday = "土" end printf("%d 日は%s曜日です。\n", day, wday) if d == 0 wday = "NG" elsif d == 1 wday = "OK" elsif d == 2 wday = "OK" elsif d == 3 wday = "OK" elsif d == 4 wday = "OK" elsif d == 5 wday = "OK" else wday = "NG" end printf("%d 日は%sです。\n", day, wday) c.もとにしたプログラムからの変更点 6月以降にし、更に平日はOK。土日はNGというプログラミングをつけたした。 d.プログラムを実行した結果画面 2007年6 月1日以降の曜日を当てます。日にちをどうぞ: 4 4 日は月曜日です。 4 日はOKです。 e.導き出された結果の考察 今回のは結構無理くりしたが、つじつまが合えば結果がしっかり出ると言う事が 分かりました。テーマでも何通りのプログラミングの方法があると実感しました。 f. 参考文献 http://roy/~madoka/2007/r1/04/04-18-cal.html 3.感想 (レポートで実感したこと、次回の目標をどうするか考えながら書く。) 今回でやっと2進数10進数16進数の事が理解できイライラすることなくスムーズ に出来ました。次回はプログラミングを自分で作れるように頑張っていきたい です。