1. 程式人生 > >CodeMonkey少兒程式設計第3章 times迴圈

CodeMonkey少兒程式設計第3章 times迴圈

## 目標 ## * 瞭解程式由哪三種基本的結構組成 * 瞭解**迴圈**的概念 * 掌握**times**的結構與用法

## 三種基本結構 ## 計算機程式由三種最基本的結構組成,它們分別是:
* 順序結構 * 迴圈結構 * 選擇結構 千萬不要被這些陌生的術語給嚇住了,它們非常簡單,它們其實是根據我們日常思考和處理問題的方法提煉得來的。
下面讓我給你一一道來。

### 順序結構 ### 什麼是順序結構?
讓我們通過日常生活中的例子,來說明什麼是順序結構。想一想,在早上起床鬧鐘響了之後,你會做些什麼事情。
假設你是個早睡早起的好孩子,那麼早上鬧鐘響了以後,你會依次做以下事情:
1. 起床 2. 關閉鬧鐘 3. 穿衣 4. 洗漱 5. 整理 6. 出門 以上就是一個很好的順序結構的例子。不難看出,順序結構就是指按照**從前至後**的順序,依次做不同的事情。
在之前的所有關卡中,我們所寫的程式碼都是順序結構的,都是從第一條指令開始執行,一直到最後一條。

### 迴圈結構 ### 那什麼是迴圈結構呢?讓我們仍然以上面的例子來進行說明。
假設前一天晚上你熬夜到了凌晨兩三點,早上六點半時,鬧鐘準時響了,此時你想多睡幾分鐘,但又怕睡過頭了。於是,
1. 鬧鐘響了 2. 起床 3. 關閉鬧鐘 4. 接著睡覺 5. 鬧鐘響了 6. 起床 7. 接著睡覺 ...... 上面就是一個典型的迴圈結構。所謂迴圈結構,就是指重複地做一些事情。

### 選擇結構 ### 那選擇結構又是什麼樣的呢?讓我們繼續以上面的例子來解釋。
早上出門後,肚子都餓得咕咕叫了,你來到早餐店,你和老闆發生瞭如下的對話:
1. 問:今天你吃常德牛肉粉還是武漢熱乾麵?
2. 答:常德牛肉粉
3. 問:吃圓的還是吃扁的?
4. 答:圓的
5. 問:吃紅燒牛肉的還是吃麻辣牛肉的?
6. 答:紅燒牛肉的
你看,上面的3次問答,其實就是3次選擇。在計算機的世界裡,這就是3個選擇結構的應用。

## times指令格式 ## 選擇結構我們放在後面學習,今天讓我們先來學習一個最基本的迴圈結構——times,它的格式如下:
> n.times ->
> ....迴圈體 其中,n是迴圈重複的次數。迴圈體(所有參與迴圈的指令)中的指令會被重複執行n次。之後,計算機就會結束times迴圈,接著執行接下來的語句。
需要注意的是,
* **times**和**->**之前有一個空格,且是不能省略的
* 迴圈體不能從某一行的最開始處書寫民,在它前面必須有一個**Tab**.(上述以4個.代表tab鍵)
下面是一段典型的times迴圈。
[![times_example](https://img2020.cnblogs.com/blog/508474/202101/508474-20210123095247263-344770175.gif "點選圖片體驗CodeMonkey")](https://app.codemonkey.com/challenges/0)

## times的應用 ## 讓我們通過下面這個關卡來更好地理解什麼是times迴圈,以及它的作用。
下面是[我自己建立的一個關卡](https://app.codemonkey.com/user_challenges/69655)。
[![challenges_times](https://img2020.cnblogs.com/blog/508474/202101/508474-20210123095653940-766629613.gif "點選圖片開始CodeMonkey之旅")](https://app.codemonkey.com/user_challenges/69655) 如果使用順序結構,很明顯,小猴子需要依次完成以下動作: > step 10    # 移動 10 步
> turn left   # 左轉
> step 10    # 移動10步
> turn left   # 左轉
> step 10    # 移動10步
> turn left   # 左轉
> step 10    # 移動10步
> turn left   # 左轉
> step 20    # 移動20步
上述解題方法使用的就是順序結構的思維。
在學習times之前,我們只能將程式寫成上述的形式,裡面有很多重複的程式碼,不論是檢視或是修改起來都非常的繁瑣。
[![order](https://img2020.cnblogs.com/blog/508474/202101/508474-20210123100545450-1825923179.gif "順序結構")](https://app.codemonkey.com/user_challenges/69655) 請注意,圖中有個不斷變換位置的桔黃色進度條,它表示被高亮的這一條語句當前正在被執行。這是一個相當實用的功能,通過觀察這個進度條,你就能夠實時地知道當前計算機正在執行哪一條指令了。
如果遊戲執行速度過快,來不及觀察,你可以在設定面板上調慢執行速度,這樣就可以更加仔細觀察進度條的移動。
對於這一個關卡,如果使用times迴圈,那上面的程式碼就會簡潔多了,它可以寫成如下的形式:
> 4.times ->
>    step 10  # 移動10步
>    turn left  # 左轉
> step 20   # 移動20步
程式碼的執行流程如下圖所示:
[![times](https://img2020.cnblogs.com/blog/508474/202101/508474-20210123100647793-765418568.gif "迴圈結構")](https://app.codemonkey.com/user_challenges/69655) 請仔細觀察上圖中桔黃色的進度條是怎樣一步一步地移動的。
上述程式碼有三點需要注意:
* **times**與**->**必須有一個空格 * 迴圈體前面必須有一個**tab鍵** * step 20這一條指令前**不能**有tab鍵,否則,它就成了times迴圈結構的一部分了
讓我們來看一下,如果在step 20前面有tab鍵,程式是怎麼執行的。
[![times_error](https://img2020.cnblogs.com/blog/508474/202101/508474-20210123100731504-1988272295.gif "tab鍵的使用")](https://app.codemonkey.com/user_challenges/69655) 你看,如果在step 20的前面有tab鍵的話,計算機就會認為它也是迴圈體的一部分了。 好了,本章的內容就到這裡了,趕緊通過作業來檢驗一下你的學習效果吧。

## 作業 ## * 故事模式21 - 30關 * 進階模式3-1 - 3-10關
注意,一定保證要所有關卡都拿到三顆星。

## 小結 ## * 計算機的三種基本程式結構是**順序結構**、**迴圈結構**和**選擇結構** * times迴圈的格式,times與->之間的空格不能省,迴圈體前的tab鍵不能忘記 * 通過桔黃色的進度條,可以觀察計算機指令的執行流程 ## 問答 ## * 怎麼能玩到[你建立的那一關](https://app.codemonkey.com/user_challenges/69655)?
點選[這裡](https://app.codemonkey.com/user_challenges/69655),你就能自己程式設計來解決文中提及的關卡了。
* 怎麼樣才能體驗更多的關卡?
點選[這裡](https://app.codemonkey.com/class/9kcpf),即刻開始瞭解更多CodeMonkey有趣課程。
* 文章排版不行啊?
點選[這裡](https://mp.weixin.qq.com/s?__biz=MzU2Njk2MDIxOQ==&mid=2247483758&idx=1&sn=ad1d2d5ea467f997d4f986dff23f6a88&chksm=fca5c85acbd2414c448da8d83db40ab1ceba5f6b7b0d1136f3041c951d41589b43fe137484ee&scene=178&cur_album_id=1434004188115337220#rd),獲取更好的閱讀