Re: [問題] 副程式的寫法與檔案寫入
※ 引述《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
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章