語言介紹
算法可採用多種描述語言來描述,例如,自然語言、計算機語言或某些偽語言。各種描述語言在對問題的描述能力方面存在一定的差異。例如,自然語言較為靈活,但不夠嚴謹。而計算機語言雖然嚴謹,但由於語法方面的限制,使得靈活性不足。因此,許多教材中採用的是以一種計算機語言為基礎,適當添加某些功能或放寬某些限制而得到的一種類語言。這些類語言既具有計算機語言的嚴謹性,又具有靈活性,同時也容易上機實現,因而被廣泛接受。目前,許多“數據結構”教材採用類PASCAL語言、類C++或類C語言作為算法描述語言。
功能
輸入和輸出語句
(1)輸入:cin>>X;
其功能是讀入從鍵盤輸入的一個數,並賦給相同類型的變數X。其中變數X的類型可以是整型、浮點型、字元型等不同類型。
該語句可用下面的形式同時輸入多個不同類型的變數。
cin>>Xl>>x2>>x3>>x4>>x5;
(2)輸出:cout<<exp;
其功能是將表達式exp的值輸出到螢幕上。其中表達式exp的類型可以是整型、浮點型、字元型等不同類型。
該語句可用下面的形式同時輸出多個不同類型的表達式的值。
cout<<expl《exp2<<exp3<<exp4<<exp5;
最小值和最大值函式min和max
(1)最小值函式:datatype min(datatype expl,datatype exp2,…,datatype expn);
返回表達式expi(i=1,2,…,n)中的最小的值。其中元素類型datatype可以是各種類型。
(2)最大值函式:datatype max(datatype expl,datatype exp2,…,dalatype expn);
返回表達式expi(i=1,2,…,n)中的最大的值。
交換變數的值
x1<= =>x2;交換變數x1和x2的值。
注釋
在雙斜線“//”後面的內容就是注釋的內容。例如,下面語句的右面就是一個注釋。
A[i]=i*i; //此處為注釋內容
程式錯誤輸出提示
error(”exp”);
語句形式
語法形式
算法描述語言的語法不是十分嚴格,它主要由符號與表達式、賦值語句、控制轉移語句、循環語句、其他語句構成。符號命名、數學及邏輯表達式一般與程式書寫一致。賦值用箭頭表示。語句可有標識,標識可以是數字,也可以是具有實際意義的單詞。例如,循環累加可表示為:
loop:n=n+1;
控制轉移語句
無條件轉移語句用“GOTO語句標識”表示。條件轉移語句用“IF C THEN S1ELSE S2”表示,其中C、S1和s2可以是一個邏輯表達式,也可以是用“{”與“}”括起來的語句組。如果C為“真”,則S1被執行;如果C為“假”,則執行S2。
循環語句
循環語句有兩種形式:WHILE語句的形式為“WHILE C DO S”,其中C和S意義同上。如果C為“真”,則執行S,且在每次執行S之後都要重新檢查C;如果C為“假”,控制就轉到緊跟在WHILE後面的語句。FOR語句的形式為“FOR i=initTO limit BY step DO S”,其中i是循環控制變數,init、limit和step都是算術表達式,而S意義同上。每當S被執行一次時,i從初值加步長,直到i>limit為止。
其他語句
在算法描述中,還可能要用到其他一些語句,因為它們都是用最簡明的形式給出的,故很容易知道它們的含義。例如,EXIT語句、RETURN語句、READ(或INPUT)語句和OUTPUT(或PRINT、或WRITE)語句等。