第9回 基礎プログラミング I レポート課題 氏名:吉田瑞恵 学籍番号:C1082030 語学クラス:英語(?) コース(系):社会系 1. A. 0x13 + 0x24 = 0x?? まずそれぞれを10進数にして計算する。 0x13 = 0d16 + 0d3 = 0d19 0x24 = 0d16*2 + 0d4 = 0d36 0d19 + 0d36 = 0d55 0d55を0x??に直すには 16で割り余りを下からつけ足す。 55 / 16 = 3あまり7 3 / 16 = 0あまり3 なので0d55=0x37 よって0x13 + 0x24 = 0x37 (英字が使われない場合はそのまま足してもいいことが分かった) B. 0x23 + 0x1e = 0x?? 0x23 = 0d16*2 + 0d3 = 0d35 0x1e = 0d16*1 + 0d14 = 0d30 0d35 + 0d30 = 0d65 0d65を0x??に直すには 16で割り余りを下からつけ足す。 65 / 16 = 4あまり1 4 / 16 = 0あまり4 なので0d65 = 0x41 よって0x23 + 0x1e = 0x41 C. 0xaa - 0x33 = 0x?? 0xaa = 0d16*10 +0d10 = 0d170 0x33 = 0d16*3 + 0d3 = 0d51 0d170 - 0d51 = 0d119 0d119を0x??に直すには 16で割り余りを下からつけ足す。 119 / 16 = 7あまり7 7 / 16 = 0あまり7 なので0d221 = 0x77 よって0xaa - 0x33 = 0x77 2. A. エントリー部門:ゲーム部門 作成プログラム nandoku_touhoku.rb ホームページアドレス:http://roy/~c108203/advertise/ B.作成プログラム(nandoku_touhoku)について a.設定 難読地名の読み方の3択クイズのプログラム。 b.作成プログラム #!/usr/koeki/bin/ruby $KCODE="e" #人間の言葉に直す指示 c_a = 0 #正解数をいれる変数。 answer = 0 #入力された解答をいれる変数。 i = 0 #選ばれたレベルをいれる変数。 aoq = ["八戸","馬門温泉","田子","尻労","玉余魚沢"] #青森の問題をいれた配列。 aomori_question の略 iwq = ["胆沢","長部","夏油","橇曳沢","梍"] #岩手の問題 iwate_question miq = ["塩竃","愛子","秋保","長渡","合戦谷"] #宮城の問題 miyagi_question akq = ["由利本荘","比八田","鯲沼","金浦","剰水"] #秋田の問題 akita_question yaq = ["寒河江","旅籠町","生石","日本国","無音"] #山形の問題 yamagata_question fuq = ["郡山","信夫山","桑折","深野","百目木"] #福島の問題 fukusima_question aoc = ["1,はちのへ 2,はちこ 3,はちのと", "1,ばもんおんせん 2,まかどおんせん 3,うまのもんおんせん", "1,たっこ 2,たこ 3,でんし", "1,けつかり 2,しりつかれ 3,しつかり", "1,ひらめざわ 2,かれいざわ 3,たまよざわ"] #青森の選択肢をいれた配列。 aomori_choose の略 iwc = ["1,たんざわ 2,いさわ 3,にさわ", "1,ながべ 2,おしゃまんべ 3,おさべ", "1,げとう 2,かゆ 3,なつのゆ", "1,こもれざわ 2,きもざわ 3,そりひきざわ", "1,さいかち 2,さえかわ 3,きしらな"] #岩手の選択肢 iwate_choose mic = ["1,しおのかめ 2,えんき 3,しおがま", "1,あやし 2,あいし 3,まなこ", "1,あきほ 2,あきう 3,あきお", "1,ながと 2,ふたわたし 3,ちょうたし", "1,かせがい 2,がっせんがたに 3,せんじょうがはら"] #宮城の選択肢 miyagi_choose akc = ["1,ゆりもとそう 2,ゆりほんじょう 3,ゆりのほんしょ", "1,これはた 2,ひはた 3,ひやだ", "1,なまずぬま 2,ふぬま 3,どじょうぬま", "1,かなうら 2,このうら 3,かのうら", "1,ながれ 2,おおみず 3,せせなぎ"] #秋田の選択肢 akita_choose yac = ["1,かんがえ 2,さがえ 3,さむかわ", "1,りょかんまち 2りょかごまち, 3,はたごまち", "1,いきし 2,おいし 3,なまし", "1,にほんこく 2,ひもとのくに 3,にっぽんこく", "1,おとせず 2,しずか 3,よばらず"] #山形の選択肢 yamagata_choose fuc = ["1,ぐんやま 2,とやま 3,こおりやま", "1,しのぶやま 2,のぶおやま 3,しんぷさん", "1,くわり 2,こおり 3,くわおれ", "1,ふこうの 2,しんの 3,ふかや", "1,どうめき 2,とどろき 3,とめのき"] #福島の選択肢 fukusima_choose aoa = [1,2,1,3,2] #青森の答えをいれた配列。 aomori_answer の略 iwa = [2,3,1,3,1] #岩手の答え iwate_answer mia = [3,1,2,2,1] #宮城の答え miyagi_answer aka = [2,2,3,2,3] #秋田の答え akita_answer yaa = [2,3,2,3,3] #山形の答え yamagata_answer fua = [3,1,2,1,1] #福島の答え fukusima_answer print("「難読地名 三択クイズ 〜東北地方編〜」にようこそ。\n") #説明 sleep 1 #1秒停止 print("このプログラムは、東北地方の一発で読めないような地名の\n")#説明 print("読み方を当てるゲームです。\n")#説明 sleep 1 #1秒停止 print("東北6県から一問ずつ地名の読み方が出題されます。\n")#説明 sleep 1 #1秒停止 print("すべて三択問題です。正しいと思った選択肢を選んで下さい。\n")#説明 sleep 1 #1秒停止 sleep 1 #1秒停止 print("レベルは1〜5まで選べます。それぞれ6問ずつあります。\n") sleep 1 #1秒停止 print("難度は数字が高くなるほど上がります。\n")#説明 STDERR.printf("1から5のうちからレベルを選んで下さい。:") #レベル選択 i = gets.to_i #入力されたレベルを整数に printf("準備は出来ましたか?\n") #準備を促すメッセージ sleep 2 #2秒停止 print("それでは問題です。\n") #問題開始の合図 sleep 1 #1秒停止 print("\n") #一行空ける #ここまでの説明文は、より本格的に見せるために1行ずつ出してみた。 print("第一問。青森県の地名です。\n") #何問目で何処の地名かの表示 STDERR.printf("%sの読み方は?\n",aoq[i-1]) #問題文の表示。 #これから配列の中のものを取りだす場合、配列は最初の[]が0なので レベルのiから1引く。 #答え入力してもらうために STDERR printf("%s 解答:",aoc[i-1]) #選択肢の表示。 answer = gets.to_i #入力された答えを整数に。 if answer == aoa[i-1] #正解の場合、 print("正解!\n") #正解の文字を出し、 c_a += 1 #正解数に 1 追加。 else #不正解の場合 printf("残念! 正解は%sです\n",aoa[i-1]) #不正解メッセージと正答の表示 end #if文終了 print("\n") #一行空ける sleep 3 #3秒待つ #以下、第六問までほとんど同じなので 説明は省く。 print("第二問。岩手県の地名です。\n") STDERR.printf("%sの読み方は?\n",iwq[i-1]) printf("%s 解答:",iwc[i-1]) answer = gets.to_i if answer == iwa[i-1] print("正解!\n") c_a += 1 else printf("残念! 正解は%sです\n",iwa[i-1]) end print("\n") sleep 3 print("第三問。宮城県の地名です。\n") STDERR.printf("%sの読み方は?\n",miq[i-1]) printf("%s 解答:",mic[i-1]) answer = gets.to_i if answer == mia[i-1] print("正解!\n") c_a += 1 else printf("残念! 正解は%sです\n",mia[i-1]) end print("\n") sleep 3 print("第四問。秋田県の地名です。\n") STDERR.printf("%sの読み方は?\n",akq[i-1]) printf("%s 解答:",akc[i-1]) answer = gets.to_i if answer == aka[i-1] print("正解!\n") c_a += 1 else printf("残念! 正解は%sです\n",aka[i-1]) end print("\n") sleep 3 print("第五問。山形県の地名です。\n") STDERR.printf("%sの読み方は?\n",yaq[i-1]) printf("%s 解答:",yac[i-1]) answer = gets.to_i if answer == yaa[i-1] print("正解!\n") c_a += 1 else printf("残念! 正解は%sです\n",yaa[i-1]) end print("\n") sleep 3 print("第六問。福島県の地名です。\n") STDERR.printf("%sの読み方は?\n",fuq[i-1]) printf("%s 解答:",fuc[i-1]) answer = gets.to_i if answer == fua[i-1] print("正解!\n") c_a += 1 else printf("残念! 正解は%sです\n",fua[i-1]) end print("\n") #ここで問題は終了。 sleep 2 print("結果発表\n") #今から結果発表です、と表示 sleep 3 printf("今回の結果は6問中%d問正解でした。\n",c_a) #結果の表示 if c_a == 0 #正解数が0の場合のメッセージ print("難しかったでしょうか。0点でもめげずに再挑戦待ってます!") elsif c_a == 1 #正解数が1の場合 print("難しかったでしょうか。めげずに再挑戦待ってます!") elsif c_a == 2 #正解数が2の場合 print("なかなかやりますね。\n") elsif c_a == 3 #正解数が3の場合 print("なかなかやりますね。\n") elsif c_a == 4 #正解数が4の場合 print("けっこう良いところまで行きましたね。次回はパーフェクト???\n") elsif c_a == 5 #正解数が5の場合 print("惜しい! 次は全問正解を目指しましょう!\n") else #全問正解の場合 print("すばらしい! パーフェクトです!\n") if i == 5 #レベル5全問正解の場合 print("レベル5を全問正解とは……\n") print("おめでとうございます!\n") print("地名マニアさんですか? 漢字博士さんですか? どちらにせよ すごい!\n") else #レベル1〜4全問正解の場合 print("でもここで終わりではありません。もう一段上のレベルを目指しましょう!\n") end #if c_a〜文終了 end #if i == 5〜文終了 c.変更点 今まで授業で扱ったいくつかのプログラムを参考に作成。 それぞれの特徴を組み合わせた。 d.実行結果 pan{c108203}% ./nandoku_touhoku.rb [~/public_html/advertise] 「難読地名 三択クイズ 〜東北地方編〜」にようこそ。 このプログラムは、東北地方の一発で読めないような地名の 読み方を当てるゲームです。 東北6県から一問ずつ地名の読み方が出題されます。 すべて三択問題です。正しいと思った選択肢を選んで下さい。 レベルは1〜5まで選べます。それぞれ6問ずつあります。 難度は数字が高くなるほど上がります。 1から5のうちからレベルを選んで下さい。:3 準備は出来ましたか? それでは問題です。 第一問。青森県の地名です。 田子の読み方は? 1,たっこ 2,たこ 3,でんし 解答:1 正解! 第二問。岩手県の地名です。 夏油の読み方は? 1,げとう 2,かゆ 3,なつのゆ 解答:1 正解! 第三問。宮城県の地名です。 秋保の読み方は? 1,あきほ 2,あきう 3,あきお 解答:2 正解! 第四問。秋田県の地名です。 鯲沼の読み方は? 1,なまずぬま 2,ふぬま 3,どじょうぬま 解答:3 正解! 第五問。山形県の地名です。 生石の読み方は? 1,いきし 2,おいし 3,なまし 解答:2 正解! 第六問。福島県の地名です。 桑折の読み方は? 1,くわり 2,こおり 3,くわおれ 解答:2 正解! 結果発表 今回の結果は6問中6問正解でした。 すばらしい! パーフェクトです! でもここで終わりではありません。もう一段上のレベルを目指しましょう! e.考察結果 自分の考えていたとおりに動いた。 問題、選択肢、正答のそれぞれの配列から、選ばれたレベルのものを きちんと取りだしていることがわかった。 3.感想 最高傑作を作れ、という課題であったためいつも以上に苦戦した。 まず企画を考える時点で良いアイディアが浮かばず悩んだ。 そしてプログラム作成中も色々とつまづいた。 はじめ、配列のことを間違えて覚えていて上手く出てこないことがあった。 また、gets.to_ の次の文字が思い出せなかった。 だが今回の課題で、色々と忘れかけていたことを復習できたのでよかった。 cssも以前の課題提出時にはよく分からず使わなかったが、今回はどうにか形に でき、嬉しく感じた。 参考文献 「みんなのタグ辞書」製作・運営 hirarin 氏 http://heo.jp/tag/index.html 「TAG index > カラーチャート 」 製作 えじ(高橋永治)氏 http://www.tagindex.com/color/color_name.html 基礎プログラミング I 2010年度 講義ノート 第3回 キーボードから入力して計算させるには 「入力した文字列の切替について」 http://roy/~madoka/2010/r1/03/03_18_theme_10_convert.html 第4回 プログラミングの方法 「もしもそうならば」 http://roy/~madoka/2010/r1/04/04_03_theme_01_branch.html 第5回 配列の構造 「行先検索ソフト」 http://roy/~madoka/2010/r1/05/05_10_theme_08_ary_train.html 製作者 西村まどか先生 協力者 妹(工業高2年) #問1