(3)04/27の授業内容
- コンパイル型言語とスクリプト型言語
- まずはRubyをさわってみよう
- 課題を行うためのプログラム
人間は一を聞いて十を知ることができますが,コンピュータは全ての手順を正確に伝えなければ理解することができません.プログラミング言語は,人間がコンピュータに正確に指示を伝えるために作られたものです.また,コンピュータは一見して数字やアルファベット,漢字等様々な言葉を理解できているように感じますが,実際には1と0しか取り扱うことができず,様々な文字の表示や複雑な計算はこれらの数字の組み合わせにより実現されています(これを機械語といいます).したがって,コンピュータに命令を行う際には,本来は機械語で表記をする必要があります.しかし,これは非常に労力が大きい作業です.プログラミング言語は,人間が直接扱うことが難しい機械語のかわりに,わかりやすい言葉で書くことのできる命令方法を提供しています.そして,このわかりやすい言葉を,機械語に翻訳することでコンピュータに実行させるという方式が採用されています.
機械語への翻訳方法によりプログラミング言語は2種類に分類することができます.コンパイル型言語は,わかりやすい言葉で書いたプログラム(これをソースコードといいます)を変更プログラムであるコンパイラを用いて事前に一括で機械語に変換します.一方でスクリプト型言語はソースコードを実行する際に解釈プログラムであるインタプリタを用いて1行ずつ機械語に変換します.
このため,コンパイル型言語ではソースコードに誤りがあると,機械語への変換中(コンパイル)にエラーとなり,実行することができません.これに対して,スクリプト型言語では1行ずつの変換であるため,エラーが出現する手前までは実行が可能です.
また,コンパイル型言語の場合には,人間がコンパイル作業を行う必要がありますが,スクリプト型言語では翻訳は自動的に行われるため,ソースコード作成後,即座に実行が可能です.今回,用いるRubyはスクリプト型言語に分類されます.
これから,Rubyを用いてプログラミングを行います.たくさんのファイルを作っていくことになりますので,ばらばらにならないよう,1つのディレクトリを作成しましょう.ホームディレクトリにkensakuというディレクトリを作成します
irsv{naoya}%mkdir kensaku
では,簡単なプログラムを作成してみましょう.emacsでC-x C-fを行い新しいファイルを作成します.Find file: ~/と表示されている横に,kensaku/hello.rbReturnと入力しましょう.これはkensakuというディレクトリの中に,hello.rbという名前のファイルを作成するということで,これからemacsで作成をするプログラムはこのhello.rbというファイル名で保存されます
まずは,あまり深く考えることなく下記のとおり入力してみましょう.保存はC-x C-sです.普段からこまめに保存するよう心がけましょう
#!/usr/koeki/bin/ruby
print "Hello, Ruby!\n"
次に,ktermでkensakuディレクトリに移動し,下記のように入力します.
irsv{naoya}%cd kensakuReturn
ruby hello.rbReturn
すると下記のように表示されるはずです
irsv{naoya}%cd kensakuReturn
ruby hello.rbReturn
Hello, Ruby!
作成したプログラムについて解説します.1行目の#!/usr/koeki/bin/rubyはrubyインタプリタのあるディレクトリを指定しています.今の段階では深く考えずに,必ず1行目に書くものだと理解しておいてかまいません.2行目のprint "Hello, Ruby!\n"のうちprintは""内を表示するという命令です.これをRubyではメソッドと呼んでいます."Hello, Ruby!\n"は具体的に表示をする内容を表します.なお\nは改行をあらわします.
次のような問題を想定します
年利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は少し間隔をあけるという意味です
Tips
emacsについて
- emacsで新しいファイルを作成する場合は,C-x C-fを押し,ミニバッファにkensaku/kadai2.rbのようにファイル名を入力する
- ファイルの保存はC-x C-s
- 日本語入力のオンオフの切り替えはC-o
Mewについて
- 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を終了する