程式語言與邏輯 教學實例 高中資訊學科諮詢輔導團 2006/6/15
教學目標 能夠處理資料的輸入與輸出 能夠使用適當的運算式處理資料 能夠使用適當的變數資料型態 能夠分析程式的流程與結構化邏輯概念 能夠撰寫程式,並且養成良好的程式碼風格 能夠閱讀程式,並且進行程式的測試與執行 能夠修改程式,並且進行程式的測試與除錯
授課時數:8小時 程式語言概說 (50分鐘) 變數與運算式 (100分鐘) 程式的流程控制 (150分鐘) 專題研究 (100分鐘)
一、程式語言概說 (50分鐘) 說明套裝軟體與專案軟體的差異 說明程式語言運作的原理 說明各類程式語言的特性 說明專案軟體的開發的流程
變數與運算式 (100分鐘) Area = 3.14 × r ^ 2 變數與常數 變數 常數 變數 常數 變數是程式中一塊指定了名稱的記憶體位址, 這塊記憶體中放的資料就是變數的值 , 這些變數的值會隨著程式的執行過程而改變 。
變數與運算式 (100分鐘) 變數的內涵 變數名稱 變數儲存空間 變數資料型態 變數內容 變數儲存位址 Dim r as Integer Dim Area as Single r = 10 Area = 3.14 * r ^ 2 Print Area
變數與運算式 (100分鐘) 想一想 A = 3 B = 5 A = B Print A 學生問:怎麼可能 A=B ?
變數與運算式 (100分鐘) Area = 3.14 × r ^ 2 運算式 運算子 用來指示資料項目間運算方式的運算符號 運算元 運算元 運算元 運算元 運算子 運算子 運算子 運算子 用來指示資料項目間運算方式的運算符號 運算元 運算子所要運算的資料項,包括常數、變數等
變數與運算式 (100分鐘) 運算式 算術運算 +, -, *, /, \, mod, ^ 文字運算 & 布林運算 Not, And, Or 關係運算 >, =, <, >=, <=, <>
程式的流程 (100分鐘) 結構化程式設計 循序結構 選擇結構 迴圈結構 以流程圖表示三種控制結構,並且解釋這三種控制結構的意義
程式的流程 (100分鐘) 程式的偵錯與除錯 錯誤的程式大致分為三類 編譯階段錯誤 執行階段錯誤 程式邏輯錯誤 初學者因不熟悉程式語法、名稱拼錯等,最常犯這種錯誤 執行階段錯誤 變數溢位、陣列索引超出範圍 程式邏輯錯誤 程式執行結果與預期結果不同,甚至造成電腦當機。
程式的流程 (100分鐘) 程式的偵錯與除錯 偵測錯誤的方法 設置中斷點 安插檢查程式 當程式執行到中斷點的位置,程式的執行就會中斷,再觀察變數的狀況。 安插檢查程式 在程式中安插一小段檢查程式,列印出某些運算式結果或文字,以判斷程式錯誤位置;同時配合縮小範圍找出錯誤。
專題研究 (100分鐘) 說明什麼是「數獨」遊戲 每個數字在每個橫列、直行及九宮格裡都只能出現一次 橫列 4 5 1 3 2 9 8 6 7
專題研究 (100分鐘) 說明什麼是「數獨」遊戲 每個數字在每個橫列、直行及九宮格裡都只能出現一次 直行 4 5 1 3 2 9 8 6 7
專題研究 (100分鐘) 說明什麼是「數獨」遊戲 4 5 1 3 2 9 8 6 7 每個數字在每個橫列、直行及九宮格裡都只能出現一次
專題研究 (100分鐘) 資料結構安排 解題策略 橫列以「生肖」分類 直行以「星座」分類 九宮格以「月份」分類 水瓶座↓ 牡羊座↓ 金牛座↓ 天蠍座↓ 射手座↓ 雙魚座↓ 獅子座↓ 天秤座↓ 雙子座↓ 九 宮 格 鼠→ 1 2 3 4 5 6 7 8 9 一月 牛→ 10 11 12 13 14 15 16 17 18 二月 虎→ 19 20 21 22 23 24 25 26 27 三月 兔→ 28 29 30 31 32 33 34 35 36 四月 龍→ 37 38 39 40 41 42 43 44 45 五月 蛇→ 46 47 48 49 50 51 52 53 54 六月 馬→ 55 56 57 58 59 60 61 62 63 七月 羊→ 64 65 66 67 68 69 70 71 72 八月 猴→ 73 74 75 76 77 78 79 80 81 九月 資料結構安排 橫列以「生肖」分類 直行以「星座」分類 九宮格以「月份」分類 解題策略 將所有情況羅列出來後,依題目已知條件刪除不可能情況。
專題研究 (100分鐘) 摒除法 4 5 1 3 2 9 8 6 7
專題研究 (100分鐘) 摒除法 對於每個橫列,進行一次與上述步驟相似的數字摒除法。 對於每個九宮格,進行一次與上述步驟相似的數字摒除法。 對於每個直行,進行一次與上述步驟相似的數字摒除法。 對於每個九宮格,進行一次與上述步驟相似的數字摒除法。 檢查所有的位置,判斷哪些位置的可能值只剩下一個數字,將這個數字填入表格中。 若已知的數字未滿81個,則再執行步驟1~步驟3,直到找到所有位置的數字為止。 若是在進行摒除法的過程中,已知數字個數無法增加時,則選取一個位置,排列出其可能出現的值後,再重新進行摒除法。
專題研究 (100分鐘) 摒除過程記錄表 序號 拼除動作 已知個數 1 橫列:生肖 32 2 直行:星座 34 3 九宮:月份 40 4 44 5 52 6 60 7 66 8 70 9 76 10 79 11 81
專題研究 (100分鐘) 展開樹 若是已知數字個數無法累增則選取一個位置 排列出其可能出現的值後 再進行摒除法 排列的記錄 可以運用「展開樹」 來輔助記憶