演算法設計進階:偽代碼與流程圖
進階偽代碼三大結構:順序、IF-THEN-ELSE、WHILE/FOR;流程圖符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷(一入兩出)。
- 演算法三種表達:文字步驟、偽代碼、流程圖。
- 偽代碼三大結構:順序、IF-THEN-ELSE 判斷、FOR/WHILE 循環。
- 符號:圓角矩形=起終點、平行四邊形=輸入輸出、矩形=處理、菱形=判斷。
文體小知識:原理講解課先講清楚概念和規則,再用實例演示,令抽象的設計方法變得具體易明。
§課文原文 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
解決問題的一連串清晰、有限、可執行的步驟。
用接近英語的結構描述程式邏輯的方法,不是真正可執行的程式。
用標準符號和箭嘴把演算法步驟畫出來的圖。
圓角矩形,代表流程圖的起點(Start)和終點(End)。
流程圖中代表輸入(INPUT)和輸出(OUTPUT)的符號。
矩形,代表計算或處理步驟,例如 sum ← a + b。
菱形,代表判斷,一定有一條入路和兩條出路(是/否)。
重複執行某段步驟的結構,在流程圖中以返回箭嘴表示。
把值放入變數,偽代碼常寫作 ←,例如 count ← count + 1。
3逐步講解 Steps
- 演算法三種表達法同一個演算法可以用三種方法表達:文字、偽代碼和流程圖。例如「計三科平均分」:用文字要寫三四句,優點是人人看得懂;用偽代碼三行便解決,先輸入三科成績,再令 average 等於三數之和除以三,最後輸出 average;用流程圖則四五個符號講清楚。三種方法表達的是同一個演算法,考試時要按題目要求選擇表達方式,並且能夠在三者之間互相翻譯。
- 偽代碼基本寫法偽代碼用接近英語的結構描述邏輯,基本框架是:BEGIN 之後 INPUT a, b,然後 sum ← a + b,OUTPUT sum,最後 END。符號 ← 表示「把右一邊的值放入左一邊的變數」,次序是先算右邊的算式,再把結果存入左邊,例如 sum ← a + b 是先計 a + b,才存入 sum。這個符號與數學的等號不同,它帶有方向;考試常問「sum ← sum + 1 的意思是什麼」,答案是令 sum 的舊值加一之後存回 sum。
- 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 分的同學錯誤判為不合格。
- WHILE 循環WHILE 循環適合「只知道條件、不知道次數」的重複。例如 WHILE count < 30 DO(INPUT score;count ← count + 1):只要 count 仍然少於 30,條件成立,程式便繼續輸入分數;count 到達 30 時條件不成立,離開循環。關鍵是循環之內必須有令條件改變的語句,這裡是 count ← count + 1;如果漏掉這句,count 永遠不變,循環便永遠停不下來。考試常問循環執行了多少次,可以用代入數字的方法逐圈追蹤。
- FOR 循環已知重複次數時用 FOR 循環:FOR i FROM 1 TO 10 DO OUTPUT i,i 依次取 1 至 10,程式便印出 1 至 10。選擇 FOR 還是 WHILE 的原則:已知次數(例如「印出十個數」、「處理 30 位同學」)用 FOR;只知條件(例如「直到答對為止」、「直到總分超過 100」)用 WHILE。兩者可以互相改寫,但考試要求按題意選擇最合適的一種,並且寫出循環變數的起點、終點和變化。
- 流程圖符號對號入座流程圖的五種符號要對號入座:「輸入兩個數」用平行四邊形;「計兩數之和」用矩形;「是否大於 0?」用菱形;開始和結束用圓角矩形;所有步驟之間用箭嘴連接,方向由上至下。記憶口訣:問問題用菱形,做動作用矩形,資料進出用平行四邊形。常見錯誤是把輸入輸出畫成矩形,或者判斷只畫一條出路;畫完之後逐一檢查每個符號的形狀與用途是否相符。
- 循環在流程圖中的畫法循環在流程圖中用「返回箭嘴」表示。以輸入 5 個分數並計算總分為例:輸入分數(平行四邊形)之後,用矩形把分數加到總分;菱形問「計完 5 個嗎?」,答案為否時,箭嘴返回輸入步驟繼續;答案為是時,箭嘴通往輸出總分。這個返回箭嘴就是循環的標誌。畫圖前先想清楚循環變數是什麼、什麼時候加一、什麼時候判斷,畫出來的圖才不會出錯。
4圖解 Diagrams
5例題示範 Example
例題:把「輸入兩個數,輸出較大的一個」寫成偽代碼,並指出流程圖需要哪些符號。
- 先搭框架:BEGIN 之後 INPUT num1, num2,這一步在流程圖中用平行四邊形表示,因為資料由外面進入。
- 中間寫判斷:IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2,判斷在流程圖中用菱形,兩條出路分別標明「是」和「否」。
- 最後 END 結束,流程圖中用圓角矩形;輸出的兩句在流程圖中也用平行四邊形。
- 檢查邊界情況:當 num1 = num2 時,條件 num1 > num2 不成立,走 ELSE 路線輸出 num2,結果仍然正確,因為兩數相同時輸出任何一個都對。
- 答案:偽代碼:BEGIN;INPUT num1, num2;IF num1 > num2 THEN OUTPUT num1 ELSE OUTPUT num2;END。所需符號:圓角矩形(開始和結束)、平行四邊形(輸入和輸出)、菱形(判斷)、矩形(處理)、箭嘴(流程方向)。兩數相同時走 ELSE 路線,輸出結果依然正確。
6常見錯誤 Mistakes
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。