第 3 回 情報の構造を分析しよう レポート課題 氏名:加藤恭平 学籍番号:c1100549 語学クラス:英語2 コース(系):政策マネジメント 1、筆記問題 A. 自分の名前「加藤恭平」をアルファベット表示にするとKATO KYOHEIとなる。 ASCIIコード表を参考にそれぞれの文字のASCIIコードを調べると、 0 1 2 3 4 5 6 7 8 9 a b c d e f 0 nul soh stx etx eot enq ack bel bs ht lf vt ff cr so si 1 dle dc1 dc2 dc3 dc4 nak syn etb can em sub esc fs gs rs us 2 ! " # $ % & ' ( ) * + , - . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ' a b c d e f g h i j k l m n o 7 p q r s t u v w x y z { } ~ del K→0x4b A→0x41 T→0x54 O→0x4f K→0x4f Y→0x59 O→0x4f H→0x48 E→0x45 I→0x49 となる。 16進数を10進数に直すために16進数表で確認しながら16をかけていく。 0x4b =4*16+11*16 =240 0x41 =4*16+1*16 =80 0x54 =5*16+4*16 =144 0x4f =4*16+15*16 =304 0x4b =4*16+11*16 =240 0x59 =5*16+9*16 =224 0x4f =4*16+15*16 =304 0x48 =4*16+8*16 =192 0x45 =4*16+5*16 =144 0x49 =4*16+9*16 =208 計算の結果から10進数に直すと以下のようになる。 K = 0b240 A = 0b80 T = 0b144 O = 0b304 K = 0b240 Y = 0b224 O = 0b304 H = 0b192 E = 0b144 I = 0b208 ----------------------------------------------------------------------------- B."きょうこいぬをかう"(3例) きょう こいぬを かう(今日子犬を飼う) きょうこ いぬを かう(杏子犬を飼う) きょう こい ぬを かう(今日故意ヌを買う) ---------------------------------------------------------------------------- c. 日本刀の中でも特に名刀と呼ばれる5振、「天下五剣」を hash 配列の meitou とし た。 keyを刀の名前、valueに銘、刃長と反りの数値を取った。 1.「童子切」 に対して value は ["安綱"、79、2] 2.「数珠丸」 に対して value は ["恒次"、81、3] 3.「鬼丸」 に対して value は ["國綱"、78、3] 4.「三日月宗近」に対して value は ["三条"、80、2] 5.「大典太」 に対して value は ["光世作"、65、2] これらをhash配列で表記すると、 meitou["童子切"]=["安綱",79,2] meitou["数珠丸"]=["恒次",81,3] meitou["鬼丸"]=["國綱",78,3] meitou["三日月宗近"]=["三条",80,2] meitou["大典太"]=["光世作",65,2] もう一つが {"童子切"=>["安綱",79,2],"数珠丸"=>["恒次",81,3],"鬼丸"=>["國綱 ",78,3],"三日月宗近"=>["三条",80,2],"大典太"=>["光世作",65,2]} 参考文献 wikipedia 天下五剣 http://ja.wikipedia.org/wiki/%E5%A4%A9%E4%B8%8B%E4%BA%94%E5%89%A3 2、プログラム問題 選択した問題 A a)考えた設定 あらかじめプログラムに登録してある対を表示するプログラム b)作成したプログラム(hash_ary_print.rb) #!/usr/koeki/bin/ruby $KCODE = 'e' # 文字コードの設定。この場合は EUC コードで漢字 meitou = Hash.new # Hash.new で新しく Hash を作る print("天下五剣の一覧\n\n") meitou["童子切"] = "安綱",79,2 meitou["数珠丸"] = "恒次",81,3 meitou["鬼丸"] = "國綱",78,3 # Hash の対を設定する meitou["三日月宗近"] = "三条",80,2 meitou["大典太"] = "光世作",65,2 for name , data in meitou # for キー名,値 in ハッシュ配列 # 全ての Hash の対を出力する printf("「%s」の銘は「%s」です。 この刀の刃長は%dcmで反りは%dcmです。\n\n",name,data[0],data[1],data[2]) end c)もとにしたプログラム 前回の課題で作成したプログラム hash_for.rb を参考にしたが 丸写しをせずにhashの内容を変更し、valueのデータ数を増やし、新たに作成した。 d)実行結果 天下五剣の一覧 「童子切」の銘は「安綱」です。 この刀の刃長は79cmで反りは2cmです。 「大典太」の銘は「光世作」です。 この刀の刃長は65cmで反りは2cmです。 「三日月宗近」の銘は「三条」です。 この刀の刃長は80cmで反りは2cmです。 「鬼丸」の銘は「國綱」です。 この刀の刃長は78cmで反りは3cmです。 「数珠丸」の銘は「恒次」です。 この刀の刃長は81cmで反りは3cmです。 e)考察 あらかじめ登録した対のデータがprintf文の通りに表示されたので、このプログ ラムは正しいといえる。 3. 何度も繰り返す文章で物語が進む例が思いつかなかったので大きなかぶについて考えた。 大きなかぶは畑に実った株をおじいさんが見つけ、一人で抜こうとするが抜けず、 手伝う人や動物がどんどん増えていき、最終的に抜くことができて物語が終了す るが、最後以外は手伝う人が増える(段落)ごとに「やっぱり かぶは ぬけませ ん。」の一文や「うんとこしょ、どっこいしょ」の掛け声が繰り返しで登場する。 Aの課題は前回の課題とほとんど同じ内容だったが、レベルが低いなりに自分が 理解できているかを試すために全く違う対で一からプログラムを作成しました。 hashを作成、for キー名,値 in ハッシュ配列で全ての Hash の対を出力しhash配列 からデータを取り出す等、自分が打っている文はどういう意味を持つのかを理解 しながら作成しつつ、プログラム自体は前回より早い作業スピードで完成できたので良かったです。 参考文献 wikipedia 大きなかぶ http://ja.wikipedia.org/wiki/%E3%81%8A%E3%81%8A%E3%81%8D%E3%81%AA%E3%81%8B%E3%81%B6 基礎プログラミング II 第 3 回 「情報の構造を分析しよう」 西村まどか http://roy/~madoka/2011/r2/03/