24小时热门版块排行榜    

查看: 3164  |  回复: 13
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

songjunann

铜虫 (小有名气)

[求助] Fortran的subroutine和function有什么区别,是在于输入输出的特点吗?

Fortran的subroutine和function有什么区别,我看到有的网页上说是在于输入输出的特点: 即function只能允许一个输出,而subroutine可以有很多输出?是这样吗?

比如一个函数

function   monsim(x,...)

.....

是不是输出变量只能是monisim?
如果x值有变化吗?即输入的x是一个值,但是function里面有关于x的赋值表达式,使得x值发生变化,那么是否 在主程序中call  monsim(x,...),会同时读到新的x值
和monsim的值? (因为我看很多function里面都把输出的结果变量名设成和函数一样的名字)。 请多多指教,谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★
zzy870720z: 金币+2, 专家考核, 谢谢指教 2012-03-25 14:59:37
你可以自己做个测试。呵呵。

如何判断参数是否为输出性质的变量,这个从subroutine 的参数列表()里面是看不出来的,除非在给它们取名字时就标识清楚。

Subroutine里面有赋值的变量确实都会输出!

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
4楼2012-03-25 05:34:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 14 个回答

lurencyj

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2012-03-25 01:41:48
songjunann: 金币+20, ★★★很有帮助, 谢谢 2012-03-28 12:29:30
余泽成: 专家考核 2012-03-30 14:07:28
function接受多个参数,返回一个计算结果。调用的时候,可以直接插入表达式,比如x = AVRAGE(a,b,c)。function AVRAGE 的构造如下:
CODE:
REAL FUNCTION AVRAGE(X,Y,Z)
     REAL X,Y,Z,SUM
     SUM = X + Y + Z
     AVRAGE = SUM /3.0
     RETURN
END

Subroutine适用在当需要返回多个变量数值的情形,但是,调用subroutine的时候,只能用call语句,不能像function那样直接插入表达式。 下面这个subroutine是对A,B,C的求和,以及求和的平方。用call语句调用后,位于sum和sumsq的变量将被改变数值:
CODE:
SUBROUTINE CALC(A,B,C, SUM,SUMSQ)
           REAL A,B,C,SUM,SUMSQ
           SUM = A + B + C
           SUMSQ = SUM **2
           RETURN
END

很女子很弓虽大
2楼2012-03-25 00:32:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

songjunann

铜虫 (小有名气)

引用回帖:
2楼: Originally posted by lurencyj at 2012-03-25 00:32:14:
function接受多个参数,返回一个计算结果。调用的时候,可以直接插入表达式,比如x = AVRAGE(a,b,c)。function AVRAGE 的构造如下:

REAL FUNCTION AVRAGE(X,Y,Z)
     REAL X,Y,Z,SUM
     SUM = X + Y + Z ...

恩,谢谢,我明白了,还有个小问题,
关于subroutine的程序,接受的参数以及返回的变量的数值,是不是都要写在
()里,如 subroutine  calc(A,B,C,sum,...), 我们要判断输入参数,和输出变量都可从(A,B,C,sum,....)里面去判断,因为有时候看别人的程序,不知道输出的是那些,不可能子程序里面有赋值的变量都会输出,是吧?
3楼2012-03-25 03:05:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lurencyj

木虫 (著名写手)

【答案】应助回帖

楼主应该找本教材确认一下

[ 发自手机版 http://muchong.com/3g ]
很女子很弓虽大
5楼2012-03-25 05:36:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 材料工程(专)一志愿985 初试335求调剂 +3 hiloiy 2026-03-17 4/200 2026-03-21 03:04 by JourneyLucky
[考研] 一志愿中国石油大学(华东) 本科齐鲁工业大学 +3 石能伟 2026-03-17 3/150 2026-03-21 02:22 by JourneyLucky
[考研] 280求调剂 +7 咕噜晓晓 2026-03-18 8/400 2026-03-21 01:27 by JourneyLucky
[考研] 一志愿华南师大 070300(化学)304分求调剂 +3 0703武芊慧雪304 2026-03-18 3/150 2026-03-21 00:48 by JourneyLucky
[考研] 304求调剂 +6 曼殊2266 2026-03-18 6/300 2026-03-21 00:32 by JourneyLucky
[考研] 材料专业求调剂 +6 hanamiko 2026-03-18 6/300 2026-03-21 00:24 by JourneyLucky
[考研] 22408 344分 求调剂 一志愿 华电计算机技术 +4 solanXXX 2026-03-20 4/200 2026-03-20 23:49 by alg094825
[考研] 304求调剂 +7 司空. 2026-03-18 7/350 2026-03-20 23:08 by JourneyLucky
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +4 晨昏线与星海 2026-03-19 4/200 2026-03-20 22:15 by JourneyLucky
[考研] 290求调剂 +7 ^O^乜 2026-03-19 7/350 2026-03-20 21:43 by JourneyLucky
[考研] 求调剂一志愿南京航空航天大学289分 +3 @taotao 2026-03-19 3/150 2026-03-20 21:34 by JourneyLucky
[考研] 085410人工智能专硕317求调剂(0854都可以) +4 xbxudjdn 2026-03-18 4/200 2026-03-20 09:07 by 不168
[考研] 320求调剂0856 +3 不想起名字112 2026-03-19 3/150 2026-03-19 22:53 by 学员8dgXkO
[考研] 311求调剂 +11 冬十三 2026-03-15 12/600 2026-03-18 14:36 by 星空星月
[考研] 材料专硕306英一数二 +10 z1z2z3879 2026-03-16 13/650 2026-03-18 14:20 by 007_lilei
[考博] 26博士申请 +3 1042136743 2026-03-17 3/150 2026-03-17 23:30 by 轻松不少随
[考研] 11408 一志愿西电,277分求调剂 +3 zhouzhen654 2026-03-16 3/150 2026-03-17 07:03 by laoshidan
[考研] 304求调剂 +3 曼殊2266 2026-03-14 3/150 2026-03-16 16:39 by houyaoxu
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 327求调剂 +6 拾光任染 2026-03-15 11/550 2026-03-15 22:47 by 拾光任染
信息提示
请填处理意见