5 月 9 日のレポートについて 語学クラス:XXXX語 XX 系:XXXX系 学籍番号:C106XXXX 氏名:XXXXXXXX 1. A. 2 進数表示の 100011 すなわち "0b100011" は 10 進数、 および 16 進数ではいくつか。 10 進数では 0d**、 16進数では 0x**と、その進数をあらわして書け。途中式を用いて答えよ。 100011 1*2の5乗+0*2の4乗+0*2の3乗+0*2の2乗+1*2の1乗+1*2の0乗 =0d35 100011 10 と 0011 に区切って 16 進数にすると 10 は 2 、 0011 は 3 なので =0x23 B. 今日の始めに学んだように、何かの出来事を if 文や while 文 を使って分解して書け。ルビ緒ロボットの例を参考にせよ。 町を散歩いて、とある家の前を通ろうとしている場面 if 道路にいる if 恐い犬がいる (かどうか調べる) (いれば)犬に近寄らない 家に帰る end end 2.C. a. ある日付と曜日を指定する。その日から何日か後の日付を入力すると、 その日が何曜日であるか答え、平日は OK、 土日は NG と表示するプログ ラム bank.rb を作成します。なお、添付は一番最後にしてあります。 b. 作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("1 月の日にちで平日かを確認するよ。日にちをどうぞ:") day = gets.chomp.to_i d = (7 + 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 d == (7 + day) % 7 if d == 0 print "NG\n" elsif d == 6 print "NG\n" else print "OK\n" end printf("%d 日は%s曜日です\n", day, wday) c. もとにしたプログラムからの変更点 if や elsif , else を追加し d = ( の後の数字を変更しました。 d. プログラムを実行した結果画面 irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:15 OK 15 日は月曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:16 OK 16 日は火曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:17 OK 17 日は水曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:18 OK 18 日は木曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:19 OK 19 日は金曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:20 NG 20 日は土曜日です irsv{c106080}% ./bank.rb [~/Ruby] 1 月の日にちで平日かを確認するよ。日にちをどうぞ:21 NG 21 日は日曜日です e. 導き出された結果の考察 今回は 1 月をしたのですが、祝日はないものとします。 結果の確認は携帯のカレンダーで確認しました。 f. 参考にしたホームページ 曜日を調べるプログラム (http://roy.e.koeki-u.ac.jp~madoka/2007/r1/04/04-18-cal.html) 3.感想 今回のレポートで進数とプログラムの作成の両方をして、進数は高校で 少ししていたので出来たのですが、プログラムの方はまだ慣れていないせ いか時間が掛かりました。まだ else や elsif の使いどころを間違った りするので頑張って使いこなせるようになりたいと思いました。 次回の目標は今回より少しでも早くプログラミング出来ればいいと思い ました。