基礎プログラミングIの復習


新しい内容に入る前に、以下の課題を解いて春学期の基礎プログラミングIで習ったことを復習しよう。初めは、何も見ずに自力で解いてみよう。思い出せない場合は、基礎プログラミングIの資料などを参考にしてください。


復習問題

  1. 画面に Hello, world!100回表示するプログラム hello100.rb を作成、実行せよ。

    ヒント:ソースコードは同じ行を100回繰り返すのではなく、ループ(制御構造の一種)を使おう。

    実行結果(途中まで):

    sime{c11xxxx}% ruby hello100.rb
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    Hello, world!
    
  2. 実行すると現在の年齢を聞き、ユーザがそれに答えると、100歳未満の場合は100歳までの年数を計算し「100歳まで後〇〇年です」と表示し、100歳以上の場合は「100歳を超えましたね。おめでとうございます!」と表示するプログラム how_old.rb を作成、実行せよ。

    ヒント:入力された年齢に該当するメッセージを表示するためには、条件分岐(制御構造の一種)を使うべきである。

    実行結果の例:

    sime{c11xxxx}% ruby how_old.rb
    今何歳ですか?
    20
    100歳まで後80年です
    

    発展課題(自信がない人はスキップして良い):ユーザが年齢じゃなくて生まれた年、月、日をそれぞれ入力し、Timeクラス(基礎プログラミングI第10回の資料を参照)を使って年齢を計算するように改良せよ。

    実行結果の例:

    sime{c11xxxx}% ruby how_old.rb
    何年に生まれましたか?
    1921
    何月に生まれましたか?
    8
    何日に生まれましたか?
    15
    100歳を超えましたね。おめでとうございます!
    

  3. 五つの商品の名前を含む配列と各商品の値段を含むもう一つの配列を作って、順番に各商品の情報を表示し、最後に平均値段を出力するプログラム prices.rb を作成、実行せよ。商品の情報を出力する時はループの中で printf基礎プログラミングI第3回の資料を参照)を使うこと。

    実行結果の例:

    sime{c11xxxx}% ruby prices.rb
    パン の値段は 99 円です
    チョコレート の値段は 150 円です
    おにぎり の値段は 120 円です
    コーラ の値段は 159 円です
    ボールペン の値段は 199 円です
    平均値段は 145.4 円です
    

  4. 以下のテキストファイル(phonelist.txt)を自分のディレクトリに保存し、正規表現を使って、その中から電話番号が「0」から始める、かつ組織の名前に「大学」が含まれている行だけ出力し、別のファイル(filtered.txt)に保存するプログラムを作成、実行せよ。

    phonelist.txt

    氏名		電話番号		組織
    酒井忠勝		123-321-1234	東北公益文科大学
    田中太郎		321-123-4321	株式会社東北通信
    清少納言		012-012-0123	平安女学院大学
    伊達政宗		001-210-3210	東北大学
    松尾芭蕉		981-871-7651	東北文化推進センター
    宮本武蔵		135-975-5555	株式会社播磨製鉄
    島津斉彬		653-799-3245	サツマイモ商会
    近松門左衛門	223-900-5432	福井大学
    紫式部		808-051-3829	京都大学
    鳥居忠政		777-666-8765	東北文教大学
    勝海舟		003-004-1234	長崎海軍伝習所
    

    実行結果(filtered.txtの中身):

    清少納言		012-012-0123	平安女学院大学
    伊達政宗		001-210-3210	東北大学
    
  5. irb基礎プログラミングI第6回の資料を参照)と printf を使って10進数の 77 に相当する2進数と16進数を確認せよ


本日の提出課題

 基本課題 

コンピュータと対戦できるじゃんけんゲームを作成せよ。

プログラムの流れ:まずはユーザーの手を(カタカナで)入力してもらう。それからコンピュータの手を(ランダムに)決めて(基礎プログラミングI第10回の資料を参照)、表示する。最後にコンピュータとユーザーの手を比較し、その組み合わせに該当するメッセージを表示する(「あなたの勝ちです」、「わたしの勝ちです」、または「あいこでしょ」)。

条件:

実行結果の例:

sime{c11xxxx}% ruby rockpaper.rb
あなたの手を入力してください(グー、チョキ、パー;必ずカタカナで書いてください)
パー
私の手は パー です
あいこでしょ
あなたの手を入力してください(グー、チョキ、パー;必ずカタカナで書いてください)
パー
私の手は グー です
あなたの勝ちです


本文は下記の通り記入してください.

氏名: 苗字名前
学籍番号: C11xxxxx

ソースコード:
...

実行結果:
...

 発展課題 

次の処理を行うプログラムを作成せよ:まずはユーザーが入力したい単語の数を決める。次に、指定された数の単語を入力してもらって、配列に保存する。それから、入力された単語の平均文字数を計算し、表示する。最後に、平均未満の単語を short.txt というファイルに書き出し、平均以上の単語を long.txt というファイルに書き出す。

ヒント1:文字列の文字数は lengthメソッド で求めることができる。例えば、"Ruby".length は「4」を返す。

ヒント2:2つのループが必要になる:1)ユーザーから入力を受けるループ、2)それぞれの単語の長さを平均と比べてどちらかのファイルに追記するループ。

実行結果の例:

sime{c11xxxx}% ruby word_analyzer.rb
単語の数を入力してください
4
1番目の単語を入力してください
Ruby
2番目の単語を入力してください
言語
3番目の単語を入力してください

4番目の単語を入力してください
習いましょう
入力された単語の平均文字数: 3.25

short.txtの中身:

言語
を

long.txtの中身:

Ruby
習いましょう


目次