第1回 基礎プログラミング II レポート課題 氏名:小川まどか 学籍番号:C1100420 語学クラス:英語2 コース:社会福祉コース 1.筆記問題 A ・新規作成とファイルを開く→ctrl+x ctrl+f ・ファイルの保存→ctrl+x ctrl+s ・プログラムを実行する手順 1.cd programと入力しReturnキーを押す 2.chmod +x ファイル名.rbと入力し、Returnキーを押す 3../ファイル名.rbと入力し、Returnキーを押すとプログラムが実行される ・Rubyを使う際、始めに#!/usr/koeki/bin/rubyと入力する ・メソッド getsメソッド→入力を文字列として取得 chomp!メソッド→\nを取り除く ・値の型変換メソッド to_i→整数に変換する to_f→実数に変換する to_s→文字列に変換する ・書式制御文字 d→10進数に置き換える x→16進数に置き換える f→10進数に置き換える s→文字列に置き換える ・whlie-end 繰り返しを継続する。 ・while true 繰り返しが永久に続く。繰り返しを終わらせるときは繰り返しから抜けるbreak を使う。 ・if 条件が複数ある場合はelsif、elseを使う。最後はendを忘れない。 ・配列のlengthメソッド 代入されている値を返す。 ・openメソッド STDIN→ファイルを読み込む STDERR→ディスプレイに表示させる 2.プログラム問題 A i.考えた設定 今年の夏の思い出を振り返るプログラムを作成した。 ii.作成したプログラム #!/usr/koeki/bin/ruby print("今年の夏の思い出\n") #print文の表示 sleep(2) #スリープを使い、間をあける print("8月15日 自動車学校の卒業検定だった。みごと一発合格した!!\n") sleep(2) print("8月22日 実家に帰った。夜は寿司を食べた。美味しかった!!\n") sleep(2) print("9月1日 免許を取りに免許センターに行った。筆記試験に合格したので免許をゲットすることができた^^!\n") sleep(2) print("9月5日 友達と盛岡に買い物に行った。\n") sleep(2) print("9月9日、10日、11日 友達と地元のお祭りに行った。\n") sleep(2) print("9月13日 お父さんの車を借りて運転した。お父さんの車は大きいので運転するときは色んなところにぶつけそうで怖かった。\n") sleep(2) print("9月19日 酒田に戻ってきた。\n") sleep(1) print("感想:今年の夏は地元でゆっくりできた。無事に車の免許がとれてホッとした!\n") iii.もとにしたプログラムからの変更点 前期につくったプログラムをもとにした。print文の数を増やしたのとスリープさせる時間を変更した。 iv.プログラムを実行した結果画面 pan{c110042}% ./summer_a.rb [~/Ruby] 今年の夏の思い出 8月15日 自動車学校の卒業検定だった。みごと一発合格した!! 8月22日 実家に帰った。夜は寿司を食べた。美味しかった!! 9月1日 免許を取りに免許センターに行った。筆記試験に合格したので免許をゲットすることができた^^! 9月5日 友達と盛岡に買い物に行った。 9月9日、10日、11日 友達と地元のお祭りに行った。 9月13日 お父さんの車を借りて運転した。お父さんの車は大きいので運転するときは色んなところにぶつけそうで怖かった。 9月19日 酒田に戻ってきた。 感想:今年の夏は地元でゆっくりできた。無事に車の免許がとれてホッとした! v.導き出された結果の考察 printを使いカッコ内の文を表示させるようにした。 実行すると、実行画面にカッコ内の文が正しく表示された。 また、ここではsleepを使った。 実行すると、前の文と次の文が表示されるまでの間がきちんとあった。 B i.考えた設定 小学校から今までの夏の思い出を振り返るプログラムを作成した。 思い出を聞きたい時期の番号を入力すると内容が表示される。 ii.作成したプログラム #!/usr/koeki/bin/ruby print("今までの自分の夏の思い出\n") #print文の説明 print("10歳から19歳の中思い出を聞きたい歳を入力して下さい。\n") print("歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→\n") toshi=gets.chomp.to_i if toshi==10 #toshiに10が入力されたら print("小5。ほとんど毎日のようにプールに行った。\n") elsif toshi==11 print("小6。家族で浅虫水族館に行った。\n") elsif toshi==12 print("中1。吹奏楽部に入部した。夏休みも毎日部活だった。\n") elsif toshi==13 print("中2。ほとんど毎日部活。色々あって顧問の先生と喧嘩をした。\n") elsif toshi==14 print("中3。夏休みにクラスの皆で肝試しをした。なかなか楽しかった。\n") elsif toshi==15 print("高1。弓道部に入部した。夏休みは暑中稽古があった。百射会は疲れたけど楽しかった。\n") elsif toshi==16 print("高2。夏にあった大会で初めて入賞して嬉しかった。入賞の賞品はケーキだった^^!\n") elsif toshi==17 print("高3。夏休みも毎日学校に行って受験勉強をしていた。英語が全然できなくて苦しんだ。\n") elsif toshi==18 print("大1。ほとんどバイトだった。社会勉強になった。 \n") elsif toshi==19 print("大2。車の免許を取った。卒検も筆記も一発合格したのでよかった!\nほとんど地元にいたので、酒田に戻って来るのがちょっと億劫だった。\n") elsif toshi<9 #もし9歳以下が入力されたら print("よく覚えていないので語れません。すいません。10歳から19歳の間で入力して下さい。\n") else toshi>20 #もし20歳以上が入力されたら print("まだ20歳になっていないので思い出はありません。10歳から19歳の間で入力して下さい。\n") end iii.もとにしたプログラムからの変更点 前期でつくったプログラムをもとにした。if tokuten の部分をtoshiに変えて、 elsifを増やした。 iv.プログラムを実行した結果画面 pan{c110042}% ./summer_b.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 11 小6。家族で浅虫水族館に行った。 pan{c110042}% ./summer_b.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 15 高1。弓道部に入部した。夏休みは暑中稽古があった。百射会は疲れたけど楽しかった。 pan{c110042}% ./summer_b.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 8 よく覚えていないので語れません。すいません。10歳から19歳の間で入力して下さい。 pan{c110042}% ./summer_b.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 21 まだ20歳になっていないので思い出はありません。10歳から19歳の間で入力して下さい。 v.導き出された結果の考察 10から19の数字を入力するとprintのカッコ内の内容が正しく表示された。 10歳以下の数字(0から9)、19歳以上の数字(20から)を入力すると、10から19の間 で入力して下さいと正しく表示された。 C i.考えた設定 プログラムとdatファイルの2つに分け、選択した年齢の夏の思い出をdatファ イルを読み込みながら表示させるプログラムをつくった。 ii.作成したプログラム ・データ 10 小5。ほとんど毎日のようにプールに行った。 11 小6。家族で浅虫水族館に行った。 12 中1。吹奏楽部に入部した。夏休みも毎日部活だった。 13 中2。ほとんど毎日部活。色々あって顧問の先生と喧嘩をした。 14 中3。夏休みにクラスの皆で肝試しをした。なかなか楽しかった。 15 高1。弓道部に入部した。夏休みは暑中稽古があった。百射会は疲れたけど楽しかった。 16 高2。夏にあった大会で初めて入賞して嬉しかった。入賞の賞品はケーキだった^^! 17 高3。夏休みも毎日学校に行って受験勉強をしていた。英語が全然できなくて苦しんだ。 18 大1。ほとんどバイトだった。社会勉強になった。 19 大2。車の免許を取った。卒検も筆記も一発合格したのでよかった!ほとんど地元にいたので、酒田に戻って来るのがちょっと億劫だった。 ・プログラム #!/usr/koeki/bin/ruby print("今までの自分の夏の思い出\n") print("10歳から19歳の中で思い出を聞きたい歳を入力して下さい。\n") STDERR.print("歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→\n") toshi = STDIN.gets.chomp a = Regexp.new(toshi, true, "e") open("summer_c.dat","r") do |omoide| #summer_c.datを読み込む while summer_c = omoide.gets if a =~ summer_c if /(\d+)\s+(\S+)/ =~ summer_c printf("\n\%d歳の思い出: %s\n", $1,$2) #$1にtoshiを$2にomoideを読み込む end # ifを終わる end # ifを終わる end # whileを終わる end #openを終わる iii.もとにしたプログラムからの変更点 前期につくったプログラムをもとにした。if(\S+)の部分を今回のプログラムに当 てはまるように変更した。 iv.プログラムを実行した結果画面 pan{c110042}% ./summer_c.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中で思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 18 18歳の思い出: 大1。ほとんどバイトだった。社会勉強になった。 pan{c110042}% ./summer_c.rb [~/Ruby] 今までの自分の夏の思い出 10歳から19歳の中で思い出を聞きたい歳を入力して下さい。 歳を入力(例:16歳の時の思い出を聞きたいときは16と入力)→ 13 13歳の思い出: 中2。ほとんど毎日部活。色々あって顧問の先生と喧嘩をした。 v.導き出された結果の考察 今回は18歳と13歳の思い出を実行した。どちらもsummer_c.datに書かれた文が表 示されたので、プログラムは正しく実行したと言える。 3.感想 夏休みの間ですっかり操作の仕方を忘れてしまっていたので、課題をこなすのに かなり時間がかかりました。特にktermの操作の仕方を忘れてしまっていて、プログ ラムの実行ができなかったりして戸惑ってしまいました。 前期で学んだことをしっかりと思い出して、これからの講義に臨みたいです。 半年間よろしくお願いします。 4.参考文献 西村まどか先生 基礎プログラミングI 第4回 プログラミングの方法 (http://roy.e.koeki-u.ac.jp/~madoka/2010/r1/04/) 基礎プログラミングI 第7回 正規表現とRuby言語でのプログラミング (http://roy.e.koeki-u.ac.jp/~madoka/2010/r1/07/)