自然語言演算法描述
① 常用的演算法表示形式有哪些
演算法的常用表示方法有三種:
1、使用自然語言描述演算法;
2、使用流程圖描述演算法;
3、使用偽代碼描述演算法。
演算法是指對解決方案的准確、完整的描述,是解決問題的一系列清晰的指令。該演算法代表了描述解決問題的策略和機制的系統方式。也就是說,對於某個標准輸入,可以在有限的時間內獲得所需的輸出。
如果一個演算法有缺陷或不適合某個問題,執行該演算法將無法解決該問題。不同的演算法可能使用不同的時間、空間或效率來完成相同的任務。一個演算法的優劣可以用空間復雜度和時間復雜度來衡量。
② 用自然語言和流程圖表示求解下列各問題的演算法
用自然語言描述演算法:(1)輸入N;(2)將1送入I(I←1);(3)重復執行下面的操作,直至I=N;(4)將2送入K(K←2);(5)重復執行下面操作,直到K=I-1;A.將I除以K的商送入J(J←I/K);B.若J是整數,I增加1並轉向(3);C.否則將K增加1並轉向(5);(6)輸出I,I增加1並轉向(3);(7)結束。根據以上演算法,用QBASIC語言可編寫如下程序:10 INPUT N20 FOR I=1 TO N30 FOR K=2 TO I-140 J=I/K50 IF J=INT(J) THEN GOTO 8060 NEXT K70 PRINT I,80 NEXT I90 END程序中使用了GOTO無條件轉移語句,破壞了程序的結構。尋找另一思路:判斷一個自然數M是不是素數,可用2、3、4……去除M,如果這些數都不能整除M,則M是素數。用結構化流程圖N-S圖描述該演算法。INPUT NFOR M=1 TO N STEP 2 K=INT(SQR(M)) I=2 FLAG=1 DO WHILE (I<=K) AND (FLAG=1) IF M MOD I=0 THEN FLAG=0 I=I+1 LOOP IF FLAG=1 THEN PRINT M,NEXT MEND程序中FLAG是一個「標志變數」,FLAG=1表示M未被任何一個整數整除過。如果在某一次循環中,M能被一個整數I整除,則FLAG就置成0。設置FLAG變數的目的主要是為了避免轉移語句的出現。因為如果沒有設置FLAG變數,在循環執行中,某一次M能被I整除,則要麼繼續執行循環,直到內循環全部執行完畢,要麼用轉移語句直接跳出內循環。顯然,前者是毫無效率地浪費時間,而後者又不符合結構化程序設計的要求。
③ 演算法的三中描述方法中,自然語言,流程圖,程序代碼的優缺點
一、自然語言:
優點:易於理解;
缺點:不能讓計算機執行。
二、流程圖:
優點:自然語言的時(順)序描述,介於自然語言和程序代碼之間;
缺點:不依賴於具體計算機CPU。
三、程序代碼:
優點能讓計算機理解執行,
缺點:需懂專業技能才能編寫,不直觀、錯誤不容易排查。
自然語言主要是指人類使用的語言,匯編語言是一種低級語言,是一種直接面向硬體的語言,C也算是一種高級語言,但是相對VB等就比較低級了,所以一般說是中級語言,別的基本都是高級語言。
(3)自然語言演算法描述擴展閱讀:
例如,一張流程圖能夠成為解釋某個零件的製造工序,甚至組織決策制定程序的方式之一。這些過程的各個階段均用圖形塊表示,不同圖形塊之間以箭頭相連,代表它們在系統內的流動方向。下一步何去何從,要取決於上一步的結果,典型做法是用「是」或「否」的邏輯分支加以判斷。
④ 演算法的描述方式有幾種分別是什麼
描述演算法的方法有多種,常用的有自然語言、結構化流程圖、偽代碼和PAD圖等,其中最普遍的是流程圖,分思法。
流程圖(Flow Chart)使用圖形表示演算法的思路是一種極好的方法,因為千言萬語不如一張圖。流程圖在匯編語言和早期的BASIC語言環境中得到應用。相關的還有一種PAD圖,對PASCAL或C語言都極適用。
(4)自然語言演算法描述擴展閱讀:
演算法可以宏泛的分為三類:
一、有限的,確定性演算法 這類演算法在有限的一段時間內終止。他們可能要花很長時間來執行指定的任務,但仍將在一定的時間內終止。這類演算法得出的結果常取決於輸入值。
二、有限的,非確定演算法 這類演算法在有限的時間內終止。然而,對於一個(或一些)給定的數值,演算法的結果並不是唯一的或確定的。
三、無限的演算法 是那些由於沒有定義終止定義條件,或定義的條件無法由輸入的數據滿足而不終止運行的演算法。通常,無限演算法的產生是由於未能確定的定義終止條件。
⑤ 完成演算法的自然語言描述
#include <stdio.h>main(){ int m, n, r; scanf("%d %d", &m, &n); if(m < n){ r = m; m = n; n = r; } while(true){ r = m - n; if( r == 0) break; if ( r < n){ m = n; n = r; } else { m = r; } } printf("%d", n);} 是這個意思么?
⑥ 這演算法怎麼用自然語言描述。
將十進制數轉換為n(n<=16)進制數演算法:
輸入一個十進制數n_10,輸入進制數n , 建立一個棧,將n_10除n的余數進棧,將n_10除n的商作為n_10,再將n_10除n的余數進棧,將n_10除n的商作為n_10,反復如此,直至商數為0.
最後依次出棧,若站內的值小於10,原樣輸出;若是10,輸出A;若是11,輸出B;若是12,輸出C;若是13,輸出D;若是14,輸出E;若是15,輸出F.
⑦ 什麼叫演算法描述啊
演算法描述(AlgorithmDescription)是指對設計出的演算法,用一種方式進行詳細的描述,以便與人交流。演算法可採用多種描述語言來描述,各種描述語言在對問題的描述能力方面存在一定的差異,可以使用自然語言、偽代碼,也可使用程序流程圖,但描述的結果必須滿足演算法的五個特徵。
演算法可採用多種描述語言來描述,例如,自然語言、計算機語言或某些偽語言。各種描述語言在對問題的描述能力方面存在一定的差異。例如,自然語言較為靈活,但不夠嚴謹。而計算機語言雖然嚴謹,但由於語法方面的限制,使得靈活性不足。
因此,許多教材中採用的是以一種計算機語言為基礎,適當添加某些功能或放寬某些限制而得到的一種類語言。這些類語言既具有計算機語言的嚴謹性,又具有靈活性,同時也容易上機實現,因而被廣泛接受。目前,許多「數據結構」教材採用類PASCAL語言、類C++或類C語言作為演算法描述語言。
(7)自然語言演算法描述擴展閱讀:
演算法的特徵
1、輸入:一個演算法必須有零個或以上輸入量。
2、輸出:一個演算法應有一個或以上輸出量,輸出量是演算法計算的結果。
3、明確性:演算法的描述必須無歧義,以保證演算法的實際執行結果是精確地符合要求或期望,通常要求實際運行結果是確定的。
4、有限性:依據圖靈的定義,一個演算法是能夠被任何圖靈完備系統模擬的一串運算,而圖靈機器只有有限個狀態、有限個輸入符號和有限個轉移函數(指令)。而一些定義更規定演算法必須在有限個步驟內完成任務。
5、有效性:又稱可行性。能夠實現,演算法中描述的操作都是可以通過已經實現的基本運算執行有限次來實現。
⑧ 用自然語言描述:求兩個正整數a和b最大公約數的演算法
輾轉相除法:設兩數為a、b(b<a),求它們最大公約數(a、b)的步驟如下:用b除a,得a=bq.r 1(0≤r).若r1=0,則(a,b)=b;若r1≠0,則再用r1除b,得b=r1q.r2 (0≤r2).若r2=0,則(a,b)=r1,若r2≠0,則繼續用r2除r1,……如此下去,直到能整除為止.其最後一個非零餘數即為(a,b).
————————————--------------------------------------------
輾轉相除法是利用以下性質來確定兩個正整數 a 和 b 的最大公因子的:1.若 r 是 a ÷ b 的余數,則 gcd(a,b) = gcd(b,r) 2.a 和其倍數之最大公因子為 a.另一種寫法是:1.a ÷ b,令r為所得余數(0≤r<b) 若 r = 0,演算法結束;b 即為答案.2.互換:置 a←b,b←r,並返回第一步.
⑨ 演算法的描述可以採用什麼
如下:
1、用自然語言描述演算法
前面關於歐幾里的演算法以及演算法實例的描述,使用的都是自然語言。自然語言是人們日常所用的語言,如漢語、英語、德語等。使用這些語言不用專門訓練,所描述的演算法也通俗易懂。
2、用流程圖描述演算法
在數學課程里,我們學習了用程序框圖來描述演算法。在程序框圖中流程圖是描述演算法的常用工具由一些圖形符號來表示演算法。
3、用偽代碼描述演算法
偽代碼是用介於自然語言和計算機語言之間的文字和符號來描述演算法的工具。它不用圖形符號,因此,書寫方便、格式緊湊,易於理解,便於向計算機程序設計語言過度。
演算法的特徵
輸入:一個演算法必須有零個或以上輸入量。
輸出:一個演算法應有一個或以上輸出量,輸出量是演算法計算的結果。
明確性:演算法的描述必須無歧義,以保證演算法的實際執行結果是精確地符合要求或期望,通常要求實際運行結果是確定的。
有限性:依據圖靈的定義,一個演算法是能夠被任何圖靈完備系統模擬的一串運算,而圖靈機器只有有限個狀態、有限個輸入符號和有限個轉移函數(指令)。而一些定義更規定演算法必須在有限個步驟內完成任務。