ITPASS 実習レポート 1

名前 松本 翔太

担当情報実験機 joho17



↓ 今回の課題の出題ページ ↓

../../../hiki/hiki.cgi?[Exp2014]シェルスクリプト課題



問 1

↓ スクリプトのURL ↓ 

ここをクリックすると問1のスクリプトが表示されます


スクリプトの使い方の解説

まず、ITPASSサーバ上にある円周率データ「kadai1_data.dat」を自分のホームディレクトリに持ってきます。
次に、上記URLにある問1のスクリプトをコピーして、名前を「quiz1.sh.txt」から「quiz1.sh」に変更してください。
(または、新規に「quiz1.sh」というスクリプトを作成し、上記URLにあるスクリプト文面をコピーして添付するなどしてください。)
その後、"chmod 744 quiz1.sh"でスクリプトに実行権を与えましょう。

スクリプトを実行するには、「./quiz1.sh ○ 」 と入力してください。○ には任意の4桁の数字を入力してください。
ただし、4桁以外の数字を入力するとエラー処理が行われます。
また、入力した4桁の数列が円周率データの後ろの方に存在する場合、結果が表示されるまでに時間がかかる場合があります。


実行結果へのリンク

ここをクリックすると問1の実行結果が表示されます


参考資料

・ITPASS実習「シェルスクリプト」のページ
../../../hiki/hiki.cgi?[Exp2014]シェルスクリプト
まずはここでスクリプトについて勉強しました。

・ITpro by日経コンピュータ
http://itpro.nikkeibp.co.jp/article/COLUMN/20060228/231159/
主に、文字を抜き出す「cut」コマンドについて調べました。

野口君のレポート
円周率データから切り出した数字をどうすべきかつまづいていたときに、
「別ファイルに挿入して、計算速度を上げる」という点を参考にさせていただきました。

共同作業した人の名前

特にいません


工夫したこと, 感想

問1出題されてからすぐに「円周率データの数を4桁ずつを抜き出して、入力された数と比較していく」という方針を決めることができました。しかし、いざ、方針に沿ったプログラムを作成しようとしても、完成させるためには調べなければならないことが多く、思っていたよりも時間がかかってしまいました。不足を感じていた点については、私よりも先に提出された受講者の方のスクリプトを参考にさせていただきました。それでもこのスクリプトには、入力した4桁の数が円周率データの後ろの方に存在する場合に、結果を出力するまでに時間がかかるという問題が残されています。なんとか時間を短縮する方法はないものかと、いまだに考えております。




問 2

スクリプトの URL


今回、問2を解くために、準備段階のスクリプト「quiz2jyunbi.sh」と「quiz2.sh」の2つのスクリプトを作成しました。
・「quiz2jyunbi.sh」は、課題2のスクリプトを実行するための準備段階のスクリプトです。具体的には、与えられた「kadai2_data」に含まれるバラバラの気象データとその日時を、新規に作成した「kadai2matome_data」にまとめることを目的とします。
・一方「quiz2.sh」は、準備段階のスクリプト「quiz2jyunbi.sh」を実行した後に使用するスクリプトです。「all.csv」というファイルにまとめたすべてのデータを知りたいランキングに応じた順位に並べ替え、その上位10個を抜き出し、各ベスト10/ワースト10を示すことを目的とします。

ここをクリックすると問2の準備段階スクリプトが表示されます

ここをクリックすると問2のスクリプトが表示されます


スクリプトの使い方の解説

まず、ITPASSサーバ上にある気象データの圧縮ファイル「kadai2_data.tgz」をtarコマンドを用いて展開します。
次に、その展開したファイル「kadai2_data」を自分のホームディレクトリに持ってきます。
次に、上記URLにある問2のスクリプト二つをコピーして、それぞれ名前を「quiz2jyunbi.sh.txt」から「quiz2jyunbi.sh」に,
「quiz2jyunbi.sh.txt」から「quiz2jyunbi.sh」に変更してください。
(または、新規に「quiz2jyunbi.sh」「quiz2.sh」というスクリプトを作成し、上記URLにあるスクリプト文面をコピーして添付するなどしてください。)
その後、"chmod 744 quiz2.sh"と"chmod 744 quiz2.sh"でそれぞれのスクリプトに実行権を与えましょう。

スクリプトを実行するにはまず、「./quiz2jyunbi.sh」 と入力し、「quiz2jyunbi.sh」を作動させてください。
続いて「./quiz2.sh」と入力し、「quiz2.sh」を作動させます。すると


表示したい値の番号を入力してください
1.日積算降水量 2.最高気温 3.最低気温 4.最低湿度

と表示されますので、知りたいランキングの番号を一つ入力してください。
また、1,2,3,4以外の番号を入力した場合、エラー処理が行われます。
※「quiz2jyunbi.sh」は2回以上実行しないでください。

実行結果へのリンク

ここをクリックすると問2の実行結果が表示されます


参考資料

・ITpro by日経コンピュータ
http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230573/?ST=oss

様々なコマンドを調べました。


野口君のレポート
上野君のレポート
「スクリプトを二つに分ける」など、全体的な方針の参考にさせていただきました。

共同作業した人の名前

特にいません


工夫したこと, 感想

問2は問1とは異なり、なかなか方針が定まりませんでした。ようやく「quiz2.sh」の内容に近い方針が定まっても、それをどうプログラムにすれば良いのか、やはり色々と調べなければならず、逃げ出したい気持ちでした。私よりも先に提出した方々の「スクリプトを二つに分ける」という案を取り入れさせていただかなかったならば、この課題は完了できなかったと思います。