1 名前:デフォルトの名無しさん [2009/01/24(土) 18:32:01 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 FORTRAN使いが優しくコメントを返しますが、 お礼はFORTRANの布教と初心者の救済と次期Fortran2008規格でのCOMEFROM文採用をお願いします。 ●注意事項 ・質問する前にGoogle等の検索サイトで検索しましょう。 ・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。 ・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。 ●前スレ くだすれFORTRAN(超初心者用)その3 pc11.2ch.net/test/read.cgi/tech/1196384126/ くだすれFORTRAN(超初心者用)その2 pc11.2ch.net/test/read.cgi/tech/1164121236/ くだすれFORTRAN(超初心者用) pc8.2ch.net/test/read.cgi/tech/1138063703/ ●関連スレ FORTRAN W pc11.2ch.net/test/read.cgi/tech/1163319215/
898 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:30:51 ] 終了したのが なんていうサブルーチンで何行目か、とか ソースファイルの何行目だったか、とか教えてくれるようにする オプションってあったと思うけどなぁ。というわけでマニュアルを読もう! Fujitsuだと超最適化かけてもこの機能はついてくるのが素晴らしいが PC向けではなかったような・・・。出してくれんかねぇ
899 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 07:59:22 ] >>898 いえ、それがめんどくさいことに終了せずにどこかで停止してるんですよ。 write文の中身をいちいち変えてもいいんですけど、 出来るだけコード汚さないように書きたいので。
900 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 11:25:45 ] すみません、もう一つ。subroutineの最後に return end って書くのはなんででしょう。サブルーチンでのendってreturnと 同じ意味じゃないんでしょうか?returnが無いと困るケースってあります?
901 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 12:13:11 ] ヒント: returnはサブルーチンの最後である必要は無い。
902 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 13:12:13 ] 大昔はEndSubroutineが無かったから、 このEndはサブルーチンのですよ、とチェックをいれる意味で 推奨されてた名残だね。ぶっちゃげ無くてEndだけでもいい。 Returnはサブルーチン抜けを意味するのだからメイン階層では絶対出てこないので。
903 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 18:54:13 ] 900じゃないけどreturnとか使った事ありませんでした 勉強になるスレです
904 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 22:05:26 ] >>897 __FILE__ を使って後はゴニョゴニョとよくやってた。 Fortran 自体を使わなくなって数年(足を洗ったので)。
905 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:08:56 ] >>899 Fortranにはそういう命令はない。 しかしコンパイラのtracebackオプションを使えばいい。 大抵のコンパイラにはそういう機能がある。 だがそれは、処理系に依るのでマニュアルでオプションを調べるしか無い。 コンパイラの種類とバージョンを言えばわかる可能性はある。
906 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:13:26 ] __LINE__使えるんじゃないの?
907 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 00:35:53 ] >>906 標準のFortranにはないべ。 Unix系のプリプロセッサの機能だろ。方言のなまりがきつすぎる。
908 名前:ごめんなさい、お願いです。 [2010/02/10(水) 00:51:22 ] このプログラムを 明日までに作ってください!!お願いします。 Fortranで, 階乗 n! を計算する関数を作成し, 順列 n個の異なるものからr個取り出して並べる。 このときの順列の総数をnPrとあらわす。 nPr=n(n-1)(n-2)・・・(n-r+1) を計算する関数を作成し, 組み合わせ 異なるn個からr個取り出して組を作る。 このときの組合せの総数をnCrとあらわす。 nCr = nPr/r! を計算するプログラムを作成してください。 おねがいします。
909 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:55:59 ] >>908 最近勉強しているのでFortran95 で書いてみた。 たぶん君が求めているのはF77ヴァージョンだろうw MODULE m_2chan IMPLICIT NONE CONTAINS ELEMENTAL INTEGER FUNCTION factorial(n) INTEGER, INTENT(IN) :: n INTEGER :: i factorial = PRODUCT( (/ (i, i = 1, n) /) ) RETURN END FUNCTION factorial ELEMENTAL INTEGER FUNCTION permutation(n, r) INTEGER, INTENT(IN) :: n, r INTEGER :: i permutation = PRODUCT( (/ (i, i = n, n - r + 1, -1) /) ) RETURN END FUNCTION permutation ELEMENTAL INTEGER FUNCTION combination(n, r) INTEGER, INTENT(IN) :: n, r combination = permutation(n, r) / factorial(r) RETURN END FUNCTION combination END MODULE m_2chan !
910 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 01:57:29 ] PROGRAM twochannel USE m_2chan IMPLICIT NONE INTEGER :: n, k PRINT *, 'INPUT n and k' READ *, n, k PRINT *, 'nCk = ', combination(n, k) STOP END PROGRAM twochannel 77育ちの俺様は、暗黙の型に従っていないのですげー気持ち悪いぜwww
911 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 02:27:41 ] >>908 数学的にチューニングすべきだが、提示された式のとおりに作った。PROGRAMは改行多杉になるので省略 integer function factorial(n) implicit none integer i, n i = n factorial = 1 do while(i .gt. 0) factorial = factorial * i i = i - 1; end do end integer function permutation(n, r) implicit none integer n, r, i i = 1 permutation = 1; do while(i .le. r) permutation = permutation * (n - i + 1) i = i + 1 end do end integer function combination(n, r) integer n, r, factorial, permutation combination = permutation(n, r) / factorial(r) end
912 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:48:40 ] 908の人気に嫉妬
913 名前:デフォルトの名無しさん [2010/02/10(水) 08:58:43 ] >>901 >>902 あ、そうなんですか。別に書かなくてもいいってことですね? >>904 >>905 >>906 ありがとうございます。でも、エラーが出て終了するんじゃなくて、 ジョブは走ってるんですけどどこかで止まってるっぽいんですよ。 出力ファイルが計算途中で更新されなくなるんです。 で、どこまで進んでどこでどうなってるか調べたいのでいちいちwrite文挟んでるんですが… tracebackって終了したときしか使えないですよね?
914 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:05:57 ] デバッガー無いのか? アタッチ出来れば楽勝だな。
915 名前:908です。 [2010/02/10(水) 11:57:13 ] みなさん、ありがとうございました!!(泣
916 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:09:07 ] >>913 仰る通り Traceback は異常終了しないとでない。 しかし、望みの機能が存在しないのは、世の中の人がその機能を欲していないということなので がんばってPRINT文をばらまいて解決しなさいw プログラム相談員とか、そういう人に聞くのも、連中の人を小馬鹿にしたような寝言を我慢しないと 駄目だが、有効w
917 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 13:16:13 ] >>916 >連中の人を小馬鹿にしたような寝言を我慢しないと駄目だが ワロタw あの目線はどうにかならんのか
918 名前:デフォルトの名無しさん [2010/02/11(木) 22:18:28 ] ちょっとお聞きしたいのですが、 fortranでguiプログラミングはできないのでしょうか?
919 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:26:53 ] >>918 C用のライブラリのAPIを呼びまくるという形ではできる。