一、偽代碼是什么?
偽代碼(Pseudocode)是一種算法描述語言。使用偽代碼的目的是為了使被描述的算法可以容易地以任何一種編程語言(C, Java, Pascal)實現。因此,偽代碼必須結構清晰,代碼簡單,可讀性好,並且類似自然語言。
偽代碼的優點
-
提高任何方法的可讀性。這是開始實現算法的最佳方法之一。
-
充當程序與算法或流程圖之間的橋梁。也可以作為一個粗略的文檔,因此當寫出偽代碼時,可以很容易地理解一個開發人員的程序。在行業中,文檔是必不可少的。這就是證明偽代碼至關重要的地方。
-
偽代碼的主要目標是解釋程序的每一行應該做什么,從而使程序員更容易構建代碼構建階段。
二、偽代碼的語法規則
- 在偽代碼中,每一條指令占一行(else if 例外),指令后不跟任何符號;
- “縮進”表示程序中的分支程序結構(同一模塊的語句有相同的縮進量,次一級模塊的語句相對與其父級模塊的語句縮進);
- 通常每個算法開始時都要描述它的輸入和輸出,而且算法中的每一行都給編上行號,在解釋算法的過程中會經常使用算法步驟中的行號來指代算法的步驟;
- 每一行可以加上編號(也可不加)。
1.變量的聲明
算法中出現的數組、變量可以是以下類型:整數、實數、字符、字符串或指針。定義變量的語句不用寫出來,但必須在注釋中給出。
2.指令的表示
在算法中的某些指令或子任務可以用文字來敘述,例如,”設x是A中的最大項”,這里A是一個數組;或者”將x插入L中”,這里L是一個鏈表。這樣做的目的是為了避免因那些與主要問題無關的細節使算法本身雜亂無章。
3.表達式
算術表達式可以使用通常的算術運算符(+,-,*,/,以及表示冪的^)。邏輯表達式可以使用關系運算符 = 、≠、<、>、≤ 和 ≥,以及邏輯運算符與(and)、或(or)、非(not)。
4.賦值語句
賦值語句是如下形式的語句:a←b 。
這里a是變量、數組項,b是算術表達式、邏輯表達式或指針表達式。語句的含義是將b的值賦給a。
變量交換:若a和b都是變量、數組項,那么記號a<->b 表示a和b的內容進行交換。
5.goto語句
goto語句具有形式:
goto label(goto標號)
它將導致轉向具有指定標號的語句。
6.分支結構
條件語句:
if i=10
then xxxx
else xxxx //else 和 then 要對齊
//或者
if i=10
then xxxx //if 后面必定跟上then,else后面不用跟then
elseif i=9 //elseif 要連在一起寫
then xxxx
yyyy
else xxxx //else 跟在 elseif 的 then 對齊
7.循環結構
有兩種循環指令:while和for。
while語句的形式是:
while time<10
do xxxxx //while后面必定要緊跟縮進的do
xxxxx
end
for語句的形式是:
for var init to limit by incr
do s
end
這里var是變量,init、limit和incr都是算術表達式,而s是由一個或多個語句組成的語句串。初始時,var被賦予init的值。假若incr≥0,則只要var≤limit,就執行s並且將incr加到var上。(假若incr<0,則只要var≥limit,就執行s並且將incr加到var上)。incr的符號不能由s來該改變。
8.程序的結束
exit語句可以在通常的結束條件滿足之前,被用來結束while循環或者for循環的執行。exit導致轉向到緊接在包含exit的(最內層)while或者for循環后面的一個語句。
return用來指出一個算法執行的終點;如果算法在最后一條指令之后結束,它通常是被省略的;它被用得最多的場合是檢測到不合需要的條件時。return的后面可以緊接被括在引號的信息。
9.注釋風格
算法中的注釋被括在 /* */ 之中。
10.函數的編寫
函數的偽代碼格式例子為:search(A,name), 參數類型可以不給出,但必須在注釋中說明。
三、偽代碼實例
偽代碼:
x ← 0
y ← 0
z ← 0
while x < N
do x ← x + 1
y ← x + y
for t ← 0 to 10
do z ← ( z + x * y ) / 100
repeat
y ← y + 1
z ← z - y
until z < 0
z ← x * y
y ← y / 2
正常的C語言代碼:
x = y = z = 0;
while( z < N )
{
x ++;
y += x;
for( t = 0; t < 10; t++ )
{
z = ( z + x * y ) / 100;
do
{
y ++;
z -= y;
} while( z >= 0 );
}
z = x * y;
}
y /= 2;
參考:
