3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

マルチスケールシミュレーション特論:第 10 回をまとめてみた

Last updated at Posted at 2020-11-25

!ruby-2.5.5p157

フィボナッチ数列(問題)

  • 本日は Fibonacci 数列についての問題を解く

    fib(n) = fib(n-1)+fib(n-2)
    0 1 1 2 3 5 8 13 21 ...
    

    を recursion(再帰)で求めよ

進め方

前回と同様に テスト駆動開発 で今後の学習を進めて行く

  • まずは初項から計算を行う

    • red: 表示を行うred → p fib(0)エラーがおこる

    • green: def をしてみる

      def fib(n)
        if n==0
          return 0
        end
      end
      
    • refactoring: assert_equal.rb の assertion(確認)を試しておく

  • 次は、2 項目を求める

    • これは初項と同様に求める
  • 次は 3 項目 = 2 項目 + 1 項目

この処理を逐一行っていく。エラーが現れたら随時処理を行っていく

プログラム(最終版)

上記のようにプログラムを書き進めていくと以下のようなプログラムができます

def fib(n)
 return 0 if n==0
 return 1 if n==1
 return fib(n-1) + fib(n-2)
 end

 require './assert_equal'
 # assert_equal.rb  は同じディレクトリにある事を想定
 [[0,0],[1,1],[2,1],[3,2],[4,3],
 [5,5],[6,8],[7,13],[8,21]].each do |index, expected|
   puts assert_equal(expected, fib(index))
 end

class 化

次にクラス化について学習を行ったオブジェクト指向という考え方がある。このキーとなる考え方が,

  • 隠蔽(capsulation)
  • 継承(inheritance)
  • 多形(polymorphism)

である

クラス化とは

クラス化について

簡単にまとめると、オブジェクト指向プログラミングにおけるクラス(英:class)とは、オブジェクトを生成するための設計図あるいはひな形に相当するものである

プログラムをクラス化すると

まずは class なしのプログラム

def puts_hello name
  puts "Hello #{name}."
end
def gets_name
  name = ARGV[0] || 'world'
  return name
end

次にクラスありのプログラム

class Hello
  def initialize
    # インスタンス変数
    @name = gets_name(name)
    puts_hello
  end

  def puts_hello
    puts "Hello #{@name}."
  end

  def gets_name
    name = ARGV[0] || 'world'
    return name
  end
end

インスタンス変数について

  • 宣言

変数の初めに「@」をつけることで宣言を行うことができる

  • スコープ

インスタンスメソッド内でのみ使用できる変数。インスタンスごとに異なる値を持つことができ、メソッドを超えて参照することができる

参考文献


  • source ~/Downloads/git/grad_members_20f/members/taiseiyo/memos/class10.org
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?