プログラミング演習II-1,II-2のページ
このページは,プログラミング演習II-1,II-2のページです.
- 担当者
- 真栄城 哲也
- Email: maeshiro あっと slis.tsukuba.ac.jp
- 研究室: 研究棟 4F 409
- オフィスアワー: 水曜1,2限
- 若林 啓
- Email: kwakaba あっと slis.tsukuba.ac.jp
- 研究室: 研究棟 2F 207
- オフィスアワー: 金曜5,6限
お知らせ †
お知らせです.クラス毎のお知らせの場合は,[木][金]で区別します.何もなければ全体向けです.
- (1/7) 課題-2 の注意事項を記載しました.
- (1/7) [金曜クラス] 課題-2 が提出できるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
- (12/28) [木曜クラス] 課題-1 の提出システムに問題があったため,課題-1 の提出〆切を,1月12日 (木) に変更しました.
- (12/25) [木曜クラス] 課題-1 の入力データで,扱いが困難な文字列があったため,入力データを更新しました.再度ダウンロードしてください.
- (12/22) メールによる課題の提出は受け付けていません.
- (12/22) 課題-A の提出について:課題-A を 〆切までに提出できなかった場合,12/28 までに提出されれば受け付けます.なお,〆切後の提出は,減点されます.また,提出できない場合の確認事項を「課題」のところに記載しました.
- (12/21) 課題-2 の内容に訂正があります.
- (12/16) 課題-A の入力ファイル 「taskA_data1.txt」に対する出力結果「taskA_data1-text.txt」を載せました.実行結果チェックシステムで違っている箇所が判らない場合,出力結果と比較してください.
- (12/15) 課題-A の入力用のファイル 「taskA_data2.txt」が更新されました.実行の際,このファイルを再度ダウンロードしてください
- (12/13) 課題-A の入力用のファイル (データ) が更新されました.12/13以前にデータをダウンロードしている場合,再度ダウンロードしてください
- (12/12) 課題提出システム:課題-A の提出ができるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
- (12/10) 実行結果チェックシステム:課題-A のチェックができるようになっていますが,問題がある場合,メールで連絡してください.その際,問題を具体的に明記してください.
お知らせ(演習以外) †
日程 †
| 回 | 木曜日 | 金曜日 | 内容(予定) | 締切 | その他 |
| 1 | 11/17 | 11/11 | 課題-1 | | |
| 2 | 11/24 | 11/18 | 課題-1 [続き] | | |
| 3 | 12/1 | 11/25 | 課題-1 [続き] | | |
| 4 | 12/8 | 12/2 | 課題-A | 課題-1 | |
| 5 | 12/15 | 12/9 | 課題-2 | | |
| 6 | 12/22 | 12/16 | レポート-1 | 課題-A | |
| 7 | 1/12 | 1/11 | 課題-2 [続き] | | |
| 8 | 1/19 | 1/20 | 課題-B | 課題-2 | |
| 9 | 1/26 | 1/27 | 課題-C | | |
| 10 | 2/2 | 2/3 | レポート-2 | 課題-B | |
| 予備日 | 2/9 | 2/10 | | 課題-C | |
全学計算機システム停止等の情報 †
テキスト †
課題 †
- 注意:自動チェックシステムがエラーで動作しない場合,教員に連絡してください.
- 課題提出システム:利用方法をよく読んでください。
- エラーが出る,問題がある等の場合,教員に連絡してください.
- 課題-1 (木曜クラス)
- 注意:同じディレクトリにある全ての ".txt" ファイルを処理してください.
- 注意: (11/30)入力用のファイル (データ) が更新されました.11/30以前にデータをダウンロードしている場合,再度ダウンロードしてください.
- 注意: (12/25)入力データで,扱いが困難な文字列があったため,入力データを更新しました.再度ダウンロードしてください.
- 課題-1 (金曜クラス)
- 課題テキストの訂正:2ページのプログラムの要件の「3. プログラム内で定義されたメソッドが呼び出される回数.」とありますが,メソッドの呼び出し回数の計測は不要です.
- 課題テキストの訂正:4ページの「task1-fri-data1.rb を入力した場合の実行結果.」の「文字数」の行に間違いがあります.正しい文字数の平均値は,14.63 です.
- 注意:小数点以下2桁で表示する際,printf や sprintf を使って四捨五入の処理をしないでください.ruby 自体に欠陥があるため,間違った値を返す場合があります.
- 注意:同じディレクトリにある全ての ".rb" ファイルを処理してください.ただし,実行しているプログラム ("kadai-1.rb") は処理しないようにプログラムを作ってください.
taskA_data1.txt の出力結果:taskA_data1-text.txt :実行結果チェックシステムで間違いがあると表示されても,間違いが判らない場合,このファイルと比較して,違っている箇所を調べてください.
- 課題-A が提出できない場合の確認事項 (木金両方)
- プログラムの文字コードが UTF でないか
- 同じディレクトリにある全ての「*.txt」ファイルを処理できるか
- 出力ファイル「taskA_data1-text.txt」について:
- 課題-2
- 入力用のファイル:task2_data.zip (zip ファイルなので,ダウンロード後,展開してください)
- 注意:課題2の中で,「辞書順にソートされていなければならない」ことを要件としている箇所がありますが,これは「Rubyにおける文字列の大小関係の定義に従ってソートされていなければならない」ことと訂正します.Rubyにおける文字列の大小関係の定義では,アルファベットの大文字と小文字についてはABCDEF....XYZabcdef...xyzというように,大文字の方が前で,小文字が後という順序が成り立つように定義されています.
このような順序で並べ替えた配列を得るメソッドには,配列の操作メソッドの「sort」やハッシュの操作メソッドの「sort」があります.これらについては,適宜参考書やWeb等で調べてください.
- 注意(金曜クラスのみ):課題2の実行結果例は,ハッシュタグの定義について次の仮定を置いています:「Twitterではハッシュタグの直後にスペースや句読点が必要だが,本課題ではハッシュタグの直後の文字はなんでもよい.例えば,「#4月1日」という文字列には,「#4」というハッシュタグが含まれているとみなす.」
ですが,この定義は日本語と英数字が混じったハッシュタグでは直感に反する定義になっています.このことを考慮し,今回の課題では,よりよいと思える方法が思いつく場合は,この定義に従っていなくても提出を認めることにしました.日本語ハッシュタグも抽出できるプログラムが作れそうなら,是非挑戦してみてください.課題2は対面チェックをしますので,その際にどのようなハッシュタグを抽出するプログラムなのかをTAに説明できるようにしてください.
- 注意:tweet.txt の読み込みにおいて,環境によってはエンコーディングの問題が起こることが分かりましたので,以下の対応をお願いします.
ファイルを読み込む際,以下のように読み込んでいると思いますが,
input = open("tweet.txt", "r")
これを,以下のようにして,明示的にエンコードを指定して開くようにしてください.(この例では Shift_JIS を指定していますが,Rubyプログラムのマジックコメント(#encoding:)で指定しているエンコーディングに合わせてください.)
input = open("tweet.txt", "r:Shift_JIS")
Rubyでは,エンコードを特に指定せずに open
メソッドを呼んだ場合,ファイル内容から推測して文字コードが決定されます.日本語文字コードには Shift_JIS と Windows-31J
という似ているが異なるエンコーディングが存在しているのですが,課題2で使用している tweet.txt は,明示的に Shift_JIS
で書き込んでいるにも関わらず,環境によっては一部のファイルが Windows-31J
として認識されてしまう場合があるようです.このため,上述のような対応をお願いします.
- 注意:課題2の締切日に,testdata3 フォルダ内の tweet.txt を入力したときの出力ファイル(stats.txt)を印刷したものを提出してください.このため,紙媒体で提出するものは次の3点です:(1) プログラム(自動チェックシステムの結果画面)の印刷物,(2) フローチャート,(3) testdata3/tweet.txt を入力したときの stats.txt の印刷物
レポート †
道具箱 †
演習支援情報 †