You are on page 1of 5

1 指定敘述

1.1 數值常數
[1] 數值常數是有定值之數,由⼀個或數個數值字元所組,有時也包括⼩數點和正負號。不帶⼩數點
的稱為整數,反之稱為實數。根據數值常數最高位數(最左位數)前的正負號可以判斷是正數或
負數。若為負號則代表負數,如果是正號或不帶任何符號則代表正數。數值常數絕不容許逗點的
出現。
[2] 在FORTRAN語言中將數值常數分為多種型態,諸如整常數及實常數等。這兩種類型在計算機記
憶體中表示的方式不同,所以編譯代數式時應⼩心選用正確型態的常數。
[3] 整常數 = 任⼀數除正負號外不帶⼩數點及其他符號者稱為整常數(即整數),它是由數值
字元0到9所組成。整數又稱定點常數,因⼩數點必在最右位數之後而並未表出
。負號必須寫在常數之前,逗號與特殊符號不允許出現。
[4] 實常數 = 帶⼩數點之常數是實常數(即實數),又稱浮點常數,以表示⼩數點可以放在常
數中的任何位置。實數由於能表示出⼩數部分,常用來當作度量值以達到所需
的大⼩及精確度。在計算機字組中,實數是以科學符號表示,即把實數轉換成
科學符號的形式,其中指數代表⼩數點必須移動的位數。實數不允許逗號出現
,⼩數點只能有1個,負號必須在常數前。

1.2 變數名稱
[1] 數值常數代表的是不變量,而為了存取可變量,我們使用變數名稱來代表可變量。所謂變數名稱
就是記憶欄位的標記,而該欄位的內容是可變的。計算機以變數名稱來存取記憶欄位的方式正如
同郵差以街道號碼來找信箱的位置。因為每⼀個記憶欄位的變數名稱都是計算機⾃動指定的,所
以每⼀個變數名稱只能存取⼀個既定的記憶欄位。存取記憶欄位使我們能使用其數值計算,改變
其值,拷貝其值到報表紙上。變數區分為整變數和實變數。整變數只能代表整變量,實變數只能
代表實變量。可以用兩種方式來宣告變數名稱的型態:隱示宣告和外顯宣告。
[2] 變數名稱的符號組合規則
a. 由1至6個數字或字⺟符號組成(A到Z及0到9),其他的符號都不允許。所以變數名稱可能只
是⼀個字⺟,也可能是由字⺟和數字(二者各數和不大於6)的任意組合。
b. 第⼀個符號必須是字⺟,剩下的就無此限制。
[3] 隱式宣告 = 隱式型態直接可由變數名稱觀察得知,即如果變數名稱之字首為I、J、K、L、
M、N,且其餘5個字元為字⺟或數字時,則此變數即代表整數資料。
[4] 外顯宣告 = 外顯型態是經過特殊宣告而將某變數定為實變數或整變數者。FORTRAN中有⼀
個型態宣告敘述,此敘述專為宣告變數型態。經過宣告的變數即不再以字首決
定其型態。
[5] 外顯宣告之格式
格式:
INTEGER LIST
REAL LIST
其中
LIST = 代表⼀個變數名稱或多個變數名稱(以逗點分開)。
說明:
a. 以INTEGER宣告之變數為整數;以REAL宣告之變數為實數。
b. 在INTEGER右邊出現之變數均為整數,縱使該變數的字首不是I、J、K、L、M、N。
c. 勿將隱示型與外顯型變數混為使用。
d. INTEGER和REAL兩宣告敘述是不可執行的敘述,也就是除了在編譯過程中宣告某些變數為
實數或整數外,並不命令計算機執行任何動作,所以他們不是問題邏輯的⼀部分。宣告敘述
放在第⼀個可執行敘述之前。

1.3 指定敘述
[1] 指定敘述 = 將⼀算術運算式之計算結果儲存於某⼀變數。
格式:
變數名稱 = 算術運算式
說明:
a. 等號不是數學中的相等之意而是"存入"左邊變數之意,等號左邊的變數名稱又稱為指定變數
名稱,等號右邊是算術運算式,其計算結果成為變數的值。
[2] 算術運算式 = 可為⼀個常數、⼀個變數、或⼀個代數式。
a. 算術運算子
+ = 加。
- = 減。
* = 乘。
/ = 除。
** = 指數。
b. 函數副程式
總稱 函數。[名稱](引數=>答案)
SQRT = 平方根。
[SQRT](Real => Real)
[DSQRT](Double => Double)
[CSQRT](Complex => Complex)
LOG = ⾃然對數。
[ALOG](Real => Real)
[DLOG](Double => Double)
[CLOG](Complex => Complex)
LOG10 = 常用對數。
[ALOG10](Real => Real)
[DLOG10](Double => Double)
EXP = 指數。
[EXP](Real => Real)
[DEXP](Double => Double)
[CEXP](Complex => Complex)
SIN = 正弦函數。
[SIN](Real => Real)
[DSIN](Double => Double)
[CSIN](Complex => Complex)
COS = 餘弦函數。
[COS](Real => Real)
[DCOS](Double => Double)
[CCOS](Complex => Complex)
TAN = 正切函數。
[TAN](Real => Real)
[DTAN](Double => Double)
ASIN = 反正弦函數。
[ASIN](Real => Real)
[DASIN](Double => Double)
ACOS = 反餘弦函數。
[ACOS](Real => Real)
[DACOS](Double => Double)
ATAN = 反正切函數。
[ATAN](Real => Real)
[DATAN](Double => Double)
ATAN2 = 反正切函數。
[ATAN2](Real => Real)
[DATAN2](Double => Double)
SINH = 雙曲線正弦函數。
[SINH](Real => Real)
[DSINH](Double => Double)
COSH = 雙曲線餘弦函數。
[COSH](Real => Real)
[DCOSH](Double => Double)
TANH = 雙曲線正切函數。
[TANH](Real => Real)
[DTANH](Double => Double)
ABS = 絕對值。
[ABS](Real => Real)
[DABS](Double => Double)
[CABS](Complex => Real)
[IABS](Integer => Integer)
INT = 截割函數。
[INT](Real => Integer)
[IDINT](Double => Integer)
FLOAT = 浮點函數(變換整數引數為實數)。
[FLOAT](Integer => Real)
DFLOAT = 倍準浮點函數(變換整數引數為倍準)。
[DFLOT](Interger => Double)
DBLE = 轉換成倍準。
[DBLE](Real => Double)
[DFLOT](Integer => Double)
MAX = 最大值(求引數列的最大值;引數列至少含二個引數)。
[AMAX1](Real => Real)
[DMAX1](Double => Double)
[MAX0](Integer => Integer)
MAX1 = 最大值(求引數列的最大值;引數列至少含二個引數)。
[MAX1](Real => Integer)
AMAX0 = 最大值(求引數列的最大值;引數列至少含二個引數)。
[AMAX0](Integer => Real)
MIN = 最⼩值(求引數列的最⼩值;引數列至少含二個引數)。
[AMIN1](Real => Real)
[DMIN1](Double => Double)
[IMIN0](Integer => Integer)
MIN1 = 最⼩值(求引數列的最⼩值;引數列至少含二個引數)。
[MIN1](Real => Integer)
AMIN0 = 最⼩值(求引數列的最⼩值;引數列至少含二個引數)。
[AMIN0](Integer => Real)
*SQRT、DSQRT之引數必須大於或等於0。
*CSQRT結果為主值,其實部必須大於或等於0。當實部等於0,虛部要大於或等於0。
*ALOG、DLOG、ALOG10、DLOG10的引數必須大於0。CLOG的引數不可以為(0.,0.)。
*SIN、DSIN、COS、DCOS、TAN、DTAN的引數必須以弳(radian)為單位。
*ASIN、DASIN、ACOS、DACOS的引數之絕對值要⼩於或等於1。
*ASIN、DASIN、ACOS、DACOS、ATAN、DATAN、ATAN2、DATAN2的結果以弳為單位。
*如果反正切函數(Arc Tan a1/a2)的a2⼩於或等於0,則ATAN2和DATAN2的結果為0或
正數;如果兩個引數都是0,則結果無定義。
*複數(X,Y)的絕對值為⼀個實數值: (X2 + Y2)1/2
*[x]是高斯函數,其值的大⼩是⼩於(或等於)x的最大整數,符號則和x的符號相同。譬如
[5.7]=5,[-5.7]=-5。
[3] 表示算術運算式的規則(把代數式譯成算術運算式時應遵守之規則)
a. 兩運算子不可相鄰,但指數運算子(**)不在此限。如果算術運算式中包含兩個連續的運算子
時,應用括弧分開。
b. 正負號是唯⼀可以當作算術運算式開頭的運算子。
c. 算術運算式中可包含其他算術運算式。此時,諸算術式須加括弧並用運算符號分開。
d. 指數可為整數、實數或變數名稱,也可以是算術運算式。假如是算術運算式則必須加括弧,
而這個式子計算的結果才是真正的指數。
[4] 求算術運算式之值(運算符號執行優先法則)
a. 優先計算所有括弧裡的子式,由最內層子式開始,逐步向最外層進行。
b. 其次,如果有函數副程式時,先求函數副程式的值。同⼀個式子中有多個函數副程式時,由
左到右,先遇到的先處理。
c. 其次,計算指數。
d. 其次,執行乘法和除法。乘除法間的運算次序是由左到右,先遇到的先執行。
e. 最後處理加法和減法。加減法間的運算次序也是由左到右,先出現的先處理。
f. 總結,除了指數外,優先次序相同的運算符號都是由左到右,先出現的先處理。但連續的指
數運算則是由右到左。
1.4 混合指定敘述
指定敘述名稱型態 型態表示
實數 = 整數、實數或混合型
整數 = 整數、實數或混合型
說明:
a. 計算機將整數轉換為實數時,轉換方式為形成科學記號。而計算機將實數轉換為整數時,轉換方式
為將實數之⼩數部分捨去。
b. 混合算術運算式由實數及整數型態的常數與變數組成。
c. 求混合算術運算式之值
計算機⼀次只能處理⼀個運算子。如果⼀個算術式中有二個以上的運算子時,便須根據運算符號執
行優先法則來處理。所謂處理⼀個運算符號是指二個運算元經過運算子作用後,成為⼀個數值常數
。此數值常數的型態將由這二個運算元來決定。假如二者都是整數,則此常數亦是整數;假如二者
都是實數,則此常數亦是實數;但如果這二個運算元並不屬於同⼀種型態時,此常數的型態便由型
態優先次序來決定。整數型和實數型的優先次序如下: 1. 實數型 2. 整數型。
EX: X = 5/2*4.6 與 X = 4.6*5/2 之混合型算術運算式之計算
X = 5/2*4.6 X = 4.6*5/2
根據由左到右運算法則 根據由左到右運算法則
計算機先做除法運算 計算機先做乘法運算
因二運算元 5, 2 皆為整數 因二運算元 4.6, 5 為實數,整數
依型態優先次序做整數除法 依型態優先次序做實數乘法
計算機做整數除法(將⼩數部分捨棄)得 2 將 5 轉換為實數 0.5 * 101
其次,計算機做乘法運算 計算機做實數乘法得 23.0
因二運算元 2, 4.6 為整數,實數 其次,計算機做除法運算
依型態優先次序做實數乘法 因二運算元 23.0, 2 為實數,整數
將 2 轉換為實數 0.2 * 10 1
依型態優先次序做實數除法
計算機做實數乘法得 9.2 將 2 轉換為實數 0.2 * 101
計算機做實數除法得 11.5
1.5 循序的指定敘述
運算式中所有變數都必須在計算機處理這個運算式之前即已確定內容。故對於指定敘述
X = A + 5.75 中,只有當 A 定義之後才有意義。在此敘述之前記憶空間 A 的內容已設定。通常
設定的方式有二種:(1) 在前⼀個指定敘述中,A 是指定變數名稱,(2) 讀入 A 值。

You might also like