情報科学概論(再履修)
2004.11.5

Back to index page



  1. 本日の作業内容

  2. 出席確認

    電子メールで出席確認をします.宛先など以下の情報を用いてメールを作成し, 出席申告してください.なお,キーワードは授業中に紹介します.

    提出形式

    宛先 justice@mag.shimane-u.ac.jp
    件名 AttendR11-5_ruby_s0340**
    本文 学生番号
    氏名
    キーワード
     
    (改行)
    (改行)
    キーワードは授業中に紹介
    注意 「件名」および「添付書類名」の**をそのままにしないで,必ず自分の学生番号 に修正して下さい.

  3. 四則演算

    • 演算

      「計算機」というくらいですからコンピュータは計算をするのが仕事です.プロ グラミング言語においても,いわゆる科学計算とは無縁のプログラムでも中では 計算を行っているのが普通です.ただし,計算と言ってもさらに正確には「演算」 であって,この中には「論理演算」というものもありますので,単純な数値計算 以外のものが多く含まれています.ここでは,演算の中のもっとも基本となる 「四則演算」と実際によく利用される「剰余」について学習します.

    • 四則演算の記号

      表1に四則演算および剰余に利用する記号について示しておきます.×や÷と言 う演算記号がASCII文字 (アメリカにおいてコンピュータで文字を表現するため に用意されている文字) に無いので通常とは違う記号になっています.また, 「剰余」とは割算における答え (商) を求めるのではなく,余りの方を求める演 算です.

      表1 四則演算記号

      演算記号
      足し算 (和) +
      引き算 (差) -
      かけ算 (積) *
      割算 (商) /
      あまり (剰余) %
      べき乗 **

  4. 変数の型と演算

    先ほど紹介した変数の型は演算を行う際に重要になってくることがあります.ま ずは,次の例で試してみましょう.なお,これからのスクリプトはこのように ソース を用意していますので,リンク部分を右クリックして「リンク先をディスクに 保存」すれば,ダウンロード可能です.ダウンロードの際に保存先を聞かれるダ イアローグウィンドウ (図1) が出てきますので,自分が作業するディレクト リ (フォルダ) を指定してダウンロードを 行います.次回からはそのディレクトリ (フォルダ) が最初から指定されるよう になります.ダウンロードしたファイルをS@pphireで開くとスクリプトが実行で きます.

    図1 保存先選択ダイアローグ

    print "1 + 1 = ", 1 + 1, "\n"
    print "1 + 1.0 = ", 1 + 1.0, "\n"
    print "1 - 1 = ", 1 - 1, "\n"
    print "1 - 1.0 = ", 1 - 1.0, "\n"
    print "1 * 2 = ", 1 * 2, "\n"
    print "1 * 2.0 = ", 1 * 2.0, "\n"
    print "1 / 2 = ", 1 / 2, "\n"
    print "3 / 2 = ", 3 / 2, "\n"
    print "1.0 / 2 = ", 1.0 / 2, "\n"
    print "1 / 2.0 = ", 1 / 2.0, "\n"
    print "1 / 3 * 3 = ", 1 / 3 * 3, "\n"
    print "1 % 3 = ", 1 % 3, "\n"
    print "5 % 3 = ", 5 % 3, "\n"
    

    動作については納得が出来ますでしょうか.整数型の演算では小数部分は一切無 視されますので,割算で影響が出てきます.また,整数型と浮動小数点数型の混 じった演算においては,自動的に浮動小数点数としての演算が行われます.

    剰余については,初めて扱うときには分かりにくい人が多いようです.大学生で も,「1を3で割った余り」が理解できない人もときどきいて授業で苦しんでい ますが,一度分かったらなんてことはない計算です.

    文字列も演算が行われる場合があります.次の スクリプト を試してみましょう.

    str1 = "gaia "
    str2 = "gundam"
    
    sum = str1 + str2
    pro = str1 * 5
    
    puts sum, pro
    

    文字列に関しては,文字列どうしの和と文字列と整数値の積が可能となっていま す.

  5. 型の変換

    プログラミング言語で数字が出てきたとき,それは文字列なのか,数値なのかが重 要であることがわかってきたでしょうか.また,数値には整数と浮動小数点数と 言う性格の異なるものもあります.これらを扱うときに,型を相互に変換するこ とも可能です.次の例を試してみましょう.

    str = "100"
    
    int = str.to_i
    float = str.to_f
    
    print str * 5, "\n"
    print int * 5, "\n"
    print float * 5, "\n"
    
    str2 = (float * 5).to_s
    
    print str2 * 2, "\n"
    

    ここで使用しているメソッドをまとめると次の表のようになります.

    メソッド動作
    to_iオブジェクトを整数型に変換
    to_f オブジェクトを浮動小数型に変換
    to_sオブジェクトを文字列に変換

    メソッドの名前に出てくる i f また s はそれ ぞれinteger,float,stringの頭文字になっていますので,覚えやすいでしょう. また,オブジェクトに対して,ピリオドを介してメソッドを繋げると,オブジェ クトに対する操作になります.これだと,英語の命令文とは語順が異なり,例え ば,「文字列 str を整数型に変換」のような日本語的な語順になるの で,理解しやすいのではないでしょうか.

  6. 特殊な代入

    • 自己代入

      「自己代入」もプログラミングにおいて非常に重要な概念です.また,プログラ ミング言語と数学の最も異なる点とも言えるもので,数学的な常識があると余計 に理解しにくいものですので,これはこれとして覚えて行く方がよいでしょう.

      次のような スクリプト を実行してみます.このスクリプトには文法的なエラーは ありません.

      a = 1
      a = a + 2
      a = a + 3
      
      puts a
      

      先ほど等号の記号 (=) はプログラミング言語においては「代入」であると紹介 しました.2行目と3行目は数学的にはおかしいことになりますが,ここでは代 入であるので,正常に動作します.これは,最初に a の値を1に設定 (このような操作を「初期化」と言います.) しました.2行目ではその a に2を足したものを改めて a に代入することを意味し ています.3行目も同様の操作で値が3に増えている変数 a に対して,3を足してその後でその値6を改めて変数 a に代 入します.そこで,結果としては6が得られます.自己代入は四則演算 以外にも論理演算でも行われますが,そちらはややこしいので今は触れ ません.また,自己代入演算子として簡略化されたものが定義されてい ます.例えば,上の例の和であれば,2行目は次のように書き直すこと が出来ます.

      a += 2 

      そのほかの演算子についても,次のスクリプトで試してみましょう.

      a = 1
      puts a += 2
      puts a -= 5
      puts a *= 7
      puts a /= 3
      puts a %= 2
      

      初めのうちは,省略しないで書く方が間違いが少ないかも知れません.また,動 作を実際に紙と鉛筆で確かめながら,スクリプトを作成して行く方が確実でしょ う.

    • 多重代入

      複数の変数に複数の値を一度に代入することも可能です.このような操作を多重 代入と呼びます.次の例で試してみましょう.

      a, b, c, d = 1, 2, 3, 4
      puts a, b, c, d
      
      x, y, z = 1, 2
      puts x, y, z
      
      l, m, n = 1, 2, 3, 4
      puts l, m, n
      

      変数の個数と値の個数が異なる場合に注意しましょう.自分ではこのような個数 の異なる代入はしない方が無難でしょう.

    • 値の入れ換え

      多重代入を利用すると次のような値の入れ換えも可能になります.これはいろい ろと便利な用途があります.

      a = "a is first"
      b = "b is second"
      
      puts a, b
      
      a, b = b, a
      
      puts a, b
      

  7. 小テスト

    授業の終わりに小テストを実施します.アナウンスに注意していて下さい.

    再履修クラス小テスト

  8. 宿題

    宿題に関する案内が授業の終わりに紹介されます.注意にしたがって提出してく ださい.

    再履修クラス宿題

  9. 本日の用語

    • 剰余

      割算におけるあまり.偶数奇数の判断やカレンダーの曜日など周期的に繰りかえ す処理に有効.

    • 自己代入

      変数を利用する際,自分自身になんらかの演算処理を行った結果を改めてその変 数に代入する操作.繰りかえし処理に必須の代入法.

    • 多重代入

      複数の変数に複数の値を一気に代入する方法.値の入れ換えにも使用可能.


目次ページに戻る