24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 3185  |  回复: 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的回帖

argo

铁杆木虫 (著名写手)

上善若水


余泽成: 金币+1, 谢谢参与应助!欢迎常来程序语言版! 2012-03-30 14:07:51
如果用全局变量,可以不写在形式参数的地方。
如果用全局变量,function也可以实现多变量返回
居善地,心善渊,与善仁,言善信,正善治,事善能,动善时。
6楼2012-03-25 09:19:55
已阅   回复此楼   关注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

木虫 (著名写手)

【答案】应助回帖

★ ★
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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求化学调剂 +5 wulanna 2026-03-28 5/250 2026-03-29 23:39 by 飞行日记西
[考研] 求调剂 +4 QiMing7 2026-03-25 5/250 2026-03-29 21:10 by 唐沐儿
[考研] 材料科学与工程求调剂 +6 深V宿舍吧 2026-03-29 6/300 2026-03-29 20:51 by 唐沐儿
[考研] 各位老师好,我的一志愿为北京科技大学085601材料专硕 +9 Koxui 2026-03-28 9/450 2026-03-29 20:43 by 无际的草原
[考研] 化学0703 调剂 306分 一志愿211 +7 26要上岸 2026-03-28 7/350 2026-03-29 20:04 by 无际的草原
[考研] 291求调剂 +7 Y-cap 2026-03-29 8/400 2026-03-29 19:53 by klasasda
[考研] 327求调剂 +6 汲亦昊 2026-03-29 6/300 2026-03-29 13:40 by peike
[考研] 070300化学354求调剂 +6 101次希望 2026-03-28 6/300 2026-03-29 12:57 by 无际的草原
[考研] 调剂考研 +3 王杰一 2026-03-29 3/150 2026-03-29 08:09 by fmesaito
[考研] 11408软件工程求调剂 +3 Qiu学ing 2026-03-28 3/150 2026-03-28 21:50 by zhq0425
[考研] 药学105500求调剂 +3 Ssun。。 2026-03-28 3/150 2026-03-28 11:24 by lxf170613
[考研] 0856,材料与化工321分求调剂 +12 大馋小子 2026-03-27 13/650 2026-03-28 10:56 by self2008
[考研] 352分 化工与材料 +5 海纳百川Ly 2026-03-27 5/250 2026-03-28 03:39 by fmesaito
[考研] 274求调剂 +17 顾九笙要谦虚 2026-03-24 23/1150 2026-03-27 15:16 by caszguilin
[考研] 考研化学308分求调剂 +10 你好明天你好 2026-03-23 12/600 2026-03-27 14:43 by shangxh
[考研] 求调剂323材料与化工 +7 1124361 2026-03-24 7/350 2026-03-27 10:22 by wangjy2002
[考研] 材料科学与工程 317求调剂 +4 JKSOIID 2026-03-26 4/200 2026-03-26 15:58 by 不吃魚的貓
[考研] 300分,材料,求调剂,英一数二 +5 超赞的 2026-03-24 5/250 2026-03-24 21:07 by 星空星月
[考研] 材料/农业专业,07/08开头均可,过线就行 +3 呵唔哦豁 2026-03-23 4/200 2026-03-23 22:30 by 汪!?!
[考研] 269求调剂 +4 我想读研11 2026-03-23 4/200 2026-03-23 21:25 by pswait
信息提示
请填处理意见