算法與流程圖

基礎

算法是解決問題的有限明確步驟序列;流程圖以起端終端、輸入輸出、處理、判斷與流程線五類符號把算法畫成圖,偽代碼則以接近日常語言的方式寫出,兩者可互相轉換。

適合:中五資訊及通訊科技 · 單元:編程概念 · 建議學習路徑第 4/6 課

學完呢課,你會識:
  • 算法是解決問題的有限明確步驟,具輸入、輸出、明確、有限、可行五項特性。
  • 流程圖五類符號:圓角框起終、平行四邊形輸入輸出、矩形處理、菱形判斷、箭嘴流程線。
  • 順序、判斷、循環由同一套符號組合表達;判斷出口必須標明是與否。
文體:科技知識說明文有聲朗讀

文體小知識:科技知識說明文——講解算法的意義與特性,重點訓練流程圖符號的辨認與流程圖、偽代碼之間的互相轉換。

資訊及通訊科技Information & Communication Technology
讀呢課前,你應該識: 網頁編寫基礎

§課文原文 Passage

1算法是解決特定問題的一連串明確步驟:按次序執行每一步,便能由已知的輸入得出所需的輸出。食譜、組裝說明書其實都是算法的日常版本。在電腦科學中,算法先於程式:想清楚步驟,再用任何程式語言表達,這個次序不能倒過來。

2嚴謹的算法具備五項特性:有零個或以上的輸入;至少產生一個輸出;每個步驟含義明確,不會模稜兩可;步驟數目有限,經過有限次執行後必定結束;每一步都切實可行,能夠付諸執行。缺一便不算合格的算法。

3流程圖是算法的圖形表示,採用約定的符號:圓角框表示起端與終端;平行四邊形表示輸入與輸出;矩形表示處理,例如賦值與計算;菱形表示判斷,按條件成立與否選擇不同路徑;帶箭嘴的流程線連接各符號,指明執行次序。

4把算法畫成流程圖有兩大好處:一是邏輯一目了然,判斷與循環的位置清楚可見,方便檢查錯誤;二是便於溝通,不懂任何程式語言的人也能看懂流程,故設計文件與考試題目常用流程圖表達算法。

5偽代碼是算法的文字表示,以接近日常語言加上簡單關鍵詞寫出步驟,例如 INPUT、OUTPUT、IF、WHILE,毋須理會任何程式語言的嚴格語法。同一算法可以畫成流程圖,也可以寫成偽代碼,兩者結構一一對應,互相轉換是文憑試的常考題。

1重點摘要 Summary

算法是解決問題的有限明確步驟序列;流程圖以起端終端、輸入輸出、處理、判斷與流程線五類符號把算法畫成圖,偽代碼則以接近日常語言的方式寫出,兩者可互相轉換。

2生字卡 Vocabulary

a
algorithm算法

解決特定問題的有限、明確步驟序列,按序執行即可由輸入得出輸出。

f
flowchart流程圖

以約定符號表示算法的圖:包括起端終端、輸入輸出、處理、判斷與流程線。

p
pseudocode偽代碼

以接近日常語言的關鍵詞寫出算法步驟的文字方式,毋須遵從特定程式語言語法。

t
terminal symbol起端/終端符號

流程圖中圓角框形狀的符號,標示算法的開始與結束。

i
input/output symbol輸入/輸出符號

平行四邊形符號,表示資料輸入算法或結果輸出給用戶。

p
process symbol處理符號

矩形符號,表示賦值、計算等處理步驟。

d
decision symbol判斷符號

菱形符號,按條件是否成立,選擇不同的後續路徑,出口一般標明是或否。

f
flow line流程線

帶箭嘴的線段,連接流程圖各符號並指明執行次序與方向。

v
variable變量

儲存資料的具名位置,其值可在執行過程中改變,例如總和與計數器。

c
counter計數器

記錄已發生次數的變量,常用於控制循環次數,例如已輸入的分數個數。

3逐步講解 Steps

  1. 第一步:甚麼是算法算法是解決特定問題的一連串明確步驟,按次序執行便能由輸入得出輸出。它不限於電腦:一份食譜列出備料與烹調步驟,一份組裝說明書列出安裝次序,都是算法的日常版本。在資訊科技中,算法先於程式:先用算法想清楚解題步驟,再選用任何程式語言把它寫成程式;語言會過時,解題思路卻通用。舉個例子:計算三位同學分數的平均,步驟是輸入三個分數、求總和、除以三、輸出結果,這就是一個簡單算法。
  2. 第二步:算法的五項特性嚴謹的算法具備五項特性。輸入:有零個或以上由外界提供的資料;輸出:至少產生一個結果,否則算法沒有意義;明確性:每一步含義唯一,不含糊、不模稜兩可;有限性:步驟有限,必定在有限時間內結束,不會永遠做下去;可行性:每一步都實際做得到。舉個例子:寫下「把總和除以全班人數」若沒有先說明人數如何得知,步驟便不夠明確;而「重複輸入分數直至永遠」違反有限性,都不是合格算法。
  3. 第三步:流程圖的五類符號流程圖以五類約定符號表達算法。圓角框是起端與終端符號,分別標示開始與結束,一圖各有其一;平行四邊形是輸入輸出符號,代表資料進入或結果輸出;矩形是處理符號,承載賦值與計算,例如把總和加一分數;菱形是判斷符號,內寫條件,按成立與否分出是與否兩條出口;流程線帶箭嘴,把符號連成通路,指明次序與方向。舉個例子:答題最常見的失分位是把判斷寫成矩形,或流程線漏畫箭嘴,務必辨清形狀與用途的對應。
  4. 第四步:順序算法的流程圖最基本的算法只有順序結構:由起端出發,逐一經過輸入、處理、輸出,到終端結束。以計算長方形面積為例:起端後先以輸入符號讀入長與寬,再用處理符號把面積設為長乘寬,然後以輸出符號印出面積,最後到達終端;四個符號以流程線依次相連,中間沒有分岔。舉個例子:凡是能按固定次序一次做完的題目,例如攝氏轉華氏、單據計總,流程圖都是一條直線,考生只要按輸入、處理、輸出的次序排列符號即可。
  5. 第五步:含判斷的流程圖現實問題常要按情況選路,這時用判斷符號。以判斷成績是否及格為例:輸入分數後,菱形內寫條件「分數大於或等於五十」,條件成立走「是」出口輸出及格,不成立走「否」出口輸出不及格,兩條路最後匯合到終端。判斷符號的兩條出口必須清楚標明是與否,不可含糊。舉個例子:求兩數中較大值,也是一個判斷:甲大於乙時輸出甲,否則輸出乙;畫圖時先寫條件,再分別完成兩條支路,最後合流,結構便不會亂。
  6. 第六步:循環與累加的畫法需要重複執行的算法用判斷符號構成循環:條件未達成時,流程線走回前面重做,達成才離開。以計全班平均分為例:先輸入人數,把總和與計數器設為零;每次輸入一個分數加入總和,計數器加一;菱形判斷計數器是否少於人數,少於便返回輸入分數那一步,不少則離開循環,以總和除以人數求平均並輸出。舉個例子:三人分數為六十、七十、八十,總和二百一十,平均七十;畫圖時切記先設初值再累加,否則結果無從計起。
  7. 第七步:流程圖與偽代碼的互換偽代碼以文字寫同一算法,常用關鍵詞與符號有固定對應:輸入輸出符號對應 INPUT 與 OUTPUT;處理符號對應賦值敘述,例如總和設為零;判斷符號對應 IF 或 WHILE 條件;循環以 WHILE 條件開始、ENDWHILE 結束。轉換時逐個符號對照,保持次序與條件完全一致。舉個例子:計平均分的流程圖可寫成——輸入人數;總和與計數器設為零;當計數器少於人數,重複輸入分數、累加、計數器加一;離開循環後輸出總和除以人數,步驟與圖形一一對應。

4圖解 Diagrams

流程圖符號:四種磚頭 Flowchart symbols開始/結束處理 process判斷?輸入輸出圓角方形菱形平行四邊形例:計平均分流程開始 → 輸入三科分數 → 相加÷3(處理)→ 顯示結果 → 結束規矩:箭嘴表示行嘅次序;判斷菱形一定要有兩條出路(是/否)畫流程圖=諗清楚先寫 code——程式設計師嘅草稿
圖 1:流程圖符號

5例題示範 Example

轉換題:某流程圖表示計算全班平均分的算法,結構如下——起端;輸入人數 N;把總和 T 與計數器 C 設為零;輸入一個分數 S;把 S 加進 T;把 C 加一;判斷 C 是否少於 N,是則返回輸入分數一步,否則計算 A 等於 T 除以 N;輸出 A;終端。試把此流程圖改寫為偽代碼。

  1. 對照符號與關鍵詞:輸入輸出符號對應 INPUT 與 OUTPUT;矩形處理對應賦值;菱形判斷對應 WHILE 條件。
  2. 寫出開首:先 INPUT N 讀入人數,再把 T 與 C 設為零——累加之前必須初始化,否則結果無從計起。
  3. 寫出循環:WHILE C 少於 N 時重複執行三步——輸入 S、把 S 加進 T、把 C 加一;條件不成立便離開循環,C 每輪加一保證循環有限。
  4. 寫出結尾:離開循環後,以 A 等於 T 除以 N 求平均,OUTPUT A,算法結束。
  5. 答案:偽代碼:INPUT N;T 設為 0;C 設為 0;WHILE C < N 重複:INPUT S;T 設為 T + S;C 設為 C + 1;ENDWHILE;A 設為 T / N;OUTPUT A。要點:變量先初始化;循環條件與流程圖菱形一致;每輪計數器加一,保證算法有限;平均在離開循環後才計算。

6常見錯誤 Mistakes

✗ 把判斷步驟畫成矩形。
✓ 判斷必須用菱形符號,並標明是與否兩條出口;矩形只表示處理步驟。
✗ 流程線不畫箭嘴。
✓ 流程線必須帶箭嘴指明執行方向,否則次序不明,流程圖不合規範。
✗ 用總和變量累加之前,忘記把它設為零。
✓ 累加前必須初始化:把總和與計數器設為零,否則起點不明,結果錯誤。
✗ 循環條件寫成計數器大於人數才繼續輸入。
✓ 計算全班平均時,條件應為計數器少於人數便繼續;方向寫反會令循環一次也不執行。
✗ 在循環之內才計算平均並輸出。
✓ 平均須在離開循環、取得完整總和之後才計算;在循環內輸出會得到多個錯誤中間值。

75 題快測 Quick check

Q1流程圖中,菱形符號代表甚麼?

Q2把一個分數加入總和,應使用哪類符號?

Q3全班六人分數總和為四百零二,平均分是多少?

Q4算法的有限性指甚麼?

Q5偽代碼中,WHILE 與 ENDWHILE 對應流程圖的哪個部分?

8重點回顧 Recap

  • 算法是解決問題的有限明確步驟,具輸入、輸出、明確、有限、可行五項特性。
  • 流程圖五類符號:圓角框起終、平行四邊形輸入輸出、矩形處理、菱形判斷、箭嘴流程線。
  • 順序、判斷、循環由同一套符號組合表達;判斷出口必須標明是與否。
  • 累加之前先初始化:總和與計數器設為零,循環變量每輪更新。
  • 偽代碼與流程圖一一對應:INPUT/OUTPUT 對輸入輸出符號,WHILE 對判斷循環。

同級其他科

同一科其他級別