運算式

 

現在我們來看看 FORTRAN 如何把數學式子或運算變成程式 ( 即如何在 FORTRAN 之下進行數值運算 ) A+B=C 把 A 的值與 B 的值相加,其結果放到 C 去。在 FORTRAN 語言,指令要寫成

C = A + B

要注意的一點是,FORTRAN 中的等號不是數學恆和式中的等號,是“把右邊的運算結果指定給左邊的變數 ”的意思。

至於 在等號 "=" 右邊的運算, 則與一般的四則運算很像,只是符號上的一不同,以下是數學式與程式的對照表 :

數學 程式
+
-
× *
÷ /
a 平方 A**2
a 開根號 SQRT(A) 或 A**(0.5)
a 的絕對值 |a| ABS(A)
sin(x) SIN(X)

 

其運算的優先順序 則與一般算術規則一 致,是次方最優先,且先乘除後加減。我們可以用括號或套疊的括號來達成各種運算。

FORTRAN 作為專門用於科學及工程運算的語言,它內建了很多數學函數,大家可參考內建函數表,常用的幾個列舉如下:


exp(x) EXP(X)
cos x COS(X)
min{a,b} MIN(A,B)
max{a,b} MAX(A,B)
mod(a,b) MOD(A,B) ( 註:餘值 mod(10,2)=0 mod(10,3)=1 )
Re(C) DBLE(C)
Im(C)
ln x ALOG(X)

http://gcc.gnu.org/onlinedocs/g77_12.html#SEC75

 

請注意 ,一樣的四則運算符號 ( 在除法的部分 ),有分為實數運算及整數運算 之不同,如 5/2 2 而不是 2.5,必需做 5/2.0 (或 5.0/2.0) 才會得到 2.5。由於我們一般比較少會用到 純整數的除法,因此請儘量在表達運算式時 ,使用含有小數點的寫法 ,而不要只用整數。

 

Tip :累加器

由於 FORTRAN中"="不是數學式中的恆等,因此下面的式子是合法的

SUM = SUM + 1.02

它的作用是把 SUM原來的值加上 1.02,再存在 SUM 的變數內,也就是如 同 SUM 的值增加了1.02。

這種 A = A + 1 的型式,我們常會把 A 叫做是累加器,顧名思義它加累加數值時很有用,但要注意一點,就是累加器的變數在位行累加之前一定要先歸零(否則累加便無意義,這與一般計數器的道理一樣。

有人可能會問,為什麼程式在開始執行的時候,在未存入數字之前,其值不是先設為零呢?

原因是 ,如果程式在一開始時要把所有變數 (有可能是很大的變數陣列 )歸零,就需要把相對應於記憶體內貯存這些變數位址的值都寫入零,那 實在太浪費CPU時間了 。很多變數都是要用到的時候,就會被程式寫入一個初始值,或者是銜接先前運算的結果而獲得一個數值,因此一開始把它們寫成全部是零並沒有意義。

正因為前面所述的理由,FORTRAN不會把變數自動設成零,因此在這種像累加器的變數在使用之前,一定自己在寫程式之中把它歸零,其累加的結果才會正確。