第 2 回 なになにといえばこれこれ レポート課題 氏名: 松田 大輝 学籍番号: c1101804 語学クラス:中国語 コース(系):地域共創コース 1、筆記問題 A、中国語とその訳を hash 配列 tyugoku とした。 tyugoku の key は 中国語 、value はその日本語訳にとした。 その1: key 「ニーハオ」に対して value は 「こんにちは」 その2: key 「シエシエ」に対して value は 「ありがとう」 その3: key 「マーファニー」に対して value は 「お手数かけます」 その4: key 「バーバ」に対して value は 「お父さん」 その5: key 「ラオシー」に対して value は 「先生」 これに対応する Hash の表し方は tyugoku["ニーハオ"] = "こんにちは" tyugoku["シエシエ"] = "ありがとう" tyugoku["マーファニー"] = "お手数かけます" tyugoku["バーバ"] = "お父さん" tyugoku["ラオシー"] = "先生" また、もう一つの表し方は { "ニーハオ" => "こんにちは" ,"シエシエ" => "ありがとう" , "マーファニー" => "お手数かけます" ,"バーバ"" => "お父さん" , "ラオシー" = > "先生" } B、計算問題 a、0d 2010を16進数へ変換 16 )2010 10...a 16 )125 13...d 16 ) 7 7 0 0d 2010 = 0x 7da b、0d 2010を2進数へ変換 2 )2010 0 2 )1005 1 2 ) 502 0 2 ) 251 1 2 ) 125 1 2 ) 62 0 2 ) 31 1 2 ) 15 1 2 ) 7 1 2 ) 3 1 2 ) 1 1 0 0d2010 = 0b 11111011010 さらに 0b 11111011010 を16進数に変換 0111 1101 1010 ↓ ↓ ↓ 7 13(d) 10(a) 0b 11111011010 =0x 7da aとbが等しい答えになったのを確認できた。 2、プログラム問題 A、 a)考えた設定 日常で使う日本語を中国語で5つすべて 表示させた。 b)プログラム(説明) #!/usr/koeki/bin/ruby #最初に書かなければいけないもの $KCODE = 'e' #日本語コードのEUCで出力させた。 tyugoku = Hash.new #Hash 配列を tyugoku とした。 tyugoku["ニーハオ"] = "こんにちは" tyugoku["シエシエ"] = "ありがとう" tyugoku["マーファニー"] = "お手数かけます" tyugoku["バーバ"] = "お父さん" tyugoku["ラオシー"] = "先生" # Hash 配列 をtyugoku として5つを表した。 for item,yaku in tyugoku #すべての Hash の対を出力した #item = キー名、 yaku = 値 、 tyugoku = Hash配列名 printf("%s の日本語訳は「%s」となる。\n", item, yaku) # print メソッドを使用し、指定した変数(後述)に代入 # された値を入れ 込んで表示する。 end # for に対したの end c)プログラムの実行結果 ./hash_for.rb [~/Ruby] マーファニー の日本語訳は「お手数かけます」となる。 ラオシー の日本語訳は「先生」となる。 ニーハオ の日本語訳は「こんにちは」となる。 バーバ の日本語訳は「お父さん」となる。 シエシエ の日本語訳は「ありがとう」となる。 d)考察 Hash の対をすべて出力することができた。 よってプログラムが正しいと確かめられた。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ B a)考えた設定 Aのプログラムを手直しし、知りたい情報だけを 結果表示させた。選択肢以外を入力した場合も文章を表示させた。。 b)プログラム(説明) #!/usr/koeki/bin/ruby #最初に書かなければいけないもの $KCODE = 'e' #日本語コードのEUCで出力させた tyugoku = Hash.new #Hash 配列を tyugoku とした。 tyugoku["こんにちは"] = "ニーハオ" tyugoku["ありがとう"] = "シエシエ" tyugoku["お手数かけます"] = "マーファニー" tyugoku["お父さん"] = "バーバ" tyugoku["先生"] = "ラオシー" # Hash 配列 をtyugoku として5つを表した。 print("「 こんにちは、 ありがとう、 お手数かけます、 お父さん、 先生」 の中から\n") #print メソッドを使用し文章を表示 STDERR.print("知りたい中国語訳の語句を入力して下さい\n ") #ディスプレイに出力させるために使用 item = gets.chomp # キーボードからの入力を読み込むために使用 if tyugoku.key?(item) == true # true によって調べさせ item が tyugoku 内にあれば次の printf で # 表示させた。 printf("%s の中国語は %s になります。\n", item, tyugoku[item]) else #true で調べた結果なければ 下の文を print で表示させた。 print("5つの中から選んでくれないから終わりま〜す(^_^)。\n") end #if のend c)プログラムの実行結果 ./hash_choice.rb [~/Ruby] 「 こんにちは、 ありがとう、 お手数かけます、 お父さん、 先生」の中から 知りたい中国語訳の語句を入力して下さい こんにちは こんにちは の中国語は ニーハオ になります。 ./hash_choice.rb [~/Ruby] 「 こんにちは、 ありがとう、 お手数かけます、 お父さん、 先生」の中から 知りたい中国語訳の語句を入力して下さい お父さん お父さん の中国語は バーバ になります。 ./hash_choice.rb [~/Ruby] 「 こんにちは、 ありがとう、 お手数かけます、 お父さん、 先生」の中から 知りたい中国語訳の語句を入力して下さい おはよう 5つの中から選んでくれないから終わりま〜す(^_^)。 d)考察 選択した日本語に対する答えがしっかりと表示された。 また、選択肢以外を入力した場合でも文章が表示されるようになった。 よってプログラムが正しいと確かめられた。 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ C a)考えた設定 AやBとは異なり、データ(対)を入力してもらい そのデータを表示するプログラム。 b)プログラム(説明) #!/usr/koeki/bin/ruby #最初に書かなければいけないもの $KCODE = "e" #日本語コードのEUCで出力させた tyugoku = Hash.new #Hash 配列を tyugoku とした。 STDERR.print("日本語とその中国語訳を入力して下さい(Ctrl;+Dで終了 )\n") #ディスプレイに出力させるために使用 while true #繰り返しのために使用。 STDERR.print("日本語を入力して下さい:\n") item = gets ##入力されたものを item として取り込む。 if item == nil # Ctrl-D(入力終了)を入力した場合のみ作動。 break # break を用い繰り返しの実行を中止し、 # 繰り返しから抜けさせた。 else # Ctrl-D(入力終了)を入力した場合以外で作動。 item = item.chomp # キーボードからの入力を読み込むために使用 end #if のend STDERR.print("中国語訳:\n") tyugoku[item] = gets.chomp # 入力してもらいそのデータを # tyugoku[item] に代入させた end # while の end STDERR.print("入力終了\n\n") # Ctrl-D と入力した場合「入力終了」と表示するようにした。 for yaku, yaku2 in tyugoku #すべての Hash の対を出力した #yaku = キー名、 yaku2 = 値 、 tyugoku = Hash配列名 printf("%s \t = %s(中国語) \n", yaku, yaku2) # print メソッドを使用し、指定した変数(後述)に代入 # された値を入れ 込んで表示する。 end # for の end c)もとにしたプログラムからの変更点 講義中に作成した Ruby/hash_add.rb のプログラムを基にして作成。 構造的にはほぼ等しく、文章やメソッドをプログラムに合うように 変更した。 d)プログラムの実行結果 ./hash_register.rb [~/Ruby] 日本語とその中国語訳を入力して下さい(Ctrl;+Dで終了 ) 日本語を入力して下さい: こんにちは 中国語訳: ニーハオ 日本語を入力して下さい: お父さん 中国語訳: バーバ 日本語を入力して下さい: お座りください 中国語訳: チンジン 日本語を入力して下さい: 入力終了 お父さん = バーバ(中国語) お座りください = チンジン(中国語) こんにちは = ニーハオ中国語) e)考察 ユーザーに入力してもらったデータが最後に まとめて表示されたことを確認できた。 よってプログラムが正しいと確かめられた。 3、感想 Hashやkeyなど始めて聞く上に内容が難しく理解するのに 時間がかかった。しかし、プログラムを作成するうちに 内容が身に付いていくの感じた。復習をし、更に理解していきたい。 4、参考文献 西村先生の講義ノート 第2回 なになにといえばこれこれ http://roy/~madoka/2010/r2/02/ (1) http://roy/~madoka/2010/r2/02/02_02_theme_01_chainwords.html (2) http://roy/~madoka/2010/r2/02/02_03_theme_02_hash_input.html (3) http://roy/~madoka/2010/r2/02/02_04_theme_03_existornot.html (4) http://roy/~madoka/2010/r2/02/02_05_theme_04_initialize.html (5) http://roy/~madoka/2010/r2/02/02_06_theme_05_hash_pair.html (6) http://roy/~madoka/2010/r2/02/02_07_theme_06_forprint.html (7) http://roy/~madoka/2010/r2/02/02_08_theme_07_each.html (8) http://roy/~madoka/2010/r2/02/02_09_theme_08_prints.html (9) http://roy/~madoka/2010/r2/02/02_10_theme_09_memory.html 添付ファイル3つ