演算法設計進階:偽代碼與流程圖

進階

偽代碼三大結構:順序、IF-THEN-ELSE、WHILE/FOR;流程圖符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷(一入兩出)。

適合:中二資訊及通訊科技 · 單元:演算法與程式 · 建議學習路徑第 4/12 課

學完呢課,你會識:
  • 演算法三種表達:文字步驟、偽代碼、流程圖。
  • 偽代碼三大結構:順序、IF-THEN-ELSE 判斷、FOR/WHILE 循環。
  • 符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷。
文體:原理講解課有聲朗讀

文體小知識:原理講解課先講清楚概念和規則,再用實例演示,令抽象的設計方法變得具體易明。

資訊及通訊科技Information & Communication Technology

§課文原文 Passage

1演算法(Algorithm)是解決問題的一連串清晰步驟。中一學過用文字寫步驟,中二要學兩種更專業的表達方法:偽代碼(Pseudocode)和流程圖(Flowchart)。它們都不是真正的程式,而是動手寫程式之前的設計圖。

2偽代碼用接近英語的結構描述邏輯,三大結構是:順序(SEQUENCE,一步一步做)、判斷(IF-THEN-ELSE,二選一)和循環(WHILE/FOR,重複做)。例如「如果分數大於或等於 50 顯示合格,否則顯示不合格」,寫成 IF score ≥ 50 THEN OUTPUT 「合格」 ELSE OUTPUT 「不合格」,邏輯一目了然,日後翻譯成任何程式語言都容易。

3流程圖用標準符號畫出步驟:圓角矩形代表起點和終點、平行四邊形代表輸入和輸出、矩形代表處理(計算)、菱形代表判斷、箭嘴表示流程方向。菱形判斷一定有一入兩出(是/否兩條出路),這是考試最常考的一點。

4循環在流程圖中用「返回箭嘴」表示:例如逐個輸入 30 位同學的分數,每輸入一個就累加,然後在菱形判斷「是否已輸入 30 個?」不是就沿箭嘴返回繼續輸入。先畫好流程圖再寫程式,可以少走很多回頭路。

1重點摘要 Summary

偽代碼三大結構:順序、IF-THEN-ELSE、WHILE/FOR;流程圖符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷(一入兩出)。

2生字卡 Vocabulary

A
Algorithm演算法

解決問題的一連串清晰、有限、可執行的步驟。

P
Pseudocode偽代碼

用接近英語的結構描述程式邏輯的方法,不是真正可執行的程式。

F
Flowchart流程圖

用標準符號和箭嘴把演算法步驟畫出來的圖。

T
Terminal (rounded rectangle)起終點符號

圓角矩形,代表流程圖的起點(Start)和終點(End)。

P
Parallelogram平行四邊形

流程圖中代表輸入(INPUT)和輸出(OUTPUT)的符號。

P
Process box處理框

矩形,代表計算或處理步驟,例如 sum ← a + b。

D
Decision diamond判斷菱形

菱形,代表判斷,一定有一條入路和兩條出路(是/否)。

L
Loop循環

重複執行某段步驟的結構,在流程圖中以返回箭嘴表示。

V
Variable assignment變數指定

把值放入變數,偽代碼常寫作 ←,例如 count ← count + 1。

3逐步講解 Steps

  1. 演算法三種表達法同一個演算法可以用三種方法表達:文字、偽代碼和流程圖。例如「計三科平均分」:用文字要寫三四句,優點是人人看得懂;用偽代碼三行便解決,先輸入三科成績,再令 average 等於三數之和除以三,最後輸出 average;用流程圖則四五個符號講清楚。三種方法表達的是同一個演算法,考試時要按題目要求選擇表達方式,並且能夠在三者之間互相翻譯。
  2. 偽代碼基本寫法偽代碼用接近英語的結構描述邏輯,基本框架是:BEGIN 之後 INPUT a, b,然後 sum ← a + b,OUTPUT sum,最後 END。符號 ← 表示「把右一邊的值放入左一邊的變數」,次序是先算右邊的算式,再把結果存入左邊,例如 sum ← a + b 是先計 a + b,才存入 sum。這個符號與數學的等號不同,它帶有方向;考試常問「sum ← sum + 1 的意思是什麼」,答案是令 sum 的舊值加一之後存回 sum。
  3. IF-THEN-ELSE 判斷判斷結構寫成 IF 條件 THEN 做法 ELSE 另一做法。例如判斷及格:IF mark ≥ 50 THEN OUTPUT「合格」 ELSE OUTPUT「不合格」。要點是兩條路必須涵蓋所有情況:50 或以上走 THEN,而 49.5、49 甚至 0 全部走 ELSE,不能有分數兩邊都不屬於。寫條件時留意邊界,例如「50 分或以上合格」,條件便是 mark ≥ 50 而不是 mark > 50,漏了等號便會把剛好 50 分的同學錯誤判為不合格。
  4. WHILE 循環WHILE 循環適合「只知道條件、不知道次數」的重複。例如 WHILE count < 30 DO(INPUT score;count ← count + 1):只要 count 仍然少於 30,條件成立,程式便繼續輸入分數;count 到達 30 時條件不成立,離開循環。關鍵是循環之內必須有令條件改變的語句,這裡是 count ← count + 1;如果漏掉這句,count 永遠不變,循環便永遠停不下來。考試常問循環執行了多少次,可以用代入數字的方法逐圈追蹤。
  5. FOR 循環已知重複次數時用 FOR 循環:FOR i FROM 1 TO 10 DO OUTPUT i,i 依次取 1 至 10,程式便印出 1 至 10。選擇 FOR 還是 WHILE 的原則:已知次數(例如「印出十個數」、「處理 30 位同學」)用 FOR;只知條件(例如「直到答對為止」、「直到總分超過 100」)用 WHILE。兩者可以互相改寫,但考試要求按題意選擇最合適的一種,並且寫出循環變數的起點、終點和變化。
  6. 流程圖符號對號入座流程圖的五種符號要對號入座:「輸入兩個數」用平行四邊形;「計兩數之和」用矩形;「是否大於 0?」用菱形;開始和結束用圓角矩形;所有步驟之間用箭嘴連接,方向由上至下。記憶口訣:問問題用菱形,做動作用矩形,資料進出用平行四邊形。常見錯誤是把輸入輸出畫成矩形,或者判斷只畫一條出路;畫完之後逐一檢查每個符號的形狀與用途是否相符。
  7. 循環在流程圖中的畫法循環在流程圖中用「返回箭嘴」表示。以輸入 5 個分數並計算總分為例:輸入分數(平行四邊形)之後,用矩形把分數加到總分;菱形問「計完 5 個嗎?」,答案為否時,箭嘴返回輸入步驟繼續;答案為是時,箭嘴通往輸出總分。這個返回箭嘴就是循環的標誌。畫圖前先想清楚循環變數是什麼、什麼時候加一、什麼時候判斷,畫出來的圖才不會出錯。

4圖解 Diagrams

偽代碼 vs 流程圖:同一邏輯兩種寫法偽代碼 pseudocodeINPUT scoreIF score >= 50 THENOUTPUT "合格"ELSEOUTPUT "要加油"流程圖 flowchart開始≥50?顯示結果是否偽代碼=用普通字寫程式邏輯(唔使理語法);流程圖=畫出嚟睇流程寫程式前先寫偽代碼/畫圖——諗清楚邏輯先至落手,事倍功半
圖 1:偽代碼與流程圖

5例題示範 Example

例題:把「輸入兩個數,輸出較大的一個」寫成偽代碼,並指出流程圖需要哪些符號。

  1. 先搭框架:BEGIN 之後 INPUT num1, num2,這一步在流程圖中用平行四邊形表示,因為資料由外面進入。
  2. 中間寫判斷:IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2,判斷在流程圖中用菱形,兩條出路分別標明「是」和「否」。
  3. 最後 END 結束,流程圖中用圓角矩形;輸出的兩句在流程圖中也用平行四邊形。
  4. 檢查邊界情況:當 num1 = num2 時,條件 num1 > num2 不成立,走 ELSE 路線輸出 num2,結果仍然正確,因為兩數相同時輸出任何一個都對。
  5. 答案:偽代碼:BEGIN;INPUT num1, num2;IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2;END。所需符號:圓角矩形(開始和結束)、平行四邊形(輸入和輸出)、菱形(判斷)、矩形(處理)、箭嘴(流程方向)。兩數相同時走 ELSE 路線,輸出結果依然正確。

6常見錯誤 Mistakes

✗ 「菱形判斷只有一條出路。」
✓ 判斷一定有兩條出路(是/否),漏畫一邊流程就斷了。
✗ 「偽代碼要完全跟從 Python 語法,錯一個符號都不行。」
✓ 偽代碼不是真程式,沒有嚴格語法;重點是邏輯清晰、容易翻譯成程式。
✗ 「輸入步驟用矩形就可以。」
✓ 標準符號中輸入/輸出用平行四邊形;矩形只表示計算處理。
✗ 「WHILE 和 FOR 一樣,混用也無所謂。」
✓ 次數已知用 FOR(例如做 10 次);只知條件、不知次數用 WHILE(例如直到答對為止)。
✗ 「演算法步驟可以含糊一點,例如『算一算』。」
✓ 演算法每步必須清晰、有限、可執行;含糊的步驟電腦根本無法跟從。

75 題快測 Quick check

Q1流程圖中菱形代表什麼?A. 處理 B. 判斷 C. 輸入

Q2「輸入一個數字」在流程圖中應該用什麼符號?

Q3把「如果溫度高於 30 度就開冷氣,否則不開」寫成 IF-THEN-ELSE 偽代碼。

Q4已知一個動作要重複 10 次,應該用 WHILE 還是 FOR?為什麼?

Q5循環在流程圖中是怎樣表示的?

8重點回顧 Recap

  • 演算法三種表達:文字步驟、偽代碼、流程圖。
  • 偽代碼三大結構:順序、IF-THEN-ELSE 判斷、FOR/WHILE 循環。
  • 符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷。
  • 菱形判斷必須一入兩出;循環在圖中是「返回箭嘴」。
  • 次數已知用 FOR;只知條件用 WHILE。

同級其他科

同一科其他級別