第9回 基礎プログラミング I レポート課題 氏名:花木剛志 学籍番号:c109126A 語学クラス:英語3 コース(系):地域共創 1、筆記問題 A: 0x13 + 0x24 = 0x?? 十六進数で表されている「13」と「24」は十進数で表しても変わらないので、 普通の十進数と同様に計算できる。 すなわち、0x13 + 0x24 = 37 B: 0x23 + 0x1e = 0x?? まず、十六進数で表されている「23」と「1e」を十進数に変換する。 0x23は、16 * 2 + 3 = 35で、0x23 = 0b35 0x1eは、16 * 1 + 14(0xe = 0b14)で、0x1e = 0b30 次に、それぞれを足して 0b35 + 0b30 = 0b65 0b65を十六進数に変換すると、 65/16 = 4 余り 1 4/16 = 0 余り 4 0b65 = 0x41 すなわち、0x23 + 0x1e = 0x41 C: 0xaa - 0x33 = 0b?? まず、十六進数で表されている「aa」と「33」を十進数に変換する。 0xaaは、16 * 10(0xa = 0b10) + 10 = 0b170 0x33は、16 * 3 + 3 = 0b51 次に、170から51を引いて 0b170 - 0b51 = 0b119 0b119を十六進数に変換すると、 119/16 = 7 余り 7 7/16 = 0 余り 7 0b119 = 0x77 すなわち、0xaa = 0x33 = 0x77 2、プログラミング問題 数字に四字熟語を対応させて、その意味も調べられるプログラムを作成しました。 広告ホームページのURLは http://roy/~c109126/advertise/ です。 [作成したプログラム] !/usr/koeki/bin/ruby yozijukugo = Array.new print("四字熟語を検索してみよう!!\n") STDERR.print("1〜10の中で、好きな数字を入力してね:") pattern = STDIN.gets.chomp request = Regexp.new(pattern, true, "d") open("yozijukugo.dat","r") do |jukugo| while yozijukugo = jukugo.gets if request =~ yozijukugo if /(\d+)\s+(\S+)\s+(\S+)/ =~ yozijukugo printf("\n[%d]\n",$1) printf("君は「%s」とpuいう四字熟語を知ってる?\n",$2) printf("この四字熟語は「%s」って意味なんだ。難しいね。\n", $3) end end end end [実行結果] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:01 [1] 君は「四面楚歌(しめんそか)」という四字熟語を知ってる? この四字熟語は「周りが敵だらけなこと。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:02 [2] 君は「不撓不屈(ふとうふくつ)」という四字熟語を知ってる? この四字熟語は「どんな困難になっても、決してくじけないこと。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:03 [3] 君は「栄枯盛衰(えいこせいすい)」という四字熟語を知ってる? この四字熟語は「繁栄はいつまでも続かず、いずれ衰退すること。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:04 [4] 君は「虚心担壊(きょしんたんかい)」という四字熟語を知ってる? この四字熟語は「心にわだかまりを持たず、素直でさっぱりした気持ち」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:05 [5] 君は「五里霧中(ごりむちゅう)」という四字熟語を知ってる? この四字熟語は「周りが霧だらけで、問題の解決策が見えないこと。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:06 [6] 君は「孤城落日(こじょうらくじつ)」という四字熟語を知ってる? この四字熟語は「昔の勢いをなくし、助けもなく、ただ没落にむかう様子。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:07 [7] 君は「悪戦苦闘(あくせんくとう)」という四字熟語を知ってる? この四字熟語は「悪い状況の中で、苦しい闘いをすること。」って意味なんだ。難しいね。 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:08 ./yozijukugo.rb:17:in `printf': invalid value for Integer: "08" (ArgumentError) from ./yozijukugo.rb:17 from ./yozijukugo.rb:12:in `open' from ./yozijukugo.rb:12 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:09 ./yozijukugo.rb:17:in `printf': invalid value for Integer: "09" (ArgumentError) from ./yozijukugo.rb:17 from ./yozijukugo.rb:12:in `open' from ./yozijukugo.rb:12 pan{c109126}% ./yozijukugo.rb [~/public_html/advertise] 四字熟語を検索してみよう!! 1〜10の中で、好きな数字を入力してね:10 [10] 君は「自暴自棄(じぼうじき)」という四字熟語を知ってる? この四字熟語は「破れかぶれで、自分を粗末に扱い、やけになること。」って意味なんだ。難しいね。 [考察] ktermで結果表示を確認したところ、何故か8と9だけ上手く表示されませんでし た。原因を色々考えたのですが、特定できませんでした。また、10を入力したら、 ちゃんと結果表示されたのも不思議です。(8〜10が全部駄目だと思っていたので) [感想] 考察にも書いたように、8と9だけ上手く表示されず、それが少し悔しかったが、 概ね上手くできたとは思う。今回は多くのemacsを開き、手順良く作成しなけれ ばならず、かなり大変だったが、何とか形になって良かったと思う。 [参考文献など] http://roy/~madoka/2009/r1/09/crt.html http://www.sanabo.com/words/ [共同製作者] ・遠藤孝之君