(3)04/27の授業内容

  1. コンパイル型言語とスクリプト型言語
  2. 人間は一を聞いて十を知ることができますが,コンピュータは全ての手順を正確に伝えなければ理解することができません.プログラミング言語は,人間がコンピュータに正確に指示を伝えるために作られたものです.また,コンピュータは一見して数字やアルファベット,漢字等様々な言葉を理解できているように感じますが,実際には1と0しか取り扱うことができず,様々な文字の表示や複雑な計算はこれらの数字の組み合わせにより実現されています(これを機械語といいます).したがって,コンピュータに命令を行う際には,本来は機械語で表記をする必要があります.しかし,これは非常に労力が大きい作業です.プログラミング言語は,人間が直接扱うことが難しい機械語のかわりに,わかりやすい言葉で書くことのできる命令方法を提供しています.そして,このわかりやすい言葉を,機械語に翻訳することでコンピュータに実行させるという方式が採用されています.

    機械語への翻訳方法によりプログラミング言語は2種類に分類することができます.コンパイル型言語は,わかりやすい言葉で書いたプログラム(これをソースコードといいます)を変更プログラムであるコンパイラを用いて事前に一括で機械語に変換します.一方でスクリプト型言語はソースコードを実行する際に解釈プログラムであるインタプリタを用いて1行ずつ機械語に変換します.

    このため,コンパイル型言語ではソースコードに誤りがあると,機械語への変換中(コンパイル)にエラーとなり,実行することができません.これに対して,スクリプト型言語では1行ずつの変換であるため,エラーが出現する手前までは実行が可能です.

    また,コンパイル型言語の場合には,人間がコンパイル作業を行う必要がありますが,スクリプト型言語では翻訳は自動的に行われるため,ソースコード作成後,即座に実行が可能です.今回,用いるRubyはスクリプト型言語に分類されます.

  3. まずはRubyをさわってみよう
  4. これから,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は改行をあらわします.

  5. 課題を行うためのプログラム
  6. 次のような問題を想定します

    年利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について

Mewについて