|
ITPASS 実習レポート1
名前 : |
後藤 陽香 |
担当情報実験機 : |
joho 07 |
|
|
問 1 数当て
- スクリプトのURL
- スクリプトの使い方の解説
- 以下のコマンドを実行させてください。
./quiz1.sh (2桁の引数)
ここで打ち込んだ2桁の引数を当てるスクリプトです。
- 適当な数字を打ち込むよう促してきます。
- 数字を打ち込むと、正解の数字より大きいか小さいか答えてくれます。
- 実行結果は quiz1.txt にも出力されます。
- 正解するまで続きます。
- 実行結果へのリンク
- 共同作業した人
- 高橋 由実子 さん
初めてシェルスクリプトを組むのにあたり、初歩的なところで何度もつまずきましたが、
高橋さんと一緒に模索しながら完成を目指しました。
- アドバイスを頂いた方
- 須賀 友也 さん
スクリプト,HTMLページの改善案や修正すべき点など多度ご指導して頂きました。
- 河合 佑太 さん
スクリプトを組む際や自宅でikaサーバに接続するための作業をしている際に、つまずいていた時、
何度も原因を模索してくれて、どこに問題があるのか指摘してくれました。本当に助かりました。
- 工夫したこと, 感想
- echoにteeコマンドを加えて画面とファイルに同時に出力するようにしました。
- スクリプトの一番初めに出てくるechoにおいてquiz1.txtへの出力を上書き指定することで、
常に最新の実行結果のみquiz1.txtに出力されるようにしました。
- よりゲーム性を高めるために2桁の整数を乱数としてあたえるスクリプトも別に作成しました。
http://epa.scitec.kobe-u.ac.jp/~harukag/report01/scripts/quiz1-.sh.txt
$RANDOMを用いて答えとなる2桁の整数がランダムに選ばれるようにしました。
[$RANDOMを100で割った余り]として2桁の数字を得ると0〜9の1桁の数字も含まれてしまうので、
while構文を用いて、選ばれた数字が1桁の場合は選びなおすようにしました。
|
|
問 2 素因数分解
- スクリプトの URL
- スクリプトの使い方の解説
- 以下のコマンドを実行させてください。
./quiz2.sh
任意の数を素因数分解した結果を表示させるスクリプトです。
- 数値の入力を促してくるので、素因数分解させたい数値を入力して下さい。
※ただし、18446744073709551615(=2の64乗-1)までの数しか実行できません。
これは大学の情報実験機の場合64ビットであり、コンピュータは2進数で処理しているためです。
お使いの計算機が何ビットかによって状況が変わってくると思われます。
- 実行結果は quiz2.txt にも出力されます。
- 実行結果へのリンク
- アドバイスを頂いた方
- 須賀 友也 さん
スクリプト,HTMLページの改善案や修正すべき点など多度ご指導して頂きました。
- 河合 佑太 さん
スクリプトが無限ループにはまってしまったり、エラーの原因が分からずにつまずいていた時、
何度も原因を模索してくれて、どこに問題があるのか指摘してくれました。本当に助かりました。
- 工夫したこと, 感想
- echoにteeコマンドを加えて画面とファイルに同時に出力するようにしました。
- スクリプトの一番初めに出てくるechoにおいてquiz2.txtへの出力を上書き指定することで、
常に最新の実行結果のみquiz2.txtに出力されるようにしました。
- 最後のecho以外のechoには -n オプションをつけて「改行しない」ことを指定しました。
- 手探り状態でしたが無事にスクリプトが組めてよかったです。
- HTML,CSSにはまってしまい、Webページに関しては自分なりに少し凝ってみたのですが、
ブラウザによって表示のされ方が違い、少しがっかりしました。その後修正してみましたが、
どのブラウザからもなるべく同じに見えるように工夫しなくてはならないのだなぁと思いました。
- 思い付きで、どこまで大きい数の素因数分解ができるのか、適当な数字で試していたら、
19桁までの数値しか実行できないことに気づき、その旨をレポートに表記していました。
しかし、TAの須賀さんからのメールによるご指摘を受け、更に調べているうちに、
それは半分正解だけど半分間違いであることに気づくことができました。
計算機にはビット数の違いがあること、更にビットとはどういうものなのか、
このレポートに取り組む以前の私は全く知りませんでした。とても勉強になりました。
|
|
問 3 ブラックジャック
- スクリプトの URL
- スクリプトの使い方の解説
- 以下のコマンドを実行してください。
./quiz3.sh
ブラックジャックで遊ぶスクリプトです。
- スクリプトを実行させるとカードを引くかどうか尋ねてきますので Y か n を入力してください。
- 引いたカードの合計数が21になるか、21を超えてしまうか、
21になる前にカードを引くのをやめるかするまで続きます。
- 引いたカードの合計数が21ぴったりになるのを目指してください。
引いたカードの合計数が21以下の数字でフィニッシュする場合は、数が21に近いほど良いです。
21を超えてしまうとゲームオーバーとなります。
- 実行結果はquiz3.txtにも出力されます。
- 実行結果へのリンク
- アドバイスを頂いた方
- 須賀 友也 さん
HTMLページの改善案や修正すべき点など多度ご指導して頂きました。
- 高木 瑠美 さん
誤ってYやnと違うものを入力した場合にエラーとみなすアイデアを参考にさせて頂きました。
- 工夫したこと, 感想
- トランプの絵札はすべて10点であることから、1〜9点より10点が出る確率のほうが大きくなるように
$RANDOMとcase構文を用いて乱数を設定しました。
ジョーカーを除く52枚のトランプを考えると、1〜9点のカードを引く確率はそれぞれ13分の1、
10点のカードを引く確率は13分の4です。
- スクリプトの一番初めに出てくるechoにおいてquiz3.txtへの出力を上書き指定することで、
常に最新の実行結果のみquiz3.txtに出力されるようにしました。
- カードを引くか尋ねられたときにYやnと違うものを入力してしまった場合はエラーとみなして
quiz3.txtには何も残らないようにしました。
- echo に -n オプション や -e オプションと\n を用いて「改行しない」こと「改行する」ことを
自在に操りました。
- 問題1や問題2よりもすんなりできてしまった気がします。慣れが大切であることを実感しました。
|
|
参考資料
- Bシェルのスクリプト
- シェルスクリプト入門[演算・比較]
- シェルスクリプトでランダムな数字を得る方法
- 【 tee 】標準入力を標準出力とファイルに出力する
- Linuxの使い方 - シェルスクリプトの作り方 -
- n分の1の確率で何かをするスクリプト
- いまさらHTML,CSS講座
- Identity
|
|