roy > naoya > 基礎プログラミングII[月2] > (1)前期の復習

(1) 10/01の授業内容:前期の復習

プログラムの作成·実行方法の復習

春学期が終了してから2ヶ月のブランクがあいているが、プログラムの作成方法は覚えているだろうか? emacsを用いたプログラムの作成方法、ktermでの実行方法について確認しておこう。最低限、以下に示す項目は思い出しておこう。自信がない場合は前期の第2回目の授業のページを確認しておくこと。

基礎プログラミングI·情報検索第2回のページ

emacs

  • 新規作成:Ctrl-x Ctrl-fを入力。Find File:~/ruby/○○.rbと入力し[Return]
  • ファイルを開く:Ctrl-x Ctrl-fを入力。Find File:~/ruby/○○.rbと入力し[Return]。○○.rbが存在しないファイル名の場合は新規作成となり、既存のファイル名を入力した場合はそのファイルが開かれる。
  • 保存:Ctrl-x Ctrl-s
  • コピー&ペースト:コピーしたい箇所をマウスで反転させる。貼り付け先でマウスの真ん中クリックで貼り付けられる。
  • 日本語入力の切り替え:Ctrl-oを押すごとに日本語入力のON/OFFが切り替わる。
  • キー入力の補間:ディレクトリ名やファイル名を入力する際、途中まで入力してTabキーを押すと自動的に補間される。

kterm

  • ディレクトリの移動:cd ディレクトリ名。rubyディレクトリを開く場合はcd rubyとなる。上のディレクトリに戻る場合はcd ..
  • Rubyプログラムの実行:ファイルがあるディレクトリで、ruby ○○.rb
  • 入力したコマンドの再利用:キーボードの↑(上矢印)キーを押すと直前に入力したコマンドが表示される。
  • 日本語入力の切り替え:Shift-Spaceを押すごとに日本語入力のON/OFFが切り替わる。

Ruby

  • 1行目:#!/usr/koeki/bin/rubyと入力する(おまじない)。
  • print、printf:printは""内のメッセージをそのまま表示するメソッド。printfは""内に%を起き、その場所に後ろで指定した変数内に代入された値を入れ込んで表示するメソッド。%の後ろに書式制御文字であるdやf、sを記載し、表示形式を指定する。
  • gets:キーボードからの入力を文字列として受け取るメソッド。ファイルからの読み込みも可能。
  • chomp!:改行文字がある場合にそれを取り除くメソッド。
  • to_i、to_f:to_iは変数内に代入された値の形式を整数に変換するメソッド。to_fは少数を含む実数に変換するメソッド。

練習

操作を思い出しながら、次の2つのプログラムを作成し、感覚を取り戻そう。

  • 画面にHello Ruby!と表示するだけのプログラム(hello.rb
  • 商品の金額を入力すると2割引の価格が表示され、支払い金額を入力するとおつりを計算して表示するプログラム(discount.rb

これらのプログラムを実行するとそれぞれ以下のような結果が得られるはずである。

irsv{naoya}% ruby hello.rb[Return]
Hello Ruby!
irsv{naoya}% ruby discount.rb[Return]
金額を入力してください
1000[Return]
2割引で800円になります。
支払い金額を入力してください。
1000[Return]
1000円お預かりいたします。
200円のお返しになります。

条件判断の復習

条件判断(場合わけ)を行う際にif文を使用した。基本的には以下の構造をとった(詳細は春学期の第3回目の授業参照)。

if文の基本構造

if 条件A        #条件Aを満たせば
  処理A         #処理Aを実施する
elsif 条件B     #条件Aを満たさないが条件Bを満たせば
  処理B         #処理Bを実施する
else            #条件ABともに満たさない場合は
  処理C         #処理Cを実施する
end

以下はif文を用いて書いたプログラムの例である(tani.rb)。実行するとどのような結果が出てくるか考えてみよう。

#!/usr/koeki/bin/ruby

print "試験の得点を入力してください(0〜100点)\n"
score = gets.chomp!.to_i

if score < 60 then
   print "残念! 不可です\n"
elsif score < 70
   print "セーフ! 可です\n"
elsif score < 80
   print "良です。 よくできました\n"
else
   print "優です! すばらしいですね\n"
end

出席課題

if文を使用する以下のプログラムを書いてみよう。1番と2番のどちらを選択しても良い。

  1. 購入する商品の金額を順番に入力すると、送料込みの合計金額を表示するプログラム。送料は全国一律525円であるが、商品の合計金額が5000円以上もしくは購入商品4点以上の場合は無料になる。(amount.rb
  2. 宅配便で送る荷物の幅、長さ、厚さおよび重さを入力すると料金を計算するプログラム。なお、料金はサイズにより以下のように定められているものとする(delivery.rb

60サイズ

80サイズ

100サイズ

120サイズ

140サイズ

160サイズ

600円

700円

800円

900円

1000円

1100円

サイズ区分は以下の表の通りであるが、3辺の合計の長さと重さのサイズが一致しない場合は、大きい方のサイズの扱いとする。長さと重さの一方でも160サイズを超えている場合は送れない旨を表示する。

サイズ

60サイズ

80サイズ

100サイズ

120サイズ

140サイズ

160サイズ

3辺計

60cm迄

80cm迄

100cm迄

120cm迄

140cm迄

160cm迄

重量

2kg迄

5kg迄

10kg迄

15kg迄

20kg迄

25kg迄


うまくいかない場合は、修正途中でもよいので授業終了時までにメールで解答を送信すること。出席点は2点。提出要領は下記の通り。

  • 提出先:naoya@e.koeki-u.ac.jp
  • メールのSubject:attend01
  • 本文の構成:1行目で学籍番号、氏名を記載する。2行目以降にプログラムと実行結果を貼り付ける

Tips:Mewによるメールの送り方はMewコマンドを参照