演算法 === ###### tags: `演算法` `運算思維` ![](https://i.imgur.com/z1qmVDp.png) ## 什麼是演算法? - 我們日常生活中會面臨許多問題,試圖解決問題的方法,都可以視為一種廣義的演算法。 ## 演算法的功能 - 明確地告訴電腦,碰到什麼狀況時,應該如何反應或執行什麼步驟。 :books: 演算法的5大特性 --- - 輸入:可有多個、或是沒有輸入資料 - 輸出:必須至少有一個輸出結果 - 明確性:每個指令必須明確,不可模稜兩可 - 有限性:演算法執行,必需在有限步驟內結束 - 有效性(可行性):每個命令都必須是可執行的步驟,以確定能解決問題 :::info **狹義演算法:** 由**有限**(finite) 步驟(step) 所構成的集合,依照給定**輸入**(input) 依序執行每個**明確(definite)** 且**有效**(effective) 的步驟,以便能夠解決特定的問題;而步驟的執行**必定會終止**(terminate),並產生**輸出**(output) ::: :closed_book: Tasks -- ### 想想看: - [ ] 如何表達,能使解決的步驟更明確? - [ ] 同一個問題,可能有不同的演算法嗎? - [ ] 有好的演算法和不好的演算法嗎?你的判斷標準是什麼? :books: 演算法的表達 --- **此節圖片來源:康軒109資訊課本** ![](https://i.imgur.com/jnMio00.png) - 文字 ![](https://i.imgur.com/pwiEBNs.png) - 流程圖:利用各種圖形與箭頭等符號,來表示執行一件事情的步驟與順序。 ![](https://i.imgur.com/RPDMxGK.png) ![](https://i.imgur.com/dFyCrAH.png) ## 三種表示法的比較: ![](https://i.imgur.com/og2NdgW.png) ![](https://i.imgur.com/9NtnBgW.png) <iframe width="560" height="315" src="https://www.youtube.com/embed/TfAT0xP2TxM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> ## 流程圖繪製重點: - 使用標準符號,以便閱讀和分析 - 文字簡潔、明確可行 - 繪製方向由上而下,由左至右 - 線條應避免交叉或過長 - 流程圖圖示說明 ![](https://i.imgur.com/5qCx3vO.png) ![](https://i.imgur.com/Zm6HKXO.png) ![](https://i.imgur.com/ZAaU7sq.png) :closed_book: Tasks -- ### 寫scratch登場程式 & 畫流程圖: - 至[Scratch網站](https://scratch.mit.edu/projects/editor/?tutorial=getStarted) > 創造,寫一個登場後自我介紹的小程式 - **至[Draw.io](https://draw.io) 繪製小程式的流程圖** - 下載成PNG圖檔後繳交 <!-- Other important details discussed during the meeting can be entered here. --> ## 動腦時間: - 猜數字(1~100)的流程圖要怎麼畫? - 數獨的破解有什麼秘訣嗎? [![](https://i.imgur.com/apmZ0pQ.png)](https://sudoku.com/tw)