第1回 基礎プログラミング II レポート課題 氏名: xxxxxxxx 学籍番号: C109xxx 語学クラス: 英語 1 コース(系): 環境サイエンス 1.A while 文は繰り返しを行なうときに使う。例を挙げると while true は break すると while から抜けることができる。while i = 5 は i の値が 5 になると while から抜けることができる。このように while の後条件を付けることで 繰り返す回数を設定することができる。 if 文は もしという意味なので、条件にあったことを実行できる。例を挙げると if s == 5 は s が 5 だった場合、その下にある実行文を実行する。5 では なかった場合その下の実行文は実行されない。 sleep 文は実行したとき一時的に、停止して設定された時間がきたらふたたび 実行される。例を挙げると sleep (3) は 3 杪間停止した後ふたたび実行される。 2. A 1 考えた設定 夏休み中に友達と遊んだことについて語るプログラムを考えた。 2 作成したプログラム #!/usr/koeki/bin/ruby print("実家に帰った次の日、友達と遊んだ。\n") print("その日は午後から楽天イーグルスの野球観戦に、誘われていたので見に行きました。\n") print("しかし、その日はとても暑くとてもじゃないが最後まで見ることが出来なかった。\n") print("同時にその日はお祭りがあったので、一緒に見て回った。\n") print("次の日も同じ友達と仙台に行ってきた。\n") print("仙台に行ったが、特に計画もなく行ったので何もせずに帰って来てしまった。\n") print("その日もお祭りがあったので、その辺を見て回った。\n") print("見て回った後、帰ることになっていたが花火をしようということになり久し振りに花火をした後家に帰った。\n") print("この二日間は久々に会った友達と一緒に楽しく過ごした二日間だった。\n") # print 文を使い表示させたい文章をカッコとダブルコーテーションの中に入れる。 3 もとにしたプログラムからの変更点 表示する文章を変えて、自分のことについて語るプログラムにした。 4 プログラムの実行画面 pan{c109149}% ./summer_a.rb [~/Ruby] 実家に帰った次の日、友達と遊んだ。 その日は午後から楽天イーグルスの野球観戦に、誘われていたので見に行きました。 しかし、その日はとても暑くとてもじゃないが最後まで見ることが出来なかった。 同時にその日はお祭りがあったので、一緒に見て回った。 次の日も同じ友達と仙台に行ってきた。 仙台に行ったが、特に計画もなく行ったので何もせずに帰って来てしまった。 その日もお祭りがあったので、その辺を見て回った。 見て回った後、帰ることになっていたが花火をしようということになり久し振りに花火をした後家に帰った。 この二日間は久々に会った友達と一緒に楽しく過ごした二日間だった。 5 考察 このプログラムは print 文は画面に表示させるという意味。プログラムでは print("実家に帰った次の日、友達と遊んだ。\n") と書いてある。そして実 行画面では 実家に帰った次の日、友達と遊んだ。 となっている。カッコと ダブルコーテーションの中に入っているものは 実家に帰った次の日、友達と 遊んだ。なので正しく表示されている。 B 1 考えた設定 知りたい頃の思い出を選び、その頃の思い出を表示させるプログラムを考えた。 2 作成したプログラム #!/usr/koeki/bin/ruby STDERR.print("1、10歳 2、14歳 3、17歳 4、18歳 5、最近の思い出 どの頃の思い出が知りたいですか?: ") # print 文で表示させたい文章をカッコとダブルコーテーションの中に入れる。 toshi = gets.to_i # 入力された文字を数字に変えて toshi という変数に入れる。 if toshi == 1 # もし toshi が 1 だったら print("小学校のときは、夏休みになるとプールがあるので弟と一緒に行っていた。\n") elsif toshi == 2 # 違っていてもし toshi が 2 だったら print("中学校のときは、部活がソフトテニス部に所属していたので休み中は部活動を頑張っていた。\n") elsif toshi == 3 # 違っていてもし toshi が 3 だったら print("高校のときは、なかなか進路が決まらず担任の先生から呼び出され夜になるまでいろいろと話合いをした。\n") elsif toshi == 4 # 違っていてもし toshi が 4 だったら print("大学に入ると、夏休み中サークルで合宿を行なった。\n") else toshi == 5 # 違っていて toshi が 5 だったら print("最近の思い出は友達と一緒に遊んで楽しく過ごすことが出来た。\n") end # if に対する end 3 プログラムを実行した結果画面 pan{c109149}% ./summer_b.rb [~/Ruby] 1、10歳 2、14歳 3、17歳 4、18歳 5、最近の思い出 どの頃の思い出が知りたいですか?: 3 高校のときは、なかなか進路が決まらず担任の先生から呼び出され夜になるまで いろいろと話合いをした。 4 考察 実行したときは 3 の 17歳を選択した。3 を選んだときの実行されることは プログラムで print("高校のときは、なかなか進路が決まらず担任の先生から 呼び出され夜になるまでいろいろと話合いをした。\n") と書いてある。 実行結果は高校のときは、なかなか進路が決まらず担任の先生から呼び出され 夜になるまでいろいろと話合いをした。 と表示されている。プログラムと実行 結果が同じなのでこのプログラムは正しく実行されているといえる。 C 1 考えた設定 dat ファイルと プログラムファイルに分けて、dat ファイルを読み込みながら 実行し選んだ頃の思い出を表示させるプログラムを考えた。 2 作成したプログラム summer_c.dat a 10歳 小学校のときは、夏休みになるとプールがあるで弟と一緒に行っていた。 b 14歳 中学校のときは、部活がソフトテニス部に所属していたので休み中は部活動を頑張っていた。 c 17歳 高校のときは、なかなか進路が決まらず担任の先生から呼び出され夜になるまでいろいろと話合いをした。 d 18歳 大学に入ると、夏休み中サークルで合宿を行なった。 e 最近の思い出 夏休み中に友達と遊び楽しく過ごすことが出来た。 summer_c.rb #!/usr/koeki/bin/ruby STDERR.print("a、10歳 b、14歳 c、17歳 d、18歳 e、最近の思い出 どの頃の思い出が知りたいですか: ") # print 文を使い表示させたい文章をカッコとダブルコーテーションの中に入れる。 toshi = STDIN.gets.chomp # 入力された文字を改行を切り取り、変数 toshi # の中にいれる。 year = Regexp.new(toshi, true, "e") # toshi の中に入っているものを、 # 文字列に変えて、変数 year の中にいれる。 open("summer_c.dat" , "r") do |omoi| # summer_c.dat ファイルを開いて読み込み # omoi という名前に置き換える。 while natsu = omoi.gets # summer_c.dat の中にあるものがなくなるまで繰り返す。 if year =~ natsu # もし year と natsu が同じだったら if /(\S+)\s+(\S+)\s+(\S+)/ =~ natsu # natsu が文字列、空白、文字列 # 空白、文字列だったら s = $1 # 変数 s の中に一つ目の文字列を入れる。 if s == "a" # もし s が a だったら printf("%s \t %s\n",$2,$3) # printf 文を使い表示させたい文章を # カッコとダブルコーテーションの中に # 入れ、 %s の中にはカンマの後の $2 # $3 を入れる。$2 は二つ目の文字列 # $3 は3つ目の文字列を意味する。 elsif s == "b" # 違っていてもし s が b だったら printf("%s \t %s\n",$2,$3) elsif s == "c" # 違っていてもし s が c だったら printf("%s \t %s\n",$2,$3) elsif s == "d" # 違っていてもし s が d だったら printf("%s \t %s\n",$2,$3) else s == "e" # 違っていて s が e だったら printf("%s \t %s\n",$2,$3) end # if に対する end end # if に対する end end # if に対する end end # while に対する end end # open に対する end 3 プログラムを実行した結果画面 pan{c109149}% ./summer_c.rb [~/Ruby] a、10歳 b、14歳 c、17歳 d、18歳 e、最近の思い出 どの頃の思い出が知りたいですか: b 14歳 中学校のときは、部活がソフトテニス部に所属していたので休み中は 部活動を頑張っていた。 4 考察 実行画面では b の 14歳を選択した。b を選んだときの実行されることは printf("%s \t %s\n",$2,$3) で $2、$3 の中には dat ファイルから読み込んだ 14歳と中学校のときは、部活がソフトテニス部に所属していたので休み中は 部活動を頑張っていた。が入るようになっている。実行画面では14歳中学校のと きは、部活がソフトテニス部に所属していたので休み中は部活動を頑張っていた。 と表示されている。このことからこのプログラムは正しく実行されたといえる。 3.感想 プログラム問題の C で dat ファイルを読み込みながら実行するやり方を忘れて いた。基礎プログラミング I の正規表現と Ruby 言語でのプログラミングの write_ticket.rb を参考にしながら解決した。 4.参考文献 基礎プログラミング I 第 7 回 「正規表現と Ruby 言語でのプログラミング」 券売機のしくみ 西村まどか先生 http://roy/~madoka/2010/r1/07/07_13_theme_11_vendingmachine.html 5.共同学習者 青木 千紗 大島 藍 久保田 瑛一郎 6.添付