- 1、本文档共106页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Fortran-简明教程-(为非编程专业的同学选读)
注意事項: 副程式的命名應有意義並且不隨意變更,因為副程式可能提供多個程式呼叫使用,甚至由團隊中不同人員叫用;修正時,需修改原程式叫用部分並更新相關文件。 原始檔中,未規定主程式program與副程式subroutine先後順序;但編譯後執行,主程式會被自動執行,副程式則是被動需被叫用才執行。 要返回主程式使用return指令,return可放在副程式中任意位置;使用stop會使主程式也停止。 呼叫端可以是主程式,也可以是副程式。 Fortran 90 進一步支援副程式自己呼叫自己,稱為遞迴。 副程式除傳遞進入的變數外,可以獨立宣告屬於自己的變數,既使變數名稱與主程式相同亦可。 副程式傳遞變數採用傳址呼叫(call by address / call by reference),即傳遞記憶體位置,前例中,value1 和 a 指著相同的記憶體位置。 註:另一種稱「傳值呼叫」,在副程式中傳遞變數也會有獨立的記憶體位置,改變內容不影響呼叫端的變數內容。 Function(自訂函數) 舉例如下: ! 使用者輸入數字 x,計算 x2 - 2x + 1 值 program func_test real x, y ?do while (.ture.)?????? ! 設定為無窮迴圈 ??? read *, x??????????? ! 使用者輸入 x ??? y = f(x)???????????? ! 呼叫 f 函數計算 x2 - 2x + 1 ??? print *, y?????????? ! y = f(x)、print *, y 兩行可合併為 print *,f(x) ?end do end ------------------------------------------ real function f(x)?? ! 宣告函數 f 傳回的型態為real real x f = x**2 – 2*x + 1 return end 語法: Calling programs (main program, subroutines) function name[([actual argument list])] -------------------------------------------------- Called programs (functions) [type] FUNCTION func. name[([dummy argument list])] END [FUNCTION [func. name]] (Fortran 77只用END) -------------------------------------------------- Passed by address: if an actual argument is a variable name, array name, array element or a substring Passed by value: if the actual argument is any other expression (including a constant) 注意事項: 函數型態的宣告可以寫在函數的最開頭,如??? real function f(x)或是放在變數宣告區塊,如??? function f(x)??? real f, x 呼叫端可將函數名稱做 EXTERNAL 宣告,表示該名稱不是變數,而是函數名稱。當函數名稱做為變數傳遞時,不可省略。 叫用時不需使用 CALL 指令,直接寫出[名稱]即可,如 ? print *, f(x) ? a = f(1.0) + f(2.0) ? b = f( f(1.0) ) 傳遞變數若非運算式或常數,則採傳址呼叫,但在function中,一般不會去改變該變數的內容,這是一個不成文的習慣。若要改變傳入變數的內容,請改用subroutine。 Statement Function 若函數只包含一個運算式,又只在同一個主程式或函式中被使用,可以使用 statement function 的寫法,在 Function 中的例子變成: program func_test real x, f f(x) = x**2 – 2*x + 1? ! 直接定義函數 do while (.ture) read *, x????????????? ! 使用者輸入 x print *, f(x)????????? ! 呼叫 f 函數計算 x2 - 2x + 1,並輸出 end do end 語法: [type]
您可能关注的文档
- 840D-数据备份.ppt
- 9-交换VLAN-TRUNK-VTP.ppt
- 9-录音报道.ppt
- 8课美丽的颜色-(PPT).ppt
- 9-动漫亮相.ppt
- 9.4移动性管理.ppt
- 9-三峡-课件.ppt
- 9、第九课:VLAN概念及实现.ppt
- 9、证信办---证 券期货经营机构信息系统备份能力标准解读.ppt
- a sp和NET网页基础语法.ppt
- 25上半年2期套题班-行政职业能力测验(八).docx
- 公考讲义-2025年1月时政汇总.pdf
- 2025年省考逻辑填空1000 高频实词积累+刷题早读课 讲义.pdf
- 25上半年2期套题班-行政职业能力测验(九).docx
- 2025四川事业编FB综合岗考试-综合能力测试讲义-主观题基础,案例分析题,公文写作及文章写作题.pdf
- 25上半年2期套题班-行政职业能力测验(五).docx
- 2025申论多省联考刷题课真题资料-2025国考执法课程.doc
- 2025申论多省联考刷题课真题资料-2024江西执法课程.doc
- 25上半年2期套题班-行政职业能力测验(十).docx
- 2025申论多省联考刷题课真题资料-2024福建县乡课程.doc
文档评论(0)