
例えば、
C,B(C),A(B)という3つの関数があるとき、
それぞれをfunctionで書こうとすると、
Bの引数は-(C)
Aの引数は-(B)
でいいのでしょうか!?
Aのルーチンには見た目上Cはでてこないので(CはBに包括されているため)、引数はBだけでいいのでしょうか?(☆部分)
説明不足で伝わっていないといけないので、サンプル載せときます。
☆ function func_A(B) or (B,C)
implicit none
real*8 func_A,func_B,B,val
*
B=funcB(C)
*
val=(1.0d0-B)*3.0d0+B*7.0d0
func_A=val
return
end
-------------------------------------
function func_B(C)
implicit none
real*8 func_B,func_C,C,val
*
C=func_C
*
val=C+5.0d0
func_B=val
return
end
----------------------------------
function func_C
implicit none
real*8 val
*
val=3.0d0
func_C=val
return
end
-------------------------
Aの引数としてCも載せるのが正しい気がしますが、自信がありません。ご意見聞かせて下さい。
No.1ベストアンサー
- 回答日時:
まず、FORTRANの質問であることを明記しましょう。
継続的な質問を繰り返しているようですが、何件かもらっているアドバイスで理解できないなら、書籍を買うか借りるなどして、まずは引数についてしっかりと勉強しましょう。
COMMON文を使わなければ、メインとサブルーチン、関数の間では、引数でやり取りすることになります。
引数は、名前でなく、引数の並び順で対応付けられます。(注1)
例1
<メイン>
X=FUNC1(A,B)
<関数>
FUNCTION FUNC1(C,D)
Y=FUNC2(E)
FUNCTION FUNC2(F)
この場合、メインの変数A、Bは、FUNC1の変数C、Dと対応します。また、FUNC1の変数EとFUNC2の変数Fが対応します。
FUNC1を呼ぶには、メインの変数A、Bに、メイン内で値を入れておく必要があります。
また、FUNC1からFUNC2を呼ぶには、FUNC1内で変数Eに値を入れておく必要があります。
また、引数のない関数は、FUNC() のように、()を指定しないと、FUNCという別の変数として扱われたと記憶しています。
注1
FORTRAN90(?)くらいでは、引数の並び順でなく、名前での対応付けも可能になっているようです。
ちょっと確認したところ、FUNCTION FUNC1(X=A,Y=B) というような指定をするらしいです。
この回答への補足
テキストは一冊持っていますが、読むだけでは理解できないので、自分で少しずつ理解のための簡易プログラムを作って、トライ&エラーで勉強しています。周りに理解している人がおらず、独学でやってます。
アドバイスありがとうございます。
相当助かってます。めげずにがんばります☆
新たに一冊本を借りてきました。
これが、なんと驚き!!
先生に借りた本より断然わかりやすかった☆
『先生がくれたのが一番わかりやすいだろう』という、思い込みから解き放たれました♪
本に、こう書いてありました!!
『何でもやってみること
ーーーまちがえても爆発の危険はない!!
遠慮しないで他人に聞くこと
ーーー本に書いてないことがたくさんある』
このサイトは最高です。日々成長していきたいと思います。
これからもよろしくお願いします。
No.2
- 回答日時:
これでは前の質問同様、まったく理解できていないのだと思われます。
ANo.1の方と同様の意見ですがFORTRANの文法を勉強しましょう!
サンプルで説明すると、
・ func_A() は変数BもCも渡す必要はありません。
Bはfunc_B()の戻り値でfunc_Aにとっては単なる計算の途中結果のため
・同様にfunc_B()は 変数Cを渡す必要はありません。
Cはfunc_C()の戻り値でfunc_Bにとっては単なる計算の途中結果のため
注:但し、func_Aを呼び出すmainで、B,Cの値が必要ならば渡す(もらす)必要があります。
この回答への補足
文法の勉強不足ですか・・
はい、勉強しなおします。
貴重なアドバイスありがとうございます。
mainでB,Cが出てこないなら(必要ないなら)、引数渡しはいらず、必要なら渡さないといけない・・と(ノートにメモしときます♪)
目を通して頂き、ありがとうございます☆
自分の勘違いに気付きました。
引数には当然、Bはいらないですね。
上のプログラムだと、func_Aでの定義に
real*8 Cを追加しないと、エラーになりますよね。
前進できてよかったです。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
一つのアクションで関数を二つ...
-
jQuery|要素だけを変更できま...
-
引数に関して
-
jqueryの変数を関数の外に出す方法
-
関数の中の値を取り出したい
-
JAVAスクリプトで指定時間以降...
-
関数名をテキストから読み込む...
-
javascriptの質問です。関数内...
-
ローカルにあるファイルを検索...
-
window.openでタイトル名の指定
-
<a>タグのテキストを取得
-
ASP.NET MVCでObjectをjsに渡す
-
翌月を取得するGASが分かりません
-
ASP+アクセスでのSQLコメントに...
-
○歳△ヶ月と×日を計算してくれる...
-
同じIDで定義した要素の配列を...
-
C# 演算 奇数と偶数 表現の仕方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
クリックすると上に開くアコー...
-
関数でy=g(x)のgとは何の略です...
-
ページ内に複数表がある場合のT...
-
jQueryの :not() .not() が有効...
-
関数名をテキストから読み込む...
-
jqueryの変数を関数の外に出す方法
-
javascript(jQuery)でセル内...
-
XMLHttpRequestでキャッシュを...
-
要素名がスペースを含む場合のj...
-
jQueryの"return false"の役割...
-
処理前の「お待ちください」
-
[jQuery] クリックで連番関数を...
-
ajax反映後のjqueryが動かない
-
jQueryにて、.toggle()でアニメ...
-
Tabキーのキャンセル
-
XMLHttpRequestオブジェクトが...
-
JScriptの問題です。添削お願い...
-
jquery 複数のメソッド
おすすめ情報