第 1 回 前期の復習 レポート課題 氏名:佐藤美咲 学籍番号:c111081A 語学クラス:英語2 コース:地域共創 1. 筆記問題 A. ☆画面編 ◯Ctrl 1 で emacs ◯Ctrl 2 で Kterm ◯Ctrl 3 で console ◯Ctrl 4 で firefox ◯ファイルを開く Ctrl+x Ctrl+f ◯ファイルを保存する Ctrl+x Ctrl+s ◯Emacsの画面を増やす Ctrl+x 5 → 2 ◯Emacsの画面を減らす Ctrl+x 5 → 0 ☆メール編 ◯メールを送るためにメールソフト mew を立ち上げる Esc-x (M-x) mew ◯メールを書きはじめる w ◯mew に添付する Ctrl-c Ctrl-a 添付するファイルで c 指定したら 2 回リターンキーを押す ◯送信 Ctrl-c Ctrl-c ◯ファイルが送られたかの確認 i ◯MAILER-DAEMON = 送られていない ◯編集 Shift e ☆プログラム編 ◯#!/usr/koeki/bin/ruby #coding: euc-jp (実行する言語が何であるか教えるために必ず入力する) ◯保存 Ctrl-x Ctrl-s ◯print("表示したい文章 \n") ◯変数="表示したい文章" printf("%s \n", 変数) ◯文字列を代入する "" ◯文字列 (String) を出力する %s ◯横幅を空ける \t ◯整数値を出力する %d ◯STDERR.print("入力を促す文章") 文字列の入力を促す ◯変数 = gets.chomp! 入力された文字列を切り取る ◯変数 = gets.to_i 入力された文字列を切り取って整数に変換 ◯変数 = gets.to_f 入力された文字列を切り取って小数に変換 ◯整数値 to_i %d ◯小数値 to_f %f ◯文字列 to_s %s ◯整数分だけ箱を空けて、右詰めに文字列を表示 %整数s ◯整数分だけ箱を空けて、右詰めに文字列を表示 %整数d ◯全体で空ける箱の数.そのうちの小数点以下の箱の数 %整数.整数f ◯整数分だけ箱を空けて、左詰めに文字列を表示 %負の整数s ◯整数分だけ箱を空けて、左詰めに文字列を表示 %負の整数d ◯困ったとき Ctrl+g ☆計算編 ◯計算する bc -l 2. プログラム問題 C. a.卒業までの予定について。 ☆作成したプログラム(life_print.rb) #!/usr/koeki/bin/ruby #coding: euc-jp print("2012年10月 : TOEICで300目指して勉強\n\n") sleep 1 print("2012年11月 : TOEICで300目指して勉強\n\n") sleep 1 print("2012年12月 : TOEICで300以上取得\n\n") sleep 1 print("2013年1月 : 簿記3級の勉強\n\n") sleep 1 print("2013年2月 : 簿記3級の勉強\n\n") sleep 1 print("2013年3月 : 簿記3級取得\n\n") sleep 1 print("2013年4月 : TOEIC500目指して勉強\n\n") sleep 1 print("2013年5月 : TOEIC500目指して勉強\n\n") sleep 1 print("2013年6月 : TOEIC500目指して勉強\n\n") sleep 1 print("2013年7月 : TOEIC500目指して勉強\n\n") sleep 1 print("2013年8月 : TOEIC500目指して勉強\n\n") sleep 1 print("2013年9月 : TOEIC500以上取得\n\n") sleep 1 print("2013年10月 : 漢字検定2級の勉強\n\n") sleep 1 print("2013年11月 : 漢字検定2級の勉強\n\n") sleep 1 print("2013年12月 : 漢字検定2級取得\n\n") sleep 1 print("2014年1月 : TOEIC700目指して勉強\n\n") sleep 1 print("2014年2月 : TOEIC700目指して勉強\n\n") sleep 1 print("2014年3月 : TOEIC700目指して勉強\n\n") sleep 1 print("2014年4月 : TOEIC700目指して勉強\n\n") sleep 1 print("2014年5月 : TOEIC700以上取得\n\n") sleep 1 print("2014年6月 : SPIの勉強\n\n") sleep 1 print("2014年7月 : SPIの勉強\n\n") sleep 1 print("2014年8月 : 就職活動\n\n") sleep 1 print("2014年9月 : 就職活動\n\n") sleep 1 print("2014年10月 : 就職が決まる\n\n") sleep 1 print("2014年11月 : TOEIC800目指して勉強\n\n") sleep 1 print("2014年12月 : TOEIC800目指して勉強\n\n") sleep 1 print("2015年1月 : TOEIC800目指して勉強\n\n") sleep 1 print("2015年2月 : TOEIC800以上取得\n\n") sleep 1 print("2015年3月 : 卒業\n\n") sleep 1 print("おしまい。") ☆もとにしたプログラム もとにしたプログラムはないが、 2年前期の時にやったことを思い出して作った。 ☆実行結果 pan{c111081}% ./life_print.rb [~/Ruby] 2012年10月 : TOEICで300目指して勉強 2012年11月 : TOEICで300目指して勉強 2012年12月 : TOEICで300以上取得 2013年1月 : 簿記3級の勉強 2013年2月 : 簿記3級の勉強 2013年3月 : 簿記3級取得 2013年4月 : TOEIC500目指して勉強 2013年5月 : TOEIC500目指して勉強 2013年6月 : TOEIC500目指して勉強 2013年7月 : TOEIC500目指して勉強 2013年8月 : TOEIC500目指して勉強 2013年9月 : TOEIC500以上取得 2013年10月 : 漢字検定2級の勉強 2013年11月 : 漢字検定2級の勉強 2013年12月 : 漢字検定2級取得 2014年1月 : TOEIC700目指して勉強 2014年2月 : TOEIC700目指して勉強 2014年3月 : TOEIC700目指して勉強 2014年4月 : TOEIC700目指して勉強 2014年5月 : TOEIC700以上取得 2014年6月 : SPIの勉強 2014年7月 : SPIの勉強 2014年8月 : 就職活動 2014年9月 : 就職活動 2014年10月 : 就職が決まる 2014年11月 : TOEIC800目指して勉強 2014年12月 : TOEIC800目指して勉強 2015年1月 : TOEIC800目指して勉強 2015年2月 : TOEIC800以上取得 2015年3月 : 卒業 おしまい。 ☆考察 すべての文字がちゃんと表示されたのでこのプログラムは正しいといえる。 b.数字を入力する部分を作り、その時点での自分の計画を語るプログラム。 ☆作成したプログラム(life_stderr.rb) #!/usr/koeki/bin/ruby #coding: euc-jp STDERR.print("1 : 2012年12月 2 : 2013年10月 3 : 2014年6月 4 : 2015年3月 \n") # print 文で表示させたい文章を " " の間に入れる toshi = gets.to_i # 入力された文字を数字に変えて toshi という変数に入れる。 if toshi == 1 # もし toshi が 1 だったら print("必死になってTOEIC300点目指して勉強したかいが報われる!\n") elsif toshi == 2 # 違っていてもし toshi が 2 だったら print("大の苦手の漢字を勉強。狙うは2級!\n") elsif toshi == 3 # 違っていてもし toshi が 3 だったら print("就職に向けてSPIの勉強!\n") else toshi == 4 # 違っていて toshi が 4 だったら print("無事に卒業する!(はず…)\n") end # if に対する end ☆もとにしたプログラム 2年前期時のプログラム ☆実行結果 pan{c111081}% ./life_stderr.rb [~/Ruby] 1 : 2012年12月 2 : 2013年10月 3 : 2014年6月 4 : 2015年3月 1 必死になってTOEIC300点目指して勉強したかいが報われる! pan{c111081}% ./life_stderr.rb [~/Ruby] 1 : 2012年12月 2 : 2013年10月 3 : 2014年6月 4 : 2015年3月 2 大の苦手の漢字を勉強。狙うは2級! pan{c111081}% ./life_stderr.rb [~/Ruby] 1 : 2012年12月 2 : 2013年10月 3 : 2014年6月 4 : 2015年3月 3 就職に向けてSPIの勉強! pan{c111081}% ./life_stderr.rb [~/Ruby] 1 : 2012年12月 2 : 2013年10月 3 : 2014年6月 4 : 2015年3月 4 無事に卒業する!(はず…) ☆考察 プログラムに打ち込んだ文章が正常に出力されたのでたので、 このプログラムは正しいといえる。 c.学年と月を入力すると、その時の予定が表示されるプログラム。 ☆作成したデータ(mydata_c111081.dat) #月 #予定 2.10 TOEICで300目指して勉強 2.11 TOEICで300目指して勉強 2.12 TOEICで300以上取得 3.1 簿記3級の勉強 3.2 簿記3級の勉強 3.3 簿記3級取得 3.4 TOEIC500目指して勉強 3.5 TOEIC500目指して勉強 3.6 TOEIC500目指して勉強 3.7 TOEIC500目指して勉強 3.8 TOEIC500目指して勉強 3.9 TOEIC500以上取得 3.10 漢字検定2級の勉強 3.11 漢字検定2級の勉強 3.12 漢字検定2級取得 4.1 TOEIC700目指して勉強 4.2 TOEIC700目指して勉強 4.3 TOEIC700目指して勉強 4.4 TOEIC700目指して勉強 4.5 TOEIC700以上取得 4.6 SPIの勉強 4.7 SPIの勉強 4.8 就職活動 4.9 就職活動 4.10 就職が決まる 4.11 TOEIC800目指して勉強 4.12 TOEIC800目指して勉強 4.14 TOEIC800目指して勉強 5.2 TOEIC800以上取得 5.3 卒業 ☆作成したプログラム(life_open.rb) #!/usr/koeki/bin/ruby #coding: euc-jp tosi = Array.new # 年 yotei = Array.new # 計画 STDERR.print("予定が知りたい学年と月を入力して下さい。(学年.月)\n") a = STDIN.gets.chomp # 与えられた数字を1行ずつ読み込む b = Regexp.new(a,true) # 前で読み込んだものを正規表現に変える # ture … 大文字・小文字を区別しない open("mydata_c111081.dat","r") do |keikaku| # mydata_c11108.datを読み取り、keikakuという名前に置き換える i = 0 # 配列番号 while aiu = keikaku.gets # 繰り返し、keikakuの中身がなくなったら終わる if b =~ aiu # bがaiuなら if /(\S+)\s+(\S+)/ =~ aiu tosi[i] = $1 # 1番目のSにtosiを読み込む yotei[i] = $2 # 2番目のSにyoteiを読み込む printf("%s月 : %s \n", tosi[i], yotei[i]) i += 1 # 次のものを読み込むために +1 をする end # if を終わる end # if を終わる end # while を終わる end # open を終わる ☆もとにしたプログラムと変更点 講義中に作ったreview_print.rb このプログラムにデータを引っ張って来る open("mydata_c111081.dat","r") do |keikaku|をつけたした。 ☆実行結果 pan{c111081}% ./life_open.rb [~/Ruby] 予定が知りたい学年と月を入力して下さい。(学年.月) 2.12 2.12月 : TOEICで300以上取得 pan{c111081}% ./life_open.rb [~/Ruby] 予定が知りたい学年と月を入力して下さい。(学年.月) 3.10 3.10月 : 漢字検定2級の勉強 pan{c111081}% ./life_open.rb [~/Ruby] 予定が知りたい学年と月を入力して下さい。(学年.月) 4.6 4.6月 : SPIの勉強 ☆考察 プログラムを実行したら、学年.月、予定 の順序で表示され、 データを見て確認したらちゃんと一致していた。 よって、このプログラムは正しいといえる。 3.感想 夏休みの期間が長すぎたのか、ifの使い方などを忘れかけていました。 しかし、2年前期の講義ノートや前期に作ったプログラムを参考にして なんとかやりとげました。 また、基本的な操作も忘れかけていました。 例えば、下書き保存したメールの出し方や、プログラム本文の張り付け方など… 最初の課題ということもあり、思ったよりてこずってしまいました。 次回はもうすこしスムーズに出来たら良いと思います。 これからも気を抜かずに頑張ります!よろしくお願いします! 4.参考文献 http://roy/~madoka/2012/r2/01/r2_01_06_theme_06_programming.html 基礎プログラミング II 第 1 回 (前期の復習) 「Ruby 言語のプログラミングで の約束事」 西村まどか http://roy/~madoka/2012/r1/04/r1_04_07_theme_04_rubiorobot.html 基礎プログラミング I 第 4 回 (プログラミングの方法) 「ルビ緒ロボットが行 動するには」 西村まどか プログラム問題 a、b、c、cのデータ を添付致しました。