王慧蓉
(長治學院 數學系,山西 長治 046011)
C語言是目前世界上使用最廣泛,最流行的計算機編程軟件之一,在計算機中的應用具有很多方面的特點,主要表現在對文字和數據進行有效表達、變量的靈活設置、完善的內存儲器、對關鍵環節的有效處理等方面。
Maple被稱為當今世界最流行的符號軟件之一,它具有強大的交互式工程數學計算功能,具有很強的數據可視化功能,其豐富的函數包能滿足用戶在各方面的需求。它既是計算軟件還是一種值得推廣和被高校學生深入學習并運用于實踐的計算機編程軟件,是一款全方位的數學軟件。
判斷101——200之間有多少個素數,并輸出所有素數。
在C語言中的源程序為:


在Maple中的程序為:


判斷一個數是否是素數,兩種軟件采用的思想都是用一個數去除以2,如果能被2整除則表明這個數是素數,反之不是,并且兩者都采用for循環來進行編程。Maple中的for循環很接近于英語語法,循環體可以是空語句,一條語句或者多條語句,循環體結束的標志也就是整個for循環結束的標志。在循環中初始值和終止值必須是數值型的,也必須是實數。C語言中的for語句是功能強大的構成“當型”循環結構的循環語句,編程不受循環次數是否明確的影響,當然循環結束的條件應該明確。
在C語言中的源程序為:


C語言中運用了if判斷語句和do while判斷語句相結合的方式來解決這一問題。首先用if語句對給定的兩個數進行大小判斷,決定輾轉相除法開始時的順序問題,首先使用while循環語句進行判斷,接著使用do while循環語句,先執行一次循環體語句,然后計算表達式的值。當q的結果不是0時就一直循環,直到q等于0循環結束,此時程序跳轉到下一語句。Maple中使用的是while循環體,首先判斷條件是否為真,若條件為真就執行循環,直到條件不成立循環結束,它的特點是在未知循環次數的情況下可以一直執行循環。兩者一個是先執行后判斷,一個是先判斷后執行,使用的都是直到型循環,但是卻在語句的選擇和使用上有很大不同。
飼養一對兔子,從出生后第三個月起這對兔子每個月都繁殖一對兔子,新生的兔子長到第三個月后也每個月都繁殖一對兔子,假如兔子都不死,以此類推下去,問每個月的兔子總數為多少?
在C語言中,程序源代碼為:

在Maple中程序為:

這是非常有名的Fibonacci數列,兔子的規律為數列:1,1,2,3,5,8,13,21...在C語言與Maple軟件中求解的編程過程,我們看到為了解決這個問題在C語言中用到了for的當型循環語句,運用遞歸的原理,符合條件即循環,i以自增的方式賦新值,每循環一次就打印兩個月的數字,循環兩次就換行,造成了控制每行輸出四個的結果,循環過程一目了然,簡單易懂。但是也容易發現,在這個程序中,要求數值的取值不能太大,這就局限了程序的應用。但是當我們看到Maple語句時發現,似乎語句更簡潔,在Maple中,我們使用了if,else條件語句來實現遞歸,只需要將讀到的的條件依次輸入即可得到結果,設置了兩種條件語句,符合哪一種即執行哪一種,并且由于option remember的設定,在Maple中可以進行大數據的執行,不僅簡潔而且更實用。綜上我們發現在程序編寫復雜程度沒有很大區別的情況下,Maple卻可以進行大數據的處理,更為快捷。
與C語言相同,Maple的過程體也是由賦值語句、條件語句、循環語句組成的,其條件語句也可以進行嵌套;同樣的Maple軟件也提供了for循環和while循環兩種循環語句。編寫Maple程序實際上是比較簡單的,Maple系統中含有數以千計的命令,其中百分之八十自身就是Maple程序,語言的可交互性大大方便了程序的設計與修改,提高了運行效率。
在C語言和Maple軟件的編程中我們還常常會用到遞歸思想,遞歸通常使用在函數的調用上。實現遞歸調用應該滿足以下三個條件:(1)要解決的問題可以拆分為幾個小的問題,但并不因為分解而改變解法,只是計算過程變成了有規律的遞進和返回,這就達到了遞歸的條件;(2)在符合(1)的條件下繼續將原問題分解下去,直到最終分解出來一個已知解的問題,然后開始層層返回,從而達到解決原問題的目的,整體實現了遞歸;(3)如果不加條件,遞歸算法是無止境的,為此一定要有一個明確結束遞歸的條件。
Maple程序之所以更為簡短、運行效率更高,是因為它具有語言的可交互性且含有豐富的功能強大的命令,可以將一些復雜的編碼的任務簡化為一個簡單的命令。
綜上所述兩種語言其實是可以相互轉化的,在很多問題的解決上,兩種語言的出發點都是一致的,分析問題的想法也都一致,經常選用同樣的程序語言進行編程,雖然在復雜程度上有時會有很大差別,但其在本質上是相同的。
總而言之,C語言和Maple在解決經典算法的問題上既有區別又有聯系,它們都能很好的解決實際問題,都是強大的編程軟件。我們不能一概而論的說哪一種軟件更加有優勢,只能說在遇到實際問題時應該酌情考慮優先使用哪一種軟件可以使編程更加簡潔明了,更加具有可讀性。