第1回 前期の復習 レポート課題 氏名: 村上茉奈美 学籍番号: C1111352 語学クラス: 英語3 コース: 社会福祉 1. A 1. キーボード操作及び、mew・Emacs・KTerm上の操作 ・Ctrl+1 … Emacsが前面に出る ・Ctrl+2 … KTermが前面に出る ・Ctrl+3 … consoleが前面に出る ・Ctrl+4 … firefoxが前面に出る ・console画面でプロンプト(pan{◯◯]%)の後に exit … コンピューターの終了 mew上 ・w … 新規メール作成 ・Ctrl+x i … メール本文に貼り付けるファイルの指定 ・Ctrl+c Ctrl+a … 添付のためのフォーム表示 ・添付フォーム表示の後に c … 添付するファイルの指定 ・Ctrl+c Ctrl+c の後に y … 送信完了 KTerm上 ・プロンプト(pan{◯◯}%)の後に firefox& … firefox立ち上げ ・(firefox画面上で Ctrl+q … firefox終了) ・ls … ファイルを一覧表示 ・cd〜 … ディレクトリに入っているファイルを表示 ・mkdir〜 … 新規のディレクトリを作成 ・rmdir〜 … ディレクトリを消す ・rm〜 … ファイルを消す ・chmod +x..... … プログラムやデータを実行可能なものにする ・./..... …プログラムやデータを実行 ・bc -l … 計算をする(終了は quit) ・Ctrl+c … 困ったときの対処法 Emacs上 ・Ctrl+x Ctrl+f … プログラムやデータを立ち上げる ・Ctrl+x Ctrl+s … プログラムやデータを保存 ・Ctrl+x 5 2 … Emacsが一つ増える ・Ctrl+x 5 0 … Emacsが一つ消える ・Ctrl+x 2 … 画面が2つに分割される ・Ctrl+x 1 … 画面が1つに戻る ・プログラムやデータを開いている状態で Esc < ・ Esc > … 画面の一番下、一番上に移動 ・上と同じ状態で Ctrl+n … 1行カーソルが下がる ・ 〃 Ctrl+p … 1行カーソルが上がる 第9回 ・ 〃 Ctrl+e … 行の右端に移動する ・ 〃 Ctrl+a … 行の左端に移動する ・ 〃 Ctrl+f … 1マスずつ右に移動する ・ 〃 Ctrl+b … 1マスずつ左に移動する ・ 〃 Ctrl+k … 1行分消える ・ 〃 Ctrl+x … 消えた1行分がもとに戻る ・ 〃 Ctrl+Space … 領域の選択を開始 ・ 〃 Esc w … 領域の選択を複製して終了 ・ 〃 Ctrl+w … 領域の選択を切り取って終了 ・ 〃 Ctrl+y … 複製・切り取りをした部分を貼り付ける ・Ctrl+g … 困ったときの対処法 2. 授業の内容について 第2回 「Rubyの基礎/計算が終ったら止まる問題」 ・#!/usr/koeki/bin/ruby … Ruby言語を使うことを宣言する ・#coding: euc-jp … 日本語を使うことを設定 ・print("文字列") … ""内を出力する ・\n … 改行文字 ・while -- end … 条件を満たしている間は計算する、反復文 ・printf … 変数の中身を出力する ・+= … もとの数に足したものを代入 ・-= … もとの数から引いたものを代入 ・*= … もとの数を何倍かしたものを代入 ・/= … もとの数を割った商を代入 ・%= … もとの数を割ったあまりを代入 第3回 「キーボードから入力して計算させるには」 ・gets … 入力されたデータを取りこむ ・STDERR.print … 標準エラー出力でprintf文を実行 ・chomp … 改行文字の有無を調べる ・while true -- end … 何度も繰り返す ・break … 反復文(while文)を抜ける ・to_i … 文字列を整数に ・to_f … 文字列を小数に ・to_s … 文字列(あるいは数値を)文字列に 第4回 「プログラミングの方法」 ・if … もし〜ならば ・elsif … 〜ではなく◯に等しかったら ・else … 〜や◯にも等しくなかったら 第5回 「配列の構造」 ・length … 配列の要素の数を数える ・shift … 配列の要素を切り放す ・sort … 要素を小さい順に並べ替え ・reverse … 要素の順番を逆にする ・Array.new … 配列を新しく作る ・\S+ … 文字列 ・\s+ … 空白文字 ・\d+ … 数値文字列 第6回 「正規表現と検索」 ・.(period) … 任意の一文字の候補を取り出す ・?(question mark) … 直前の文字が0または1回出現 ・*(asterisk) … 出現は何度でも良い ・+(plus) … 直前の文字が必ず出現(何度でも良い) ・^(caret) … 先頭の文字列のみ探す ・$(dollar) … 末尾の文字列のみ探す ・|(vertical line) … 「または」の意味 ・( )(parenthesis) … ( )で括られた条件を先に探す ・[ ](branket) … [ ]で括られた文字のどれかが一致するものを探す ・egrep … ファイルの中の文字列を探す 第7回 「正規表現とRuby言語でのプログラミング」 ・while 変数 = gets … 変数にデータを1行ずつ取りこむ ・=~ … 〜は◯に含まれる ・STDIN … キーボードからの入力によりデータ処理する ・Regexp.new … 正規表現したい文字列を示す ・open -- end … ファイルを開いて読み込む 第9回 「Rubyであそぼ/広告ページの作成」 ・srand … 乱数を適当に取り出す ・rand … srandでもらった値をランダムに取り出す ・Time.now … 現在時刻を取り出す ・sleep … 指定された秒数の間は実行しない Aの参考文献 以下に示す参考文献は全て 2012年度 基礎プログラミングI 作者:西村まどか である。 ・http://roy/~madoka/2012/r1/01/ 第1回 「Workstationとは/UNIXのいろは」 ・http://roy/~madoka/2012/r1/02/ 第2回 「Rubyの基礎/計算が終ったら止まる問題」 ・http://roy/~madoka/2012/r1/03/ 第3回 「キーボードから入力して計算させるには」 ・http://roy/~madoka/2012/r1/04/ 第4回 「プログラミングの方法」 ・http://roy/~madoka/2012/r1/05/ 第5回 「配列の構造」 ・http://roy/~madoka/2012/r1/06/ 第6回 「正規表現と検索」 ・http://roy/~madoka/2012/r1/07/ 第7回 「正規表現とRuby言語でのプログラミング」 ・http://roy/~madoka/2012/r1/09/ 第9回 「Rubyであそぼ/広告ページの作成」 2. C 1. 考えた設定 今年10月から卒業(4年の3月)までの自分の計画を語るデータ (mydata_c111135.dat)を作成。 また、そのデータを読み込んで実行するプログラム(life_open.rb)を作成。 2. 作成したプログラム (mydata_c111135.dat) a 10 後期の授業が本格的に開始し、社会福祉の指定科目が増える a 11 教科によっては中間試験実施(授業回数8回で終わる教科もある) a 12 下旬から冬季休業開始(社会福祉士の国家試験に向けた対策を進める) a 1 冬季休業が明け、後期の授業再開・下旬から期末試験 a 2 春季休業開始(冬季休業同様、国家試験に向けた対策を進める) a 3 2月の計画に加えて、新年度に向けて就職に関しての情報を集める b 4 就職活動のための時間を確保しつつ、興味のある授業を履修する b 5 特に、福祉に関するボランティアに参加する b 6 5月の計画を継続して行う b 7 事前に実習先へ訪問に行く b 8 夏季休業中に実習を行う・国家試験対策 b 9 後期の授業開始・興味のある授業を履修する b 10 就職活動に向けて情報を集める b 11 実習報告会の準備を行う b 12 実習報告会・就職活動開始 b 1 冬季休業が明け、後期の授業再開・期末試験 b 2 国家試験の過去の問題をやり始める b 3 4年に進級するにあたり、履修する科目等を決定する c 4 履修したい科目を積極的にとる c 5 夏季休業中に行う実習先の希望をある程度しぼる c 6 就職内定 c 7 前期の期末試験 c 8 約1ヶ月間の実習を行う c 9 8月の計画と同様になる可能性もある c 10 国家試験の対策に専念する c 11 10月の計画に加え、ボランティアに参加する c 12 ひたすら国家試験対策を行う c 1 社会福祉士の国家試験! c 2 最後の春季休業を満喫する c 3 東北公益文科大学卒業 (life_open.rb) #!/usr/koeki/bin/ruby #coding: euc-jp print("今年10月(2年次)から大学卒業(4年次)までの計画を表示します。\n") STDERR.print("2年次の場合は a 、3年次の場合は b 、4年次の場合は c を入力して下さい。: ") # a か b か c か入力を促す pattern = STDIN.gets.chomp #入力された文字列を変数 pattern にしまう request = Regexp.new(pattern, true) #変数 pattern に入っている文字列を、変数 request に代入する open("mydata_c111135.dat","r") do |keikaku| # mydata_c111135.dat を読み込み( r は読み込み専用を表す) 、keikaku に置き換える while yotei = keikaku.gets # keikaku に置き換えられた文字列を1行ずつ変数 yotei に代入する if request =~yotei #もし request が yotei に含まれるならば if /(\S+)\s+(\S+)\s+(\S+)/ =~yotei # もし yotei が「文字列 空白 文字列 空白 文字列」という並びならば year = $1 #変数 year に一つ目の文字列を入れる if year == "a" #もし year が a ならば printf("%s月\t%s予定です。\n", $2, $3) #最初の %s に $2(二つ目の文字列)、次の %s に $3(三つ目の文字列)を入れる elsif year == "b" #もし year が a ではなく、b ならば printf("%s月\t%s予定です。\n", $2, $3) #最初の %s に $2(二つ目の文字列)、次の %s に $3(三つ目の文字列)を入れる elsif year == "c" #もし year が a や b ではなく、c ならば printf("%s月\t%s予定です。\n", $2, $3) #最初の %s に $2(二つ目の文字列)、次の %s に $3(三つ目の文字列)を入れる end # if に対する終わりを表す end # if に対する終わりを表す end # if に対する終わりを表す end # while に対する終わりを表す end # open に対する終わりを表す 3. もとにしたプログラムからの変更点 基礎プログラミングIの第7回の講義で学んだ regexp_readdata.rb を もとにした。 読み込んだファイルに対して行う指示( while ・ if )はそのままで、 変数の名前を変更した。 また、選択肢( a ・ b ・ c )に対応した結果になるよう、if文(elsif 含む)を用いた。 4. 実行結果 pan{c111135}% ./life_open.rb [~/Ruby] 今年10月(2年次)から大学卒業(4年次)までの計画を表示します。 2年次の場合は a 、3年次の場合は b 、4年次の場合は c を入力して下さい。: a 10月 後期の授業が本格的に開始し、社会福祉の指定科目が増える予定です。 11月 教科によっては中間試験実施(授業回数8回で終わる教科もある)予定です。 12月 下旬から冬季休業開始(社会福祉士の国家試験に向けた対策を進める)予定です。 1月 冬季休業が明け、後期の授業再開・下旬から期末試験予定です。 2月 春季休業開始(冬季休業同様、国家試験に向けた対策を進める)予定です。 3月 2月の計画に加えて、新年度に向けて就職に関しての情報を集める予定です。 pan{c111135}% ./life_open.rb [~/Ruby] 今年10月(2年次)から大学卒業(4年次)までの計画を表示します。 2年次の場合は a 、3年次の場合は b 、4年次の場合は c を入力して下さい。: b 4月 就職活動のための時間を確保しつつ、興味のある授業を履修する予定です。 5月 特に、福祉に関するボランティアに参加する予定です。 6月 5月の計画を継続して行う予定です。 7月 事前に実習先へ訪問に行く予定です。 8月 夏季休業中に実習を行う・国家試験対策予定です。 9月 後期の授業開始・興味のある授業を履修する予定です。 10月 就職活動に向けて情報を集める予定です。 11月 実習報告会の準備を行う予定です。 12月 実習報告会・就職活動開始予定です。 1月 冬季休業が明け、後期の授業再開・期末試験予定です。 2月 国家試験の過去の問題をやり始める予定です。 3月 4年に進級するにあたり、履修する科目等を決定する予定です。 pan{c111135}% ./life_open.rb [~/Ruby] 今年10月(2年次)から大学卒業(4年次)までの計画を表示します。 2年次の場合は a 、3年次の場合は b 、4年次の場合は c を入力して下さい。: c 4月 履修したい科目を積極的にとる予定です。 5月 夏季休業中に行う実習先の希望をある程度しぼる予定です。 6月 就職内定予定です。 7月 前期の期末試験予定です。 8月 約1ヶ月間の実習を行う予定です。 9月 8月の計画と同様になる可能性もある予定です。 10月 国家試験の対策に専念する予定です。 11月 10月の計画に加え、ボランティアに参加する予定です。 12月 ひたすら国家試験対策を行う予定です。 1月 社会福祉士の国家試験予定です。 2月 最後の春季休業を満喫する予定です。 3月 東北公益文科大学卒業予定です。 5. 結果の考察 a・ b ・ c それぞれについて実行し、データと一致しているかを確認し た。 その結果、データと結果画面に出た文字列が正しく反映されていたので、 このプログラムは正しく実行されたということができる。 また、結果画面の体裁も整っていた。 当初、a ・ b ・ c のところを「2年次・3年次・4年次」にして数字を入 力する形をとった。しかし、「◯月」の部分の数字と混同し、その数字を 含む全ての計画が反映されてしまったので、学年をアルファベットに分 けて結果を出すように変更した。 当初試みたように、学年も結果に含まれればもっと見やすくなったのだ が、それができなかったので、今後改善策を考えたい。 6. 参考文献 ・http://roy/~madoka/2012/r1/07/r1_07_10_theme_08_fileread.html 2012年度 基礎プログラミングI 第7回 (正規表現とRuby言語でのプログラミング) 「データを読み込むようにするには」 西村まどか ・http://roy/~madoka/2012/r1/04/r1_04_03_theme_01_branch.html 2012年度 基礎プログラミングI 第4回 (プログラミングの方法) 「もしもそうならば」 西村まどか 3. 2 のプログラム問題を解く際に、ファイルを開いて読み込むところまでは覚 えていたのだが、開いたファイルに対して行う指示をどのようにすればよい のかを忘れていた。確認するため、前期の第7回の授業で作成した regexp_readdata.rb を参考にした。その他の内容は 1 の筆記問題を解きな がら一つひとつ確認した。前期のグループ課題で、プログラム作成を担当し たので、しっかりと覚えているところも多かったように感じる。 忘れていたところもしっかりと覚え、後期も授業に遅れないように取り組ん でいきたい。 共同学習者: 浅沼佑香 ・ 伊藤詩野 ・ 土門千里