重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (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が出力されるということだけですね。
    • good
    • 0
この回答へのお礼

ありがとうございました^^助かりました^^

お礼日時:2009/09/17 17:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!