Re: [問題] 副程式的寫法與檔案寫入

看板Fortran作者 (Laa)時間15年前 (2009/06/12 20:22), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/5 (看更多)
※ 引述《BREAKBEAT (幾何科技)》之銘言: : 請問副程式(計畫)以CALL的方式來寫的話 : 大約架構是要如何寫?是否能提供例題說明 : 還有就是輸入是open(10,file='input.dat',statvs='123')這種的 : 它是什麼原理?statvs是代表什麼? : 要開啟的檔案如何編寫? : 以上有待高手解惑 感謝 先說明open的部分 open(10,file='input.dat',status='unknown') ^^^^^^ 這裡應該是status 首先第一個10,是把這行open指定的檔案給定一個編號 如果要對這檔案做讀、寫、查詢、改變檔案中目前的位置 就直接用這編號去指定 例如: 如果要把字串"hello"寫入到檔案中,指令如下 write(10,*)"hello" 如果要把變數寫入到檔案 write(10,*)變數名稱 第二個 file ,是指定要開啟的檔案名稱 檔案名稱可以是字串,也可以是變數 如果是字串,在字串的左右要加引號 如果是變數,變數的形態要為字串變數,左右不用加引號 例如: 檔案名稱是字串 open(10,file='test,txt') 檔案名稱是變數 character*50 filename !宣告字串變數 filename='test.txt' open(10,file=filename) 第三個status,是指定檔案的狀態,有三種 1 已存在 old 2 不存在 new (開新檔案的意思) 3 未知 unknown 在狀態的左右要加引號 例如: open(10,file='test,txt',status='unknown') ------------------------分隔線---------------------- 副程式的用法 首先,一定要有一個主程式 以下舉個例子,從螢幕輸入 再輸出到螢幕 program main_program !主程式開始 integer input read(*,*)input print*, input stop end !主程式結束 現在要加入一個副程式,在副程式裡計算輸入值的平方,再回傳給主程式 program main_program !主程式開始 integer input,answer read(*,*)input call sub_program(input,answer) print*, answer stop end !主程式結束 subroutine sub_program(input,answer) !副程式開始 integer input,answer answer=input**2 return !返回主程式 end !副程式結束 注意黃色字部分,副程式的名稱(subroutine後面的黃色字) 要跟主程式裡call後面的一樣 主程式裡call了副程式,代表主程式將紅色字的變數傳給副程式 副程式開始那行裡的紅色字的變數,就會接收主程式裡傳來的值 傳遞變數時對應的是位置 例如 call sub_program(input,answer) subroutine sub_program(input2,answer2) 雖然副程式主程式給第一個變數名稱的是input,而副程式給第一個變數名稱是input2 在傳遞變數時,副程式的input2值會等於主程式的input值 例如 call sub_program(input,answer) subroutine sub_program(answer,input) call副程式時,第一個變數是input 而副程式接收時,第一個變數是answer 此時,副程式的answer接收到的,是主程式input的值 而副程式的input接收到的是主程式的answer -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.149.127

06/15 10:45, , 1F
感謝
06/15 10:45, 1F
文章代碼(AID): #1ACaY0-G (Fortran)
文章代碼(AID): #1ACaY0-G (Fortran)