第1回 基礎プログラミング II レポート課題 氏名:xxxxxxxx 学籍番号:c109xxx 語学クラス:中国語1 コース(系):環境サイエンス 1、筆記問題------------------------------------------------------------------- <前期の復習> 前期に書き取っていた自分のノートにメモしていたことを確認しながら挙げてみました。 ・Ctrl + 1 emacsが全面に出る。 ・Ctrl + 2 ktermが全面に出る。 ・Ctrl + 3 consoleが全面に出る。 ・Ctrl + 4 Fire foxが全面に出る。 ・Ctrl + x 5 2 Emacsの分裂。 ・Ctrl + x 5 0 Emacsの数を減らす。  ・Emacsで Ctrl x 2 画面が分割される。 ・分割された画面を戻すには Ctrl x 1 。 ・分割された画面を戻すには Ctrl x 1 。 ・Kterm画面でpan{-------%}が表示されなくなったら Ctrl + z 。 ・ktermでfire fox & [Return] Fire foxの起動。 ・Ctrl + 1 アドレスバーへのカーソル移動。 ・Ctrl + w  Fire foxの終了。 ・ls[Return] ディレクトリ(フォルダ)の中身を表示させる。 ・mkdir ディレクトリ名 [Return] ディレクトリ作成。 ・cd ディレクトリ名 [Return] ディレクトリの移動。・cd ..[Return] 1つ上のディレクトリに戻る。・Ctrl + x Ctrl + f 新規作成。ファイルを開く。 ・Ctrl + x Ctrl + s ファイルの保存。 ・Ctrl + o 日本語のオンオフ。 ・% chmod +x プログラム名 .rb チェンジモード。 ・Kterm上で問題発生 Ctrl c で中断。 ・Kterm上でCtrl c 直前に実行したコマンドをもう一度実行。 ・Emacs上で問題発生 Ctrl g で中断。 ・Mewで送信したメールを取り込むには i 。 ・Kterm上でのコピー&ペースト 右クリックで選択し、コピペしたいページ上で Ctrl g 。 ・大量に余計なものを貼りつけた場合 Ctrl x u でひとつ前の状態に戻る。 ・to_i 文字列を整数へ。 ・to_f 文字列を少数へ。 ・to_s 文字列(数値を)文字列へ。 ・Tabキーでリンク先を囲み、Ctrl + Returnで選択したページを開くことができる。 ・Ctrl T で新しくページを開き、Ctrl + Tabキーで他のページに飛ぶことができる。 ・Shift + TabキーでTabキーと逆回りでリンク先を選択することができる。 2、プログラム問題------------------------------------------------------------- A、 a、考えた設定 夏休み中の思い出を表示させるプログラム b、作成したプログラム(summer_a.rb) #!/usr/koeki/bin/ruby print("夏休み中の思い出\n") # print文を表示させる sleep 2 # スリープさせる print("\n") # 空行 print("夏休み前半\n") sleep 3 print("\n") print("今年の夏休みでは、初めて集中講義を受けました。\n") sleep 2 print("眠気との戦いでしたが、面白かったのでなんとか乗り切りました。\n") sleep 2 print("集中講義が終了した後は、ばたばたしながらの実家へ帰省となりました。\n") sleep 2 print("帰省してからは、ドライブに出かけたりしました。\n") sleep 2 print("久々の運転だったので最初は短距離から慣らしていき、最終的には、長距離も運転しました。\n") sleep 2 print("運転手は運転手なりの苦労があるんだなあ…としみじみ感じる運転となりました。\n") sleep 2 print("そして友達とも久々に会って、遊びに出かけました。\n") sleep 2 print("到着先では、夏休み中ということで、小さい子ども達もたくさん遊びに来ていました。\n") sleep 2 print("\n") print("夏休み後半\n") sleep 3 print("\n") print("夏休み後半には、足を延ばし、美術館に行きました。\n") sleep 2 print("ちょうど私が好きな画家の作品が展示されていたのでとても嬉しかったです。\n") sleep 2 print("実際に見ると、写真などで見るよりも本当に綺麗で感動しました。\n") sleep 2 print("他にも様々な画家の作品も鑑賞できて面白かったです。\n") sleep 2 print("美術館には修学旅行中の高校生もたくさんいて、高校時代の修学旅行が懐かしく感じられました。\n") sleep 2 c、もとにしたプログラム 前期に作成した自己紹介プログラムもとにしました。 そして自己紹介プログラムに空行のスペースと sleep を加えました。 d、実行結果 pan{c109067}% ./summer_a.rb [~/Ruby] 夏休み中の思い出 夏休み前半 今年の夏休みでは、初めて集中講義を受けました。 眠気との戦いでしたが、面白かったのでなんとか乗り切りました。 集中講義が終了した後は、ばたばたしながらの実家へ帰省となりました。 帰省してからは、ドライブに出かけたりしました。 久々の運転だったので最初は短距離から慣らしていき、最終的には、長距離も運転しました。 運転手は運転手なりの苦労があるんだなあ…としみじみ感じる運転となりました。 そして友達とも久々に会って、遊びに出かけました。 到着先では、夏休み中ということで、小さい子ども達もたくさん遊びに来ていました。 夏休み後半 夏休み後半には、足を延ばし、美術館に行きました。 ちょうど私が好きな画家の作品が展示されていたのでとても嬉しかったです。 実際に見ると、写真などで見るよりも本当に綺麗で感動しました。 他にも様々な画家の作品も鑑賞できて面白かったです。 美術館には修学旅行中の高校生もたくさんいて、高校時代の修学旅行が懐かしく感じられました。 e、考察 文章・空行の部分も正しく表示されたのでプログラム結果は正しいといえる。 f、参考文献 最後に記載 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ B、 a、考えた設定 数字を打ち込むとその打ち込んだ歳の夏の思い出が表示されるプログラム b、作成したプログラム(summer_b.rb) #!/usr/koeki/bin/ruby while true # 繰り返し STDERR.print("6から20の数字を打ち込んでください。(終了は0)\n") tosi = gets.to_i # 与えられた数字を1行ずつ読み込む if tosi == 6 # もし(数字)なら print("<<家族と旅行に行った。>>\n") # print文を表示させる elsif tosi == 7 print("<<プールに遊びに行っていた。>>\n") elsif tosi == 8 print("<<家族と旅行に行った。釣り・海水浴をした。>>\n") elsif tosi == 9 print("<<親戚の家に泊まりに行った。>>\n") elsif tosi == 10 print("<<家族と釣りに行った。>>\n") elsif tosi == 11 print("<<座禅会に参加した。いろんな人と交流をすることができた。>>\n") elsif tosi == 12 print("<<座禅会に参加した。墓地でお化け屋敷をした。迫力があった。>>\n") elsif tosi == 13 print("<<親戚の家に泊まりにいった。>>\n") elsif tosi == 14 print("<<家族と旅行に行った。>>\n") elsif tosi == 15 print("<<修学旅行で東京に行った。>>\n") elsif tosi == 16 print("<<美術部。作品制作をしていた。>>\n") elsif tosi == 17 print("<<美術部。作品制作をしていた。>>\n") elsif tosi == 18 print("<<修学旅行で沖縄に行った。>>\n") elsif tosi == 19 print("<<大学祭準備。高校に遊びに行った。>>\n") elsif tosi == 20 print("<<美術館に行った。>>\n") else tosi == 0 break # 0 と打ち込まれたら、繰り返しから抜ける end # if 終わり end # while 終わり c、もとにしたプログラム 前期に作成した calender.rb プログラムを参考にしました。 wday を print文に変更し、while true と break を付け加えました。 d、実行結果 pan{c109067}% ./summer_b.rb [~/Ruby] 6から20の数字を打ち込んでください。(終了は0) 6 <<家族と旅行に行った。>> 6から20の数字を打ち込んでください。(終了は0) 10 <<家族と釣りに行った。>> 6から20の数字を打ち込んでください。(終了は0) 20 <<美術館に行った。>> 6から20の数字を打ち込んでください。(終了は0) 0 e、考察 print文の通りに実行結果が表示され、0を打ち込むときちんと終了したので、 このプログラムは正しいといえる。 f、参考文献 最後に記載 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ C、 a、考えた設定 数字を打ち込むと、年齢と・その打ち込んだ歳の夏の思い出が表示されるプログラム。 b、作成したデータ(summer_c.dat)・プログラム(summer_c.rb) # 歳 # 出来事 06 家族と旅行に行った。 07 プールに遊びに行っていた。 08 家族と旅行に行った。釣り・海水浴をした。 09 親戚の家に泊まりに行った。 10 家族と釣りに行った。 11 座禅会に参加した。いろんな人と交流をすることができた。 12 座禅会に参加し、墓地でお化け屋敷をした。迫力があった。 13 親戚の家に泊まりにいった。 14 家族と旅行に行った。 15 修学旅行で東京に行った。 16 美術部。作品制作をしていた。 17 美術部。作品制作をしていた。 18 修学旅行で沖縄に行った。 19 大学祭準備。高校に遊びに行った。 20 美術館に行った。 #!/usr/koeki/bin/ruby tosi = Array.new # 年齢 omoide = Array.new # 思い出 STDERR.print("06から20までの数字を打ち込んでください。\n") a = STDIN.gets.chomp # 与えられた数字を1行ずつ読み込む b = Regexp.new(a,true,"e") # 前で読み込んだものを正規表現に変える # ture … 大文字・小文字を区別しない # e … 日本語で検索する場合に使用する open("summer_c.dat","r") do |natuyasumi| # summer_c.datを読み取り、natuyasumiという名前に置き換える i = 0 # 配列番号 while natu = natuyasumi.gets # 繰り返し、natuyasumiの中身がなくなったら終わる if b =~ natu # bがnatuなら if /(\S+)\s+(\S+)/ =~ natu tosi[i] = $1 # 1番目のSにtosiを読み込む omoide[i] = $2 # 2番目のSにomoideを読み込む printf("%s歳 : %s \n", tosi[i], omoide[i]) i += 1 # 次のものを読み込むために +1 をする end # if を終わる end # if を終わる end # while を終わる end # open を終わる c、もとにしたプログラム 前期のプログラム作成の際に作った ringo.rb プログラムを参考にしました。 d、実行結果 pan{c109067}% ./summer_c.rb [~/Ruby] 06から20までの数字を打ち込んでください。 06 06歳 : 家族と旅行に行った。 pan{c109067}% ./summer_c.rb [~/Ruby] 06から20までの数字を打ち込んでください。 10 10歳 : 家族と釣りに行った。 pan{c109067}% ./summer_c.rb [~/Ruby] 06から20までの数字を打ち込んでください。 20 20歳 : 美術館に行った。 e、考察 プログラムを実行したら、正しく、数字・年齢・思い出の順序で1回ずつ表示さ れたので、このプログラムは正しいといえる。 また、プログラムを実行し、何も打ち込まずにReturnキーを押したところ、以下 のように pan{c109067}% ./summer_c.rb [~/Ruby] 06から20までの数字を打ち込んでください。 #歳 : 歳 06歳 : 家族と旅行に行った。 07歳 : プールに遊びに行っていた。 08歳 : 家族と旅行に行った。釣り・海水浴をした。 09歳 : 親戚の家に泊まりに行った。 10歳 : 家族と釣りに行った。 11歳 : 座禅会に参加した。いろんな人と交流をすることができた。 12歳 : 座禅会に参加し、墓地でお化け屋敷をした。迫力があった。 13歳 : 親戚の家に泊まりにいった。 14歳 : 家族と旅行に行った。 15歳 : 修学旅行で東京に行った。 16歳 : 美術部。作品制作をしていた。 17歳 : 美術部。作品制作をしていた。 18歳 : 修学旅行で沖縄に行った。 19歳 : 大学祭準備。高校に遊びに行った。 20歳 : 美術館に行った。 と一覧のように表示されるということも分かった。 f、参考文献 最後に記載 3、感想---------------------------------------------------------------------- 後期初めての授業や課題をやってみて、パソコンの操作方法(メール・プログラ ム作成など)をほとんど忘れていました。期間が空くとこんなにも忘れてしまう のかと思いました。授業では、データ・プログラム作成の内容がごちゃごちゃに 混ざってしまったりと、間違えだらけでした。 Mewでは、保存したメールを開くコマンドを忘れてしまい、友達に聞きながら 、思い出すことができました。 今回の課題のプログラム作成でも、意味を忘れていたメゾットも多かったので、 友達に教えてもえ、本当に良い復習にもなりました。 まずは、前期に学んだことを思い出しながら、取り組んでいきたいです。そして後 期も予習・復習をしながら頑張っていきたいです。 4、参考文献------------------------------------------------------------------- 西村 まどか 基礎プログラミング I 第2回 Ruby の基礎 / 計算が終ったら止まる問題 http://roy/~madoka/2010/r1/02/ 「自己紹介を表示させてみよう」 http://roy/~madoka/2010/r1/02/02_07_theme_05_print_intro.html 基礎プログラミング I 第9回 Ruby であそぼ / 広告ページの作成 http://roy/~madoka/2010/r1/09/ 「少し間を空ける」 http://roy/~madoka/2010/r1/09/09_08_theme_06_sleep.html 共同学習者 久保田 瑛一朗 横山 広樹 青木 千紗