TOP

ITPASS 実習レポート 1

名前: 高木 瑠美

担当情報実験機: joho 07


問1.数当て 問2.素因数分解 問3.ブラックジャック

問 1  数当てゲーム

スクリプトのURL

⇒ 修正後[ 数当てゲーム ] スクリプト(quiz1.sh.txt)引数ver.

⇒ 修正前[ 数当てゲーム ] スクリプト(quiz1@.sh.txt)ランダム数ver.

TAさんから頂いた問1への修正案
  • 問題文に「引数に任意の二桁の正の整数 m を与え」と明記してあり、 問 1 は引数を使うことが狙いとなっている。
  • 1スクリプトに改行を適当に入れて、見やすくする.
  • echo を画面とファイルへ出力で 2 回ずつ使っていますが, スクリプトを1 行にまとめることができる. 例えば, パイプと tee コマンドを使う方法がある. 詳しくは man などで調べてみる. また, 時間があれば他にも探してみる.
  • 結果の出力先ファイルをその都度指定しているが, 何度も呼び出すものは先に変数に読み込ませておき, 出力先を指定するほうがより良い.
  • スクリプト 45 行目「#疑問文のセリフが、quiz1.shに…」は「quiz1.txt」 ではないか.
  • 値 a が答えより大きい場合のメッセージだけ, "quiz1.txt"と 同名に見える別ファイルに出力されている.

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

以下の手順に従って下さい。

  1. quiz1.shの実行権限のある状態で./quiz1.shを実行する。ただし、修正後のスクリプトでは、引数として二桁の整数も半角スペースを一つ空けて入力しなければいけない。例えば引数を32にしたい場合./quiz1.sh 32と打ち込んでEnterキーを押すと良い。
  2. 2桁の正の整数を当ててくださいという導入メッセージが出る。答えの数は、コンピュータによってランダムに選び出される。
  3. What's your number?というメッセージが出るので、任意の二桁の数を入力す る。
  4. その数が当てる数より大きいか小さいかが表示されるので、それをヒントに 当てる数により近い数を入力していく。
  5. これを繰り返していき、入力した数が当てる数と一致すると、当たりましたというメッセージが出てプログラムが終了する。

実行結果へのリンク

⇒ [ 数当てゲーム ] 結果テキスト(quiz1.txt)

〜参考資料〜

  • Arnold Robbins・Nelson H.F.Beebe,2006「詳細シェルスクリプト」オライリー・ジャパン 
    変数(シェル変数)について , #!/bin/bashについて , testや[ ]コマンドの使い方(特にオプションのつけ方 P.133など)について
  • 後藤陽香さんのquiz1.sh.txt
    照らし合わさせてもらえたことで、What's your number?の'の前に\でエスケープすると良いことに気づきました。

共同作業した人の名前: 後藤 陽香 さん , 高橋 由実子 さん , 箕浦 舞 さん 
アドバイスを頂いた方: 後藤 陽香 さん , TA の井谷さん, 村上(健)さん, 須賀さん

工夫したこと
 数当て中に、なるべく分かりやすいようなコメントを作りました。打ち込まれた数値をreadで読み込み、それをシェル変数として$aで自由に出せるようにしました。はじめのうちは、Fortranのように整数指定など設定をしようとしてしまっていました。  修正前には、echoの画面とファイルへ出力で 2 回それぞれ使っていたのを、修正後のスクリプトでは、| ter を用いて1行にまとめました。  
また、修正後のスクリプトでは、出力先ファイルを初めにシェル変数に読み込ませることで、変数に書き込むというプログラムにしました。
修正前のスクリプトでは、問3のブラックジャックのスクリプト作成で利用したm=$RANDOMコマンドによってランダムに答えの値が選ばれるプログラムになっており、よりゲームを楽しめるように工夫を凝らしました。
感想
 シェル変数の使い方など、短いスクリプトで試しながらだんだん感覚が分かってくる気がしました。until文とif文を組み合わせる際に、頭をひねりました。この行まででどうなっているのかをきちんと考えないと上手く作れないなと感じました。また、作業中辞書片手に調べていて、コマンドやメッセージを理解する際に英語の勉強にもなるなと思いました。
¥苦労した点¥
 testや[ ]の中身の記述で、演算記号を用いるかオプションのローマ字を用いるかで何度か混乱しました。数の大小でふるいにかける際に、caseコマンドを使おうか迷いました。簡単そうなifで作ってみたのですが、caseでも上手いことコマンドをやりくりして作れたらよいなと思いました。


問 2  素因数分解

スクリプトのURL

⇒ 修正後[ 素因数分解 ] スクリプト(quiz2.sh.txt)

⇒ 修正前[ 素因数分解 ] スクリプト(quiz2pre.sh.txt)

TAさんから頂いた問2への修正点
  • スクリプトに改行を適当に入れて、見やすくしてみる.
  • echo を画面とファイルへ出力で 2 回ずつ使っている, スクリプトを1 行にまとめることができる. パイプと tee コマンドを使う方法がある.
  • 結果の出力先ファイルをその都度指定しているが, 何度も呼び出すものは先に変数に読み込ませておき, 出力先を指定するほうがより良い.
  • スクリプト 26 行目に「'」が入ってしまっている.
  • quiz2.sh を実行した際, 結果と終了コメントが同じ行に表示されている. 最後に改行されるようにするときれいにみえる.

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

以下の手順に従って下さい。

  1. quiz2.shの実行権限のある状態で./quiz2.shを実行する。
  2. 素因数分解をしますという導入メッセージが表示される。
  3. What's your number?というメッセージが出るので、任意の数を入力す る。
    ただし、10桁ぐらい桁数が大きくなってくると、数値によっては処理時間がかかるのでオススメできません。
  4. 打ち込んだ値と、その素因数が表示される。素因数分解が完了したことが告げられ、プログラムが終了する。

実行結果へのリンク

⇒ [ 素因数分解 ] 結果テキスト(quiz2.txt)

〜参考資料〜

  • Arnold Robbins・Nelson H.F.Beebe,2006「詳細シェルスクリプト」オライリー・ジャパン
    終了ステータスについて , exprのコマンドの使い方について (P.172,173)  , echoのオプションについて
  • UNIX & Linux コマンド・シェルスクリプト リファレンスhttp://www.geocities.jp/geo_sunisland/exit_status.html
    終了ステータスが何かについてを調べている時や実際にプログラムを試しているときに参考にさせていただきました。

共同作業した人の名前: 後藤 陽香 さん , 高橋 由実子 さん , 箕浦 舞 さん 
アドバイスを頂いた方: 河合 佑太 さん , 後藤 陽香 さん , TA の井谷さん, 村上(健)さん, 須賀さん

工夫したこと
 計算できるコマンドとしてexprだけでなく、$(( ))というコマンドも使ってみました。  echo $?を用いて、どこまでのコマンドは正常に処理されているかを調べました。  無限ループに陥った際に、Ctrlキーを押しながらcキーを押すことで簡単に止められることを調べ、利用しました。
感想
 この構文できちんと素因数分解できるのか自信のない状態で、無限ループやcommand not foundなどの警告メッセージとひたすら戦うのは、とても疲れました。友達が横で同じ課題を進めていたので、それが励みになりました。プログラムが上手くいかないときに、原因を突きとめるセンスをもっと鍛えたいと思いました。
¥苦労した点¥
 無限ループに悩まされました。はじめのうちは、プログラムのどこに欠陥があるか全く分からず、それでも少しづつ、条件を増やしていったりと試行錯誤でした。構文が中途半端だと返り値が行き先をなくして変なことになっていたのか、ある程度書ききると上手くいったりすることがありました。構文が終わる目印のdoneやfiをどこに置くのかということや、doの書き損じなどに原因がありました。


問 3  ブラックジャック

スクリプトのURL

⇒ 修正後 [ ブラックジャック ] スクリプト(quiz3.sh.txt)

⇒ 修正前[ ブラックジャック ] スクリプト(quiz3pre.sh.txt)

TAさんから頂いた問3への修正点
  • スクリプトに改行を適当に入れて、見やすくしてみる.
  • echo を画面とファイルへ出力で 2 回ずつ使っているが, スクリプトを1 行にまとめることができる. パイプと tee コマンドを使う方法がある.
  • 結果の出力先ファイルをその都度指定しているが, 何度も呼び出すものは先に変数に読み込ませておき, 出力先を指定するほうがより良い.
  • スクリプト 2 行目「echo ブラックジャックを始めるぞ〜!!」の「〜」が表示されていない. (「?」になっている)
  • スクリプト内のコメント文(50 行目など)に「then*以下」という表現があるが, このアスタリスクは何故入っているのか.
  • スクリプト 72 行目 「#…最後のカードを引いた際のechoのオプション-nを付けないという設定がこのプログラムでは困難なため。」は
    「#…"最後のカードを引いた際の echo にだけはオプション '-n' を付けない"という設定がこのプログラムでは困難なため. 」とすると分かりやすいかも.
  • スクリプト 82 行目 特別コメントの「You are …」が「Your are…」に,顔文字の右手がバックスラッシュ「\」になってしまっている.

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

以下の手順に従って下さい。

  1. quiz3.shの実行権限のある状態で./quiz3.shを実行する。
  2. ブラックジャックを始めるぞ〜!!という導入メッセージが出る。
    手札の合計点が21か、21以下で21に一番近い者が勝ちとなるトランプゲーム「ブラックジャック」の
    一人参加バージョンを、コンピューター相手にできるプログラムとなっている。
  3. Do you take a card?[Y/n] というメッセージが出るので、初めは、カードを引かなければ手札がないので、Yと答えてほしい。
    nと答えたり、間違った入力をすると、全てやり直しとなる。
  4. Your card is 〜.とあなたがひいたカードの数値を知らせてくる。(絵札は全て10点となるので、最高10点。)
    また、Now, your score is 〜.とその時点での総得点も知らせてくる。
  5. 再び Do you take a card?[Y/n] と尋ねてくるので、Yかnを入力する。
    ここでも間違えた値を入力すると、すべてやり直しとなる。
  6. nと答えた場合は、そこでゲームが終了し、その時点での持ち点が最終的なスコアとなる。
    Now, your score is 〜 and finish!とスコアが表示され、プログラム終了となる。
    Yと答え続ければ、カードが次々引けるが、持ち点が22点以上になると、
    Now, your score is 〜.So, your score is over 21.とスコアが表示され、ゲームオーバーとなり、その場合もプログラムが終了する。
    21にちょうどなったときや、間違った文字入力をした際にも、コメントがそれぞれ表示され、きちんとプログラムが終了するようになっている。

実行結果へのリンク

⇒ [ ブラックジャック ] 結果テキスト(quiz3.txt)

〜参考資料〜

共同作業した人の名前: 高橋 由実子 さん 
アドバイスを頂いた方: 高橋 由実子 さん , TA の井谷さん, 村上(健)さん, 須賀さん

工夫したこと
 プログラムを実行した人が、分かりやすいように日本語の導入部分や終りの言葉を添えました。間違えて文字を押してしまう可能性が高そうだなと考え、その場合にきちんと対処できるプログラムにしました。スクリプトをすべて下まで読み切らずにプログラムを終了させる方法がないか調べ、exitコマンドを発見し、活用しました。総得点がちょうど21点になったときに特別コメントを用意しました。改行や余白を上手く作る方法を研究しました。
感想
 quiz1.shやquiz2.shの制作を経て、スクリプト制作に少しずつ慣れてきたなと自分でも実感できて楽しく作業できました。また、自分ならではのプログラムにする面白さも味わえたような気がしました。スクリプト作成中は、クイズや推理をやっているような気持ちになりました。パソコンやプログラムに疎い自分でも、ちょっとずつできるようになっていくことが嬉しかったです。
¥苦労した点¥
 testコマンドのオプションで-aや-oを用いてみたのですが、はじめ上手くいかずにクオーテーションを用いなければならないのかなど思案しました。22以上になったときにゲームが終わるようにすることや、カードの得点が1〜10までという設定をする際に以下にするか未満にするかなどで微妙に違ってくるので、正しい設定にしなければいけないと最後の方に気づきました。exitコマンドをこのスクリプト制作の途中で知ったので、それまでは上手いこと場合分けやループを作れずにと何度も座礁しました。




このページのソースを表示

〜HTML作成の参考資料〜


HTML作成で工夫したこと
 自分でタグを書いてホームページを作るのが初めてだったので、いろいろなタグを試しながらなるべく沢山の種類のタグを使ってみようと試みました。 画像の表示や現在の日時と、最終更新日が表示されるようなタグも、上にあげたサイトなどを参考にしてチャレンジしてみました。
課題制作全体に対しての感想
 豚インフルエンザによる休講期間を利用して、じっくり課題に取り組めました。自分では初めてやってみる作業が多く、戸惑うことも多かったです。こんなにパソコンとずっと向き合っていたことは、今までの人生の中に覚えがないです。 プログラミングやホームページ作成などに慣れ、パソコン自体ももっと使いこなせるようになりたいと思いました。
¥課題制作を終えて大変だった点、残った疑問点¥
 家でもikaサーバーに接続できるようにするための過程が、難しかったです。WinSCPを日本語表示にする方法が分からず、今だにjp[1]のファイルがWinSCPファイルと別に存在しています。  素因数分解のスクリプト作成が自分の中で一番難しかったのですが、レポート作成全体を通してところどころでつまづき、とても時間がかかってしまいました。
 http://epa.scitec.kobe-u.ac.jp/~takagiruのアドレスにアクセスすると、真っ白な画面が表示されていたのですが、エンコードをUTF-8に指定することによってサンプルページが見れるようになることが確認できました。 その後、試行錯誤して、index.htmlという名前に意味があることに気付きました。 この名前を付けたhtmlファイルがあると、プラウザでURLを最後まで打たなくても、そのページが表示されると理解しました。その成果として http://epa.scitec.kobe-u.ac.jp/~takagiru/report01 で直接ページにいけるようにしました。
 文字化けを防止するために、学校でプラウザを利用する際のエンコードはUTF-8、自宅のWindowsではシフトJISを指定したいのですが、 並列して指定できるのだろうかということも分かりませんでした。メタタグで現在は、<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"> としています。お使いのOSの種類により文字化けするかもしれませんが、エンコード設定を調整してもらえたらと思います。(文字化けしていたらこの文も読めないですね;)
 ホームページ上にアクセスカウンタを設置をしてみたかったのですが、ikaサーバはSSIやCGIなどが許可されているのか分らず断念しました。

拝見していただきありがとうございます。修正点のご指摘やアドバイスを頂けたらと思います。宜しくお願い致します。



TOP

名前: 高木 瑠美
担当情報実験機: joho 07
joho-07の写真