新しい内容に入る前に、以下の課題を解いて春学期の基礎プログラミングIで習ったことを復習しよう。初めは、何も見ずに自力で解いてみよう。思い出せない場合は、基礎プログラミングIの資料などを参考にしてください。
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!
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歳を超えましたね。おめでとうございます!
五つの商品の名前を含む配列と各商品の値段を含むもう一つの配列を作って、順番に各商品の情報を表示し、最後に平均値段を出力するプログラム prices.rb
を作成、実行せよ。商品の情報を出力する時はループの中で printf
(基礎プログラミングI第3回の資料を参照)を使うこと。
実行結果の例:
sime{c11xxxx}% ruby prices.rb
パン の値段は 99 円です
チョコレート の値段は 150 円です
おにぎり の値段は 120 円です
コーラ の値段は 159 円です
ボールペン の値段は 199 円です
平均値段は 145.4 円です
以下のテキストファイル(phonelist.txt
)を自分のディレクトリに保存し、正規表現を使って、その中から電話番号が「0
」から始める、かつ組織の名前に「大学」が含まれている行だけ出力し、別のファイル(filtered.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 東北大学
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
習いましょう