- ベストアンサー
fortran77教えてください
fortran77のプログラムについての質問です。 次のプログラムを実行するとどのような結果になるか教えてください REAL A,B,C,D,E,F A=7.0 B=5.0 CALL WASA(A,B,C,D) CALL WASA(C,D,E,F) WRITE(*,*)E,F STOP END SUBROUTINE WASA(P,Q,R,S) REALP,Q,R,S R=P+Q S=P-Q RETURN END
- みんなの回答 (1)
- 専門家の回答
みんなが選んだベストアンサー
> REAL A,B,C,D,E,F 6つの実数型の変数を定義します。 > A=7.0 変数Aに7.0を代入します。 > B=5.0 変数Bに5.0を代入します。 > CALL WASA(A,B,C,D) サブルーチンWASAに処理を移します。このときA=7.0, B=5.0でC, Dは何が入っているかわかりません。サブルーチンWASAの引数はP,Q,R,Sの順に並んでいますから,その並び順に従って変数が対応付けられます。この場合には,PとAは同じもの,QとBは同じもの,RとCは同じもの,SとDは同じものです。従ってサブルーチンWASAに入った直後にはP=7.0に,Q=5.0になっていて,R, Sは何が入っているかわかりません。 > R=P+Q 変数RにP+Qの計算結果を代入します。12.0ですね。 > S=P-Q 変数SにP-Qの計算結果を代入します。2.0ですね。 > RETURN これでサブルーチンWASAの処理を終了して,もとのルーチンに戻ります。戻ったときには先ほどの変数の対応に従って,A=7.0, B=5.0, C=12.0, D=2.0になっています。 > CALL WASA(C,D,E,F) 同じようにサブルーチンWASAに入る直前にはC=12.0, D=2.0, E=不明, F=不明になっていますし,サブルーチンWASAから戻ってきた直後にはC=12.0, D=2.0, E=14.0, F=10.0になっています。 > WRITE(*,*)E,F 変数E, Fの値を出力します。14.0と10.0ですね。 > STOP 処理を停止します。 と言う事で,計算過程は見えませんから,目に見えることは14.0と10.0が出力されるということだけですね。
お礼
ありがとうございました^^助かりました^^