(4)05/13の授業内容
- 課題を行うためのプログラム
- Rubyプログラムの実行方法
- Rubyインタプリタを起動する方法
- Rubyインタプリタをソースコードに埋め込む方法
- Rubyで利用できる演算
- コメント
- Subjectは「学籍番号-kadai2」とすること
- 本文の1行目ではまず名乗ること
- 2行目以降は下記の構成で記載すること
- 考えた問題文
- 作成したプログラム
- もとのプログラムからの改良点
- プログラムの実行結果
- 感想
- emacsで新しいファイルを作成する場合は,C-x C-fを押し,ミニバッファにkensaku/kadai2.rbのようにファイル名を入力する
- ファイルの保存はC-x C-s
- 日本語入力のオンオフの切り替えはC-o
- emacsを起動する
- Escとxを押し,mewと入力しReturn(Escとxを押すことを,一般にM-xと表記します)%<--これでMewが起動します
- Mewを起動するとパスワードがたずねられるので入力しReturn
- 新着メールの確認およびパスワードを間違えた場合はiと入力しReturn
- メールを読む場合は,カーソルキー(矢印キー)で読みたいメールを選びReturn
- メールの新規作成はwと入力
- e-mailの本文にテキストファイルを読み込むには,新規送信メール画面の本文を記入するエリアにカーソルを移動し,Ctrl+x,iとすると,ミニバッファにInsert file: ~/と表示されるので,読み込みたいファイル名を入力する。
- プログラムの実行結果の貼り付けは,kterm上の出力結果部分をマウスで選択し,Mewの本文の貼り付け位置にカーソルを移動し,マウスの真ん中ボタンをクリックする
- メールの送信はC-c C-cと入力するか,もしくはメニューのsendアイコンをクリックする
- Mewを終了するにはqと入力
- emacsを終了する
次のような問題を想定します
年利13.2%で10万円のお金を借りました.返済しなければならない金額が20万円になるのは何年後でしょうか
#!/usr/koeki/bin/ruby d=d0=100000 y=0 while d< 2*d0 d *= 1.132 printf "%3d年\t%d円\n", y+=1, d end
上記プログラムをemacsで作成し,kensakuディレクトリの中にdebt.rbという名前をつけて保存する.実際に実行すると何年になるだろうか.試してみよう
なお,このプログラムでは現在の借金額をd,初期の借金額をd0とし,yは年をあらわしています.d,d0,yのことを変数といいます.変数の名前のつけ方に決まりはありませんので,dのかわりにdebt,d0のかわりにdebt0としてもかまいません.変数名からその変数があらわすものがわかるように工夫します
"while〜end"は繰り返しを示す決まった表現です.ここではdの値が初期値であるd0の2倍未満である間はd×1.132を繰り返す,すなわち13.2%ずつ増加しなさいという指示をしています
printfは決められたフォーマットで結果を出力するためのメソッドです."%d"には数値を表示します."%d"を"%3d"とすると3桁で表示します.もしも2桁の数字の場合には左に1つスペースが開くことになります.今回のように結果が複数行にわたって表示される際には,桁をそろえて表示をしたほうが見栄えがよく,読み間違いを防ぐことにもつながります.\tは少し間隔をあけるという意味です
2種類の実行方法があります
irsv{naoya}%ruby hello.rbReturn
irsv{naoya}%chmod +x hello.rbReturn
irsv{naoya}%./hello.rbReturn
1行目のchmod +x hello.rbは最初の1回だけ実施すれば,その後は2行目の./hello.rbで直接実行できます.新しいファイルを作成した場合のみ,最初に実行する際に1行目を実施すると覚えておきましょう
四則演算子,代入演算子,比較演算子について説明します
四則演算子 | 意味 |
+ | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
** | べき乗 |
#!/usr/koeki/bin/ruby print "1+1=", 1+1, "\n" #=>1+1=2 print "2-3=", 2-3, "\n" #=>2-3=-1 print "5*10=", 5*10, "\n" #=>5*10=50 print "100/4=", 100/4, "\n" #=>100/4=25 print "10%3=", 10%3, "\n" #=>10%3=1 print "2**5=", 2**5, "\n" #=>2**5=32
代入演算子 | 意味 |
= | 通常代入(z=10) |
+= | 加算代入(z+=10でxが10増える) |
-= | 減算代入(z-=10でzが10減る) |
*= | 乗算代入(z*=5でzが5倍になる) |
/= | 除算代入(z/=10でzが1/10になる) |
%= | 剰余代入(z%=5はz=z%5と同じ) |
**= | べき乗代入(z**=5はz+z**5と同じ) |
x = 0 print x,"\n" #=>0 x = 10 print x,"\n" #=>10 x += 5 print x,"\n" #=>15 x *= 2 print x,"\n" #=>30 x %= 4 print x,"\n" #=>2
比較演算子 | 意味 |
== | 左辺と右辺が等しいか |
< | 左辺が右辺よりも小さいか |
<= | 左辺が右辺以下か |
> | 左辺が右辺よりも大きいか |
>= | 左辺が右辺以上か |
&& | かつ |
|| | または |
! | 否定 |
not | 否定 |
while x >= 1 && x <= 10 #xが1から10の間にある場合に処理を続ける while x < 1 || x > 10 #xが1未満か10以上の場合に処理を続ける while !(x >= 1 && x <= 10) #xが1未満か10以上の場合に処理を続ける
コメントとは,プログラムの名前や作者,説明などをプログラム内に示したものです.プログラム中に書かれていても,直接プログラムとして扱われることはありません.他人の書いたプログラムはわかりづらいとしばしば言われますが,わかりやすさの向上を目指す上でもコメントが利用されることがあります
コメントとをあらわす記号は「#」です.行頭に「#」があれば,1行まるまるコメントになります.行の途中に「#」があれば,「#」の部分から行末までがコメントになります
課題
debt.rbのように,初期値と上限が設定されているプログラムを作成し,kadai2.rbという名前をつけてkensakuディレクトリ内に保存する
例:人口3万人の都市がある。1年に10%ずつ増加するとした場合、 人口が5万人になるのは何年後か
作成したプログラムや実行結果をメールでnaoya@e.koeki-u.ac.jp宛に送る.
課題の提出期限は5月14日(土)17:00までです