5 月 9 日のレポートについて 語学クラス:XXXX語 系: XXXX 学籍番号:c106XXXX 氏名:XXXXXXXX 1. 2 進数表示の 100011 すなわち "0b100011" は 10 進数、および 16 進数で はいくつか。 10 進数では 0d**, 16 進数では 0x** と、その進数をあらわ して書け。 途中式を用いて答えよ。 10進数 → Ob100011は2進数表示なので右から順番に計算して行く。 1 2の0乗×1 1 1 2の1乗×1 2 0 2の2乗×0 0 0 2の3乗×0 0 0 2の4乗×0 0 1 2の5乗×1 32 + =35 計算で出た数字を足すと答えが出る。足すと 35になる。 16進数→ Ob100011は2進数表示なの16進数では、10〜15 をA〜F の文字に置き換 える2進数を下位から4桁ごとに区切って 16進数に置き換える。 2進数   10進数 16進数  0000  0 0 0001  1 1 0010  2 2 0011  3 3 0100  4 4 0101  5 5 0110  6 6 0111  7 7 1000  8 8 1001 9 9 1010 10 A 1011 11 B 1100 12 C 1101 13 D 1110 14 E 1111 15 F これより、 100011を4桁ごとに区切ると、0010 と 0011に分けることが出来る。 0010は 2 になり、0011は 3 になるので 答えは、23になる。 2. 今日の始めに学んだように、何かの出来事を if 文や while 文を使って 分解して書け。ルビ緒ロボットの例を参考にせよ。 if おなかが減った if 冷蔵庫の中に御飯がある (かどうか調べる) (あったら) 食べる お腹がいっぱいになる end end 2、C 1. 考えた設定 銀行という設定にしてお客さんが銀行を利用する日を入力すると曜日とその日銀 行を利用できるかが表示されるように設定した。 2. 作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("いらっしゃいませ。8 月の御利用日を入力してください。: ") day = gets.chomp.to_i d = (4 + day) % 7 # 8 月 1 日は水曜日だから # day == 1 なら d = 5 となるよう調節 if d > 31 wday = "なし" ikumi="NG" elsif d == 0 wday = "金" ikumi="OK" elsif d == 1 wday = "土" ikumi="NG" elsif d == 2 wday = "日" ikumi="NG" elsif d == 3 wday = "月" ikumi="OK" elsif d == 4 wday = "火" ikumi="OK" elsif d == 5 wday = "水" ikumi="OK" else wday = "木" ikumi="OK" end printf("%d 日は%s曜日ですので、銀行は%sです。\n", ikumi,day, wday) 3. もとにしたプログラムからの変更点 私の誕生日が8月なので8月の曜日が表示されるように変更した。また、銀行な ので言葉使いにも注意した。条件式にもしも31日ならばなしとなり銀行はNGとな るように入力した。 4. プログラムを実行した結果画面 irsv{c106086}% ./youbi.rb [~/Ruby] いらっしゃいませ。8 月の御利用日を入力してください。: 22 22 日は水曜日ですので、銀行はOKです。 irsv{c106086}% ./youbi.rb [~/Ruby] いらっしゃいませ。8 月の御利用日を入力してください。: 31 31 日は金曜日ですので、銀行はOKです。 5. 導き出された結果の考察 なぜか条件式に31日以上ならばという部分を入れたのに実行できず、32 と入力 しても曜日とOKが表示されてしまった。これでは、30日までしかない月のときに 間違ってしまう。それ以外はしっかりできたので良かった。 3、今回は c に挑戦してみたが違う問題にとりくむには時間が無かったのでもっ と時間があるときにいろいろな問題に挑戦したいと思う。