第 1 回 前期の復習 レポート課題 氏名:伊藤詩野 学籍番号:c1110186 語学クラス:中国語3 コース:社会福祉コース 1.筆記問題 A.前期で学んだこと 以下、学んだことを項目ごとにまとめました。 ・進数について 2進数 10進数 16進数 0 0 0 1 1 1 10 2 2 11 3 3 100 4 4 101 5 5 110 6 6 111 7 7 1000 8 8 1001 9 9 1010 10 a 1011 11 b 1100 12 c 1101 13 d 1110 14 e 1111 15 f ・進数計算について 10進数→2進数 答えが0になるまで2で割り続け余りを逆から表記する。 例)0d25 = 0b?? 25 / 2 = 12 余り 1 12 / 2 = 6 余り 0 6 / 2 = 3 余り 0 3 / 2 = 1 余り 1 1 / 2 = 0 余り 1 計算で出た余りを、下から読み上げる。 よって、 0d25 = 0b11001 2進数→16進数 2進数を右から4桁ずつ区切り計算を行う。 例)ob 11010110 = 0x?? 11010110 → 1101 、 0110 1*2^3= 16 1*2^2= 4 0*2^1= 0 1*2^0= 1 = +)21 0*2^3= 0 1*2^2= 4 1*2^1= 2 0*2^0= 0 =+) 6 21+6=27 よって、 0b 11010110 = 0x27 10進数→16進数 10進数を商が0になるまで、16で割る。 例)od 1024 = 0x?? 1024/16 = 64 余り 0 64/16 = 4 余り 0 4/16 = 0 余り 4 計算結果を下から逆に表示すると、400 よって、 0d 1024 = 0x400 ・UNIXの操作(ウィンドウの切り替え) Ctrl+1 : emacsを全面に表示、操作できる Ctrl+2 : kterm Ctrl+3 : console Ctrl+4 : firefox Ctrl+52: emacs画面を増やす Ctrl+50: emacs画面を減らす ・プログラムについて 新規作成およびファイルを開く:emacsの画面で Ctrl x Ctrl f ファイルの保存:Ctrl x Ctrl s トラブルが起きたとき:Ctrl g プログラムを実行する:Kterm画面で chmod +x プログラム名 →./プログラム名 2.プログラム問題 選択:C 考えた設定:今年10月から3月まで後期の計画(予定)などを月日順に表示させる。 データ:mydata_c111018.dat # month #day #plan #no 10 21 ホームヘルパー講座 開講式 a 10 27 公翔祭準備日 a 10 27 公翔祭1日目 a 10 28 公翔祭2日目 a 11 14 専門演習選択ガイダンス b 11 25 中国語検定 3級 受検 b 12 2 ホームヘルパー講座 c 12 9 ホームヘルパー講座 c 12 16 ホームヘルパー講座 c 12 23 ホームヘルパー講座 c 12 25 冬季休業期間開始 c 1 6 冬季休業期間終了/ホームヘルパー講座 d 1 13 ホームヘルパー講座 d 1 15 補講日 d 1 16 補講日 d 1 17 補講日 d 1 18 センター試験日(終日休講) d 1 28 後期末試験開始 d 2 2 後期末試験終了 e 2 4 春季休業開始/後期集中講義開始 e 2 9 後期集中講義終了 e 3 3 ひな祭り f 作成したプログラム:life_open.rb #!/usr/koeki/bin/ruby #coding: euc-jp month = Array.new # 月 day = Array.new # 日にち plan = Array.new #予定 i = 0 print("10月から3月までのスケジュール\n") print("いつの予定を知りたいですか? :\n") print("【a:10月 b:11月 c:12月 d:1月 e:2月 f:3月】\n") STDERR.print("番号:") pattern = STDIN.gets.chomp request = Regexp.new(pattern, true) open("mydata_c111018.dat","r") do |koki| while mydata_c111018 = koki.gets if request =~ mydata_c111018 #print mydata_c111018 if /(\S+)\s+(\S+)\s+(\S+)/ =~ mydata_c111018 month[i] = $1 day[i] = $2 plan[i] = $3 printf("%d : %d月%d日 \n",i,month[i],day[i]) end end i += 1 end end print("------ 詳細 ------\n") print("\n") STDERR.print("番号を選択してください\n") w = gets.chomp.to_i printf("日にち : %d月%d日 \n",month[w],day[w]) print("\n") printf("予定 : %s \n",plan[w]) ☆参考にしたプログラム:更生保護制度あるある字典 (前期に作成した検索プログラム) ☆変更点 上記の参考にしたプログラムでは、検索ワードを含んだ語句の説明が表示される プログラムだが、今回は月毎に選択するのでデータファイルを作成する際に、各 月でグループ分けした。プログラムについての変更点は、補足内容を表示するた めに、【elsif】を用いていたが今回は補足する内容が無いので用いていない。 ☆プログラムの実行結果 パターン1 pan{ITO Shino}% ./life_open.rb [~/Ruby] 10月から3月までのスケジュール いつの予定を知りたいですか? : 【a:10月 b:11月 c:12月 d:1月 e:2月 f:3月】 番号:c 7 : 12月2日 8 : 12月9日 9 : 12月16日 10 : 12月23日 11 : 12月25日 ------ 詳細 ------ 番号を選択してください 9 日にち : 12月16日 予定 : ホームヘルパー講座 パターン2 pan{c111018}% ./life_open.rb [~/Ruby] 10月から3月までのスケジュール いつの予定を知りたいですか? : 【a:10月 b:11月 c:12月 d:1月 e:2月 f:3月】 番号:b 5 : 11月14日 6 : 11月25日 ------ 詳細 ------ 番号を選択してください 6 日にち : 11月25日 予定 : 中国語検定 ☆実行結果からの考察 今年10月から3月まで後期の計画などを月日順で出力させることはできました。 データと比較すると、日付と予定が一致しています。 よって、このプログラムは正常といえます。 イメージは携帯などのスケジュール帳です。日付と(予定)出来事をわかりやすく 表示させたいと思っていましたが、データ量が少ないことがプログラムとして問 題でした。今回は番号でユーザーに入力させるプログラムですが、最初は第一段 階で◯月と選ばせて決定するのにも関らず、関係無く日付(day)が選択肢として 表示されてしまい苦労しました。原因としては、データの月毎に区別する番号を 数字で表記していたので、プログラムは日付と混合し検索してしまったようです。 そこで、月毎をアルファベットで分類したところ解決しました。 使いやすく、見やすく表示できるように、実行結果を比較しながらユーザーの視 点でプログラムを作成したいと思いました。 3.感想 後期もさっそく2限から講義に参加しました。ログインするところから、パスワー ドを思い出すのに苦労しました。講義で前期の復習をしながら、少しずつ、少し ずつ学んだことを思い出しました。忘れたということもあり、課題であるプログ ラムの作成には苦労しました。プログラム問題では中国へ短期留学へ行ったこと もあり、夏の思い出である留学のことを語るプログラムを作成しました課題を作 成する際には、村上さんや浅沼さんと協力しました。3人で話しし合いながら、 お互いどんな構想にするか相談しましたどのように計画を出力させれば良いのか? 候補として、print,stderr,openメソッドを用いる方法があがりましたが、私は 【open】を用いたプログラムを作成することにしました。プログラムを作成する 際には、前期で作成した検索プログラムを復習も兼ねて、参考にしました。プロ グラムを作成し実行すると、選んだ月以外の選択肢も表示されてしまいました。 村上さんも同じように上手くプログラムを実行できずにいたので、お互いのプロ グラムをチェックし問題点を探しました。すると、検索するために数字を用いて いたため、同じ数字をもつものが全部表示されていたことがわかりました。自分 一人では、おそらく原因に気づかなかったと思います。 今回はプログラムを一つ作り提出しますが、後期では前期よりも多くのプログラムを 作成したいと思うので、後期も引き続き頑張ります! 4.参考文献 ・2012 年度 基礎プログラミング I 講義ノート(シラバス) URL:http://roy.e.koeki-u.ac.jp/~madoka/2012/r1/ 講義15回分すべて参考としたため、URLには講義ノートの目次を記載しました。 ・これまで自分が作成したプログラム 共同学習者 村上茉奈美さん、浅沼佑香さん