講評: 頑張りました。4 番は他の学生のレポートを参考にしてみて下さい。 正解はひとつではありません。オフィスアワーは月曜 4 限です。 週の前半の昼休みも大丈夫です。解説が詳しいとよかったですね。 筆記問題ですが、文字列なのに "" で括っていないので、 このままではプログラムとしては動きません。 ---- 学籍番号:c106XXXX 氏名: XXXXXXXX 語学クラス: XXXX語 系: XXXX系 1、 shop["呉 尚浩"] = 農業食料論 shop["澤邉 みさ子"] = 障害者福祉論II shop["西村 まどか"] = 基礎プログラミングII shop["高橋 英彦"] = 現代世界と平和の構築 shop["齋藤 達雄"] = エスニシティ論 {"呉 尚浩"=>農業食料論, "澤邉 みさ子"=>障害者福祉論II, "西村 まどか"=>基 礎プログラミングII, "高橋 英彦"=>現代世界と平和の構築, "齋藤 達雄"=>エス 二シティ論} 2、 >>A. 0d 1022 = 0x ?? 16進数にするためには、10進数を2進数に変換する。 1022 ÷ 2 = 511 余り 0 511 ÷ 2 = 255 余り 1 255 ÷ 2 = 127 余り 1 127 ÷ 2 = 63 余り 1 63 ÷ 2 = 31 余り 1 31 ÷ 2 = 15 余り 1 15 ÷ 2 = 7 余り 1 ↑ 7 ÷ 2 = 3 余り 1 ↑ 3 ÷ 2 = 1 余り 1 ↑ → → → → → 3 ÷ 2 = 1 の 1 から矢印にそって数えていくと、「1111111110」になる。 ○ 0d 1022 = 0b 1111111110 下4桁から、4桁ずつ区切っていく。(16進数に変換するため) 「0011」1 × 1 = 1 1 × 2(2の1乗) = 2 0 × 4(2の2乗) = 0 0 × 8(2の4乗) = 0 1 + 2 + 0 + 0 =3 前期のHPの表に照らし合わせると「3」は「3」 「1111」1 × 1 = 1 1 × 2(2の1乗) = 2 1 × 4(2の2乗) = 4 1 × 8(2の4乗) = 8 1 + 2 + 4 + 8 =15 前期のHPの表に照らし合わせると「15」は「f」 「1110」0 × 1 = 0 1 × 2(2の1乗) = 2 1 × 4(2の2乗) = 4 1 × 8(2の4乗) = 8 0 + 2 + 4 + 8 =14 前期のHPの表に照らし合わせると「14」は「e」 ○ Od 1022 = Ox 3fe ○ >>>B. 0d 1022 = 0b ?? 1022 ÷ 2 = 511 余り 0 511 ÷ 2 = 255 余り 1 255 ÷ 2 = 127 余り 1 127 ÷ 2 = 63 余り 1 63 ÷ 2 = 31 余り 1 31 ÷ 2 = 15 余り 1 15 ÷ 2 = 7 余り 1 ↑ 7 ÷ 2 = 3 余り 1 ↑ 3 ÷ 2 = 1 余り 1 ↑ → → → → → 3 ÷ 2 = 1 の 1 から矢印にそって数えていくと、「1111111110」になる。 ○ 0d 1022 = 0b 1111111110 ○ 3、 ○あらかじめプログラムに登録してある対を表示するもの >>>A. 考えた設定 駄菓子を売るプログラム >>>B. 作成したプログラムコード #!/usr/koeki/bin/ruby $KCODE = 'e' dagashi = Hash.new("うちにはないです…。") # Hash 配列を shop と定義する dagashi["うまい棒"] = 10 dagashi["梅トラ3兄弟"] = 30 dagashi["ガブリチュウ"] = 30 dagashi["コンポタージュ"] = 30 dagashi["蒲焼きさん太朗"] = 10 dagashi["よっちゃんイカ"] = 30 dagashi["チロルチョコ"] = 20 dagashi["酢昆布"] = 50 dagashi["ベビースター"] = 30 dagashi["麸菓子"] = 20 #p dagashi print("この駄菓子屋で売っているものは、こちらです!! \n") for item,price in dagashi printf("%-10s\t%10d\n",item,price) end STDERR.print("あなたの好きな駄菓子は??\n") item = gets.chomp STDERR.print("何個欲しい??:\n") weight = gets.chomp.to_f p dagashi.key?(item) if dagashi.key?(item) == false printf("%sは%sです\n",item, dagashi[item]) else printf("%s(%5.0f 個)\t%5.0f円\n", item, weight, dagashi[item] * weight) end >>>C. もとにしたプログラムからの変更点 変数を「dagashi」に変更した。 「非取扱商品」から「うちにはないです…。」に変更した。 駄菓子屋で売っている物の一覧がでるようにした。 >>>D. プログラムを実行した結果画面 ○ 店に商品があった場合 ○ irsv{c106034}% ./hash-for.rb [~/Ruby] この駄菓子屋で売っているものは、こちらです!! 麸菓子 20 酢昆布 50 よっちゃんイカ 30 チロルチョコ 20 ガブリチュウ 30 うまい棒 10 梅トラ3兄弟 30 蒲焼きさん太朗 10 ベビースター 30 コンポタージュ 30 あなたの好きな駄菓子は?? うまい棒 何個欲しい??: 10 true うまい棒( 10 個) 100円 ○ 店になかった場合 ○ irsv{c106034}% ./hash-for.rb [~/Ruby] この駄菓子屋で売っているものは、こちらです!! 麸菓子 20 酢昆布 50 よっちゃんイカ 30 チロルチョコ 20 ガブリチュウ 30 うまい棒 10 梅トラ3兄弟 30 蒲焼きさん太朗 10 ベビースター 30 コンポタージュ 30 あなたの好きな駄菓子は?? コアラのマーチ 何個欲しい??: 1 false コアラのマーチはうちにはないです…。です >>>E. 導き出された結果の考察 実行結果から、うまい棒 ( 1本 = 10円 ) × 10本 = 100円 なので計算はあっています。 駄菓子屋に「コアラのマーチ」はないので、「うちにはないです…。」と 出力された。 >>>F. 参考文献 西村まどか先生のHP http://roy/~madoka/2007/r2/02/02-02-hash.html http://roy/~madoka/2007/r2/02/02-03-call-hash.html http://roy/~madoka/2007/r2/02/02-04-check-hash.html ○ プログラムで対を登録し、表示させるプログラム >>>A. 考えた設定 今日の駄菓子の値段を入力するプログラム。 Ctrl-Dで終了し、今まで入力してきたデータの一覧が値段が高い順にでてくる。 >>>B. 作成したプログラムコード #!/usr/koeki/bin/ruby dagashi = Hash.new("うちにはないです…。") printf("今日の駄菓子の価格を入力してください\v >>終了は Ctrl-D\n") while true STDERR.print("駄菓子の名前は??") item = gets if item == nil # Ctrl-D が押されたら終了 then break else # Ctrl D 以外の文字列はここに進む item == item.chomp! # 改行文字を取れ end STDERR.print("1個の価格は??") price = gets.chomp.to_i dagashi[item] = price end STDERR.print("入力終わりました!!\n") #$KCODE = 'e' #p dagashi #for item,price in dagashi # printf("%s\t%s\n",item,price) #end $KCODE = 'e' #p dagashi.values.sort.reverse dagashi.keys.sort{ |prime,sorted| dagashi[prime] <=> dagashi[sorted] }.reverse.each{ |item| printf("%s\t%d\n",item,dagashi[item]) } >>>C. もとにしたプログラムからの変更点 変数を「shop」から「dagashi」に変更した。 print文も駄菓子に合わせて変更した。 終了(Ctrl-D)したときに、「入力終わりました!!」と出るようにした。 >>>D. プログラムを実行した結果画面 irsv{c106034}% ./pair.rb [~/Ruby] 今日の駄菓子の価格を入力してください >>終了は Ctrl-D 駄菓子の名前は??うまい棒 1個の価格は??20 駄菓子の名前は??酢昆布 1個の価格は??40 駄菓子の名前は??ガブリチュウ 1個の価格は??25 駄菓子の名前は??入力終わりました!! 酢昆布 40 ガブリチュウ 25 うまい棒 20 >>>E. 導き出された結果の考察 「うまい棒」、「酢昆布」、「ガブリチュウ」の順に入力したが、値段の高い順 に最後はでてくるようにしたので「酢昆布」、「ガブリチュウ」、「うまい棒」 と順序が変わっている。 >>>F. 参考文献 西村まどか先生のHP http://roy/~madoka/2007/r2/02/02-08-sort-hash.html http://roy/~madoka/2007/r2/02/02-08-sort-hash.html 4、 どのプログラムを参考にしていいのかわかりませんでした。 5、 久しぶりに、16進数の計算をして、手順を忘れていました。 前期の先生の HP をみて復習したら、思いだしてきました。 これから使うこともあると思うので、完璧にできるように頑張っていきたいと思 います!! 4番など、どのプログラムを参考にしていいのかが分からなかったので、どれを 参考にすればいいのか教えてください。 先生のオフィスアワーは、月曜 4限のままですか? もし、都合の良い時間を教えて下さい!!