# 變數

除了流程控制之外，能否彈性地運用變數，通常也都是衡量一個程式語言工具能力的重要因素。

為什麼變數如此地重要？因為奠定現代電腦的基石馮紐曼（Von Neumann）架構就是以載入-->儲存-->計算-->輸出作為程式執行的基本原則，而儲存的地方就是記憶體，要存取記憶體的特定位置，在高階程式語言中就是以變數來指定。

{% embed url="<https://zh.wikipedia.org/wiki/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84>" %}

有一篇還不錯的文章，對於電腦內部的運作做了很清楚的說明：

{% embed url="<https://www.inside.com.tw/article/9507-von-neumann-architecture>" %}

那麼，在Scratch中又是如何使用變數呢？有一個變數類別的積木群可以使用：

![](https://1789170130-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJEK4Zm0THA0vYxBYQ%2F-LZguHijKLSNSsPRnKqO%2F-LZgwn-b2fqBCN7ycsIX%2F2019-02-27_11-14-54.png?alt=media\&token=346fea3f-f280-4c60-9215-4b219d284b09)

建立一個變數等於是讓系統幫你到電腦的記憶體中預定出一塊空間給你，你可以給這個空間一個名字，方便用來說明在這裡面要放什麼東西。在預設的情況下，Scratch已經幫我們建立了一個叫做「my variable」的變數可以直接拿來使用。

現在，假設我們想要讓貓咪可以數個數字，例如從1數到10，那麼我們先建立一個變數叫做counter，如下所示：

![](https://1789170130-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJEK4Zm0THA0vYxBYQ%2F-LZguHijKLSNSsPRnKqO%2F-LZgxbec3Ed-mzdCYHuZ%2F2019-02-27_11-18-49.png?alt=media\&token=51e3b91c-aa99-465a-a0d3-878091bdeee2)

建立完成之後，會在變數積木區看到如下所示的改變：

![](https://1789170130-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJEK4Zm0THA0vYxBYQ%2F-LZguHijKLSNSsPRnKqO%2F-LZgxpX-1JOSTQ4x9xpb%2F2019-02-27_11-19-51.png?alt=media\&token=06630630-7881-46e4-893d-e099e9ee43cb)

其實也會在舞台上看到這個變數的內容：

![](https://1789170130-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJEK4Zm0THA0vYxBYQ%2F-LZguHijKLSNSsPRnKqO%2F-LZgy-synG8somvpikL1%2F2019-02-27_11-20-32.png?alt=media\&token=010095d5-3ba5-4c80-802f-1e4cc3c4eb43)

有了變數，即可在程式中對此積木進行操作，請看以下的範例：

![](https://1789170130-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LZJEK4Zm0THA0vYxBYQ%2F-LZguHijKLSNSsPRnKqO%2F-LZgyftTna_HBW5TI-wL%2F2019-02-27_11-23-20.png?alt=media\&token=6b232f19-6d3e-41b1-b210-8e298db51688)
