codemonkey少兒編程【86-95關】基礎課程-直到沙地

學習目標

1、回顧我們學習過的簡單循環和for循環

2、練習使用until循環

3、學會使用near函數

4、在函數內使用until循環

5、for循環、函數、until循環的綜合使用

知識講解:

在這節課中,我們將使用一種新的循環:“until”環。這個循環非常有用,但是也很危險。

有用是因為它可以幫助我們去做一些重復性的操作直到完成。如果我們在使用的時候不夠謹慎,往往會出現死循環(程序會無休止地執行,停不下來),所以說它也很危險。

“until”循環包含了一個循環控制條件,當不滿足條件時重復執行,直到條件滿足停止循環。當程序運行時,每循環一次計算機都會對條件進行檢查,如果是false(“假”也就是條件不成立),循環繼續,如果是true(“真”也就是條件成立)循環將結束。

例如:我們賽跑,要重復循環的動作就是跑,一直到抵達終點,便可以停下來了。

until 抵達終點 <循環控制條件,到達終點即為“真”,停止循環,否則繼續執行>

run

如果我們不注意,我們可能會給“until”循環的一個永遠不能為“真”的條件。這將讓循環永遠執行下去,最終可能導致程序崩潰。例如:

until 太陽從西邊升起 <循環控制條件,不可能為“真”,那么你就永遠一直跑吧>

run


實戰練習:

第86關:這一關要我們通過程序來體會一下until的用法,程序閱讀:前進一步直到接近火柴停止移動,然后拾取火柴,進入下一個循環繼續前進直到接近火柴堆,停止前進。我們還差最后一個操作是什么?

【86-95關】基礎課程-直到沙地

第87關:這一關開始之前先問你一個問題,你現在離門近嗎?那么你的回答可以是“是”也可以是“不”,同理near 函數也會返回一個結果“yes”或者“no”,我們怎么知道?很簡單,用say指令(例如 say near pile),看看會說出什么。until直到后面的條件返回“yes”才會停止循環,否則會一直執行下去。讓我們試一試看看。

【86-95關】基礎課程-直到沙地

第88關:這一關稍稍增加了難度,還是繼續熟悉掌握until的用法,注意的是,在拾取火柴后,要調整方向,然后一直前行,直到接近火柴堆,放下火柴就過關了。

【86-95關】基礎課程-直到沙地

第89關:在這幾關中,我們發現使用之前的step distance to其實更簡單,沒錯,不過我們主要是讓大家了解until,那什么時候用until呢,這是重點?就本關來說應該就是在我們無法知道老鼠到火柴的距離的時候用最合適(你看螞蟻一直在拖動火柴,所以他們之間的距離是沒法固定的),比如你的小伙伴搶走了你的玩具,你是不是要一直追,直到追上他為止(until near him),我們是無法明確要向他走多少步或跑多少米的。

【86-95關】基礎課程-直到沙地

第90關:知道什么時候用until了吧,你看螞蟻又在拖動火柴,快快轉身,去取回火柴,這可是一場賽跑呀(無法確定到火柴的距離,需要用until循環,不斷前進),直到你靠近火柴,拾取火柴,然后轉向火柴堆,移動到火柴堆,放下火柴,過關。

【86-95關】基礎課程-直到沙地

第91關:這一關思路上沒有任何難度了,考察的就是我們自己動手能力,本關沒有一行代碼,自己去完成until循環,取回火柴吧。

【86-95關】基礎課程-直到沙地

第92關:這一關考察大家的debug功力了,思路很簡單,讓烏龜前行到小橋旁為幫助老鼠過河,程序中有一個小bug需要你去修復,建議先點運行,看看發生了什么,然后去查找原因,修復bug【提示:就一個小小錯誤】。

【86-95關】基礎課程-直到沙地

之前講過until何時使用,這一關就完全沒必要使用,你們覺得呢,要不要按照自己的思路再寫一個答案,過關。答案如下圖:

【86-95關】基礎課程-直到沙地

是不是超簡單,不過這樣只能得到一顆星。知識需要靈活運用,這一關不給三顆星,主要還是設計者希望大家學會調試,并鞏固until循環的知識。

第93關:這一關取到火柴就沒有以前那么簡單了,不僅距離是變化的,而且老鼠與火柴的方向都在變化,因此我們還是需要用到until循環,每次循環都調整一下老鼠的方向,前進一步,直到接近火柴,你們是不是這么想的。

【86-95關】基礎課程-直到沙地

想象一下你在跟同學玩追逐游戲的時候是不是一邊跑一邊改變自己的方向,讓自己始終面向對方,只要你跑的比他快,肯定能追上他對不對。

第94關:還記得函數嗎?這一關函數又與大家見面了,我們要定義一個chase函數,閱讀代碼得知它要實現的功能就是抵達某個對象處(對象就是傳入的參數,比如火柴、火柴堆)在這個函數里我們需要用到until循環,一步步靠近目標,直到接近它。

【86-95關】基礎課程-直到沙地

第95關:這是一個比較綜合的關卡,涉及了之前所學的for循環,函數的定義與調用,函數內使用until循環,不過不用怕,只要你思路明確,頂多就是多寫幾行代碼的事。

【86-95關】基礎課程-直到沙地

三根火柴,首先我們就想到要用for循環挨個去拾取,在拾取每一根火柴的時候(for循環內)我們又需要使用chase函數(函數內具體通過until循環來實現功能)去抵達火柴,拾取火柴,chase函數抵達火柴堆,放下火柴,重復以上操作去拾取第二根火柴,最終把所有火柴matches全部取回,過關,思路就這么簡單。右側已給出了主程序部分,如下圖所示:

【86-95關】基礎課程-直到沙地

答案:

【86-95關】基礎課程-直到沙地【86-95關】基礎課程-直到沙地【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地codemonkey少兒編程【86-95關】基礎課程-直到沙地

本站內容未經許可,禁止任何網站及個人進行轉載。