算法的特徵
一個算法是為解決某一特定類型的問題而制定的一個實現過程,例如,建造一棟樓之前要先在圖紙上繪出其構造圖,算法就是在編寫程式前先整理出的基本思路。它具有下列特徵:
(1)有窮性
一個算法必須在執行有窮步之後結束且每一步都可在有窮時間內完成,不能無限地執行下去。
(2)確定性
算法的每一個步驟都應當是確切定義的,對於每一個過程不能有二義性,將要執行的每個動作必須嚴格而清楚地規定。
(3)可行性
算法中的每一步都應當能有效地運行,也就是說算法應是可行的,並要求最終得到正確的結果。
(4)輸入
一個算法應有零個或多個輸入,輸入是在執行算法時需要從外界取得必要的信息,即算法所需的初始量等信息。
(5)輸出
一個算法有一個或多個輸出,什麼是輸出?輸出就是算法最終所求的結果。
流程圖描述
流程圖是一種傳統的算法表示法,它用一些圖框來代表各種不同性質的操作,用流程線來指示算法的執行方向。由於它直觀形象,易於理解,所以套用廣泛,特別是在語言發展的早期階段,只有通過流程圖才能簡明地表述算法。常見的流程圖符號:
1、起止框:是用來標識算法開始和結束的。
2、輸入、輸出框:用來標識程式輸入或輸出常量、變數或表達式。
3、判斷框:其作用是對一個給定的條件進行判斷,根據給定的條件是否成立來決定如何執行後面的相應操作。
4、處理框:它裡面大多都是表達式,常常用來處理運算或比較式子。
5、流程線:是連線圖框用的,是流程圖中必不可少的組成部分。
6、注釋框:起到解釋說明的作用。
7、連線點:是將畫在不同地方的流程線連線起來。
例子
例:從鍵盤中輸入3個數,分別賦給a、b、c,要求按大小順序把它們列印出來,流程圖如圖所示。
(1)程式開始,按照順序輸入a、b、C的值,然後對比a和b的大小,如果a>b為Y(yes),那么繼續對比a和C的大小,如果a小於c,那么就說明,c最大,a次之,b最小,所以按照從大到小的順序輸出c、a、b,程式結束。
(2)如果a不大於b(a小於等於b),那么就是N(No),所以a與b的值互換。然後判斷a是不是小於c,如果a也確實小於c,那么就說明,c最大,a次之,b最小,所以按照從大到小的順序輸出c、a、b,程式結束。
(3)如果a不小於c(a大於等於c),那么按照N(No)的流程線路執行,判斷b是不是真的小於c,如果b真的小於c,那么執行Y(yes)流程線路,按照從大到小的順序輸出a、c、b,程式結束。
(4)如果b不小於c(b大於等於c),那么按照N(No)的流程線路執行,按照從大到小的順序輸出a、b、C,程式結束。