---
# System prepended metadata

title: 演算法
tags: [演算法, 運算思維]

---

演算法
===

###### 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)
