戯れに遊んでみました。もどきであってオブジェクト指向になってはないんじゃないかと思ったり。大体、オブジェクト指向のソフト書いたことないし。。。
ちゃんと理解してるわけではないので適当ですが。
それに無駄とかもありそうだし意味なしだし。
! fortran 95 によるオブジェクト指向もどきのつもりサンプル
!
module complex
! 複素数オブジェクトの定義
implicit none
private
public mycomp
! オブジェクト mycomp の本体
type mycomp
real(kind=kind(0.d0))::rp
real(kind=kind(0.d0))::ip
end type mycomp
end module complex
!
module complex_mul
! 複素数オブジェクト同士の積の定義
use complex
implicit none
private
public mul
contains
! 積メソッド mul の定義
function mul(x1,x2)
type(mycomp)::mul
type(mycomp),intent(in):: x1,x2
mul%rp = x1%rp * x2%rp - x1%ip * x2%ip
mul%ip = x1%rp * x2%ip + x2%rp * x1%ip
end function mul
end module complex_mul
!****************************
module complex_set
!複素数オブジェクトのセッター
use complex
implicit none
private
public cset
real(kind=kind(0.d0))::a,b
contains
! セッターメソッド
function cset(a,b)
type(mycomp)::cset
real(kind=kind(0.d0)),intent(in):: a,b
cset%rp=a
cset%ip=b
end function cset
end module complex_set
!****************************
program test
! プログラム本体
! module 読み込み
use complex
use complex_set
use complex_mul
implicit none
real(kind=kind(0.d0)):: a,b,c,d
type(mycomp):: e,f,g ! インスタンス生成
!
print *,'put four numbers'
read *, a,b,c,d
e=cset(a,b)!複素数オブジェクトeのセット
f=cset(c,d)!複素数オブジェクトfのセット
g=mul(e,f)
print *,'real part:',g%rp,'imaginaly part:',g%ip
print *,'direct compute result:',a*c-b*d,'+',a*d+c*b,'i'
end program test
とりあえず gfortran でコンパイルして動くのは確認しました。
ただ、mingw 64bit の環境と msys の環境をしっかりと作っておかないと駄目なんですね。自分でコンパイルしたツールとかをインストールしていたせいで、本体と整合性が取れなくなっていたりして。
結局 msys と mingw64 を総入れ替えすることになってしまいました。
home の下はそのまま残しましたが。今の msys は最初から svn とか git とか入ってるんですね。git 用の msys は別途インストールしていたのですが、今はわざわざ分ける必要ないのか。
gcc のバージョンも、4.x.x 系列を使っていたんですが、何故かエラってしまっていたので、これを機会に 5.x 系列の mingw64 をインストールしてしまいました。
全然問題ないみたいです。
ただ、試しに llmv をインストールしようとしたらはまりました。これはいかんわ。
ちなみに cmake は最初はコンパイルして使おうとしたんですが、結局 zip ファイルのやつを落としてきて、msys のツリーの下に置きました。デフォのやつだとパスをうまく通さないと動いてくれないんですよね。
ずっと放置している JavaScript のやつも手をつけようと思ったのですが、ちょろっと外枠の部分の html と CSS をやっただけで時間切れ。ちょっと他のことに時間を取られすぎた。
昨日よりはマシな体調でしたが、やっぱりどこかダルい感じが残っていました。
ぐったりと iTunes に入ってる曲を聞いていました。
引っくり返らずにすみましたが、実際のところは横になっていた方がよかったかもしれません。
しばらく放置していたのですが、MGM2のスケジュールが出ていて、もしかしたら予定が合うかもしれないので、その時には出るかも。
番外のやつは土曜なんで無理なんですが、11月3日と1月24日はなんとかなるかなぁ。
でも1月24日は COMITIA 115 の前日なんですよね。
>国産の旅客機はほとんど半世紀ぶりになるんだそうです。<br>試作機「飛鳥」が封印されちゃったのがちょっと寂しいよもやま。<br>ホンダジェットみたいに翼の上にエンジンが♪