陪他一起來的同學很感嘆,學習「福傳」會讓別人恥笑,還是學習像c語言這樣的東西吧!
如果,您同意他的看法,也沒錯,因為,FORTRAN不但是古老而且是很保守的語言。
但是,一但被FORTRAN拿來用的功能,就會千古流傳。
接下來,開始介紹今天的課程動機:
有一天,另外一個部門的人跑來請我幫忙,有一批資料雖然只有三個欄位x,y,z
因為資料太大,不管用什麼軟體都打不開這個資料檔。
問我有什麼方法可以很快的把正負號顛倒(資料有正有負)?
當時正好要去開會,就請一位新進的同仁小陳幫忙處理。
才剛開完會回來,小陳告訴我資料已經處理好了,我很驚訝他怎麼這麼厲害?
以下是他寫的FORTRAN程式:
program change_sign
real(kind=8) :: x,y,z
open(10,file='data.xyz',status='old')
open(20,file='new_data.xyz',status='unknown')
do while (.not.eof(10))
read(10,*)x,y,z
write(20,*)x,y,-z
end do
close(10)
close(20)
stop
end
我一看,好漂亮(本來想說好簡短)的FORTRAN程式!!!
大家不要看這個程式很短喲,當天拿來的資料檔共有4000萬筆! 如果用Execl開啟,只能處理前65536筆資料呢。
為了教學方便,我把這個程式註解了一下:
program change_sign
! 宣告x,y,z變數
real(kind=8) :: x,y,z
! 開啟原資料檔
open(10,file='data.xyz',status='old')
! 開啟輸出資料檔
open(20,file='new_data.xyz',status='unknown')
! 處理10號檔案裡面所有的資料,直到eof(end of file)
do while (.not.eof(10))
read(10,*)x,y,z
write(20,*)x,y,-z
end do
! 關閉資料檔
close(10)
close(20)
stop
end
這個程式的作業流程,請參考 如何用程式解決問題-2
沒有留言:
張貼留言