0:00:00.700,0:00:05.010 讓我們來談談迴圈[br]這兒我有一個while迴圈,及幾行程式碼 0:00:05.010,0:00:07.740 我可以將這個訊息在屏幕上一路往下寫 0:00:07.740,0:00:10.765 若我像這樣更改訊息,使它更完善 0:00:10.765,0:00:12.486 它們全部也會跟著改變 0:00:12.486,0:00:16.293 這是如何做到的?[br]我們可以重新溫習一下這程式碼 0:00:16.293,0:00:20.522 但首先讓我們先退一步,[br]思考一下如何只用我們知道的 0:00:20.522,0:00:22.801 而不用迴圈來編寫這個程式 0:00:22.801,0:00:27.021 而要做到這點,我們就只能[br]一遍又一遍地寫一大串文字對嗎? 0:00:27.021,0:00:30.740 我們會說輸入文字、訊息,我要將它放在首位 0:00:30.740,0:00:36.686 現在只要這樣一直重複夠多次,[br]直到最後到達屏幕底部即可 0:00:36.686,0:00:38.949 而這要花好大一番功夫,是吧? 0:00:38.949,0:00:42.753 因為底部真的好遠,而更糟的是 0:00:42.753,0:00:47.988 若你之後告訴我說,這其實不是70,[br]應該更近一點,類似60 0:00:47.988,0:00:51.289 現在這個也受影響了,因為它也必須小一點 0:00:51.289,0:00:55.416 並一路影響到我們更多呼叫輸入文字的程式 0:00:55.416,0:00:58.791 事實上,這樣就要花更多時間才能到達底部 0:00:58.791,0:01:02.506 這真的很痛苦,幸好有迴圈可以幫助我們 0:01:02.506,0:01:05.410 從現在起,你只要看到像這樣重複的程式碼 0:01:05.410,0:01:08.010 你應該第一個想到:「我可以使用迴圈嗎?」 0:01:08.010,0:01:11.197 迴圈可以讓我們一遍又一遍地重複這段程式碼 0:01:11.197,0:01:13.971 每次只做一點小改變 0:01:13.971,0:01:16.381 而這是我們如何用迴圈來改寫這程式碼 0:01:16.381,0:01:20.768 首先,我們需要鍵入while、括號及大括號 0:01:20.768,0:01:23.609 我們將會收到這訊息,但這只是因為我們還沒寫完 0:01:23.609,0:01:26.301 別擔心,當我們完成時它就會消失了 0:01:26.301,0:01:30.810 每次你寫一個迴圈時,你需要回答三個重要問題 0:01:30.825,0:01:33.210 它們是: 0:01:33.210,0:01:37.371 第一:「我想重複的是什麼?」 0:01:37.371,0:01:41.466 無論我們想重複的為何,它必須放在大括號中 0:01:41.466,0:01:46.198 這次我們想重複呼叫「輸入文字」,所以就把它放進這裡 0:01:46.198,0:01:48.021 但這有一點笨不是嗎? 0:01:48.021,0:01:51.691 因為現在我們將一直重複呼叫完全相同文字輸入 0:01:51.691,0:01:54.777 而這不是我們真的想要的,我們想要改變某些東西 0:01:54.777,0:01:58.040 這帶到第二個問題:「每次我想變更的是什麼?」 0:01:58.040,0:02:03.043 我們想變更的是位置y,對嗎?[br]想將它變為60,再來是80 0:02:03.043,0:02:07.973 於是我們設它為變數y,[br]因為它代表的是位置y 0:02:07.973,0:02:12.256 接著我們在這宣告一個變數,起始為40 0:02:12.256,0:02:14.736 最後我們只需要去變動y 0:02:14.736,0:02:18.255 我們可以在下面這裡說「y為y加上20」 0:02:18.255,0:02:21.088 所以每次y會變得越來越大 0:02:21.088,0:02:24.235 事實上,這兒我們可以用之前學到的遞增快捷指令 0:02:24.235,0:02:26.992 我們可以就繼續使用快捷指令 0:02:26.992,0:02:30.702 太棒了,現在我們只需要回答第三個問題: 0:02:30.702,0:02:33.035 「我們應該重覆這多久?」 0:02:33.035,0:02:36.751 雖然我們希望它一遍又一遍,[br]但不是真的直到永遠,對吧? 0:02:36.751,0:02:39.422 若它永遠執行下去,第一,要花很長的時間等待 0:02:39.422,0:02:41.402 第二,它可能甚至會損壞你的瀏覽器 0:02:41.402,0:02:47.341 但願不會。我們只想一直重複達到頁面的底部,對嗎? 0:02:47.341,0:02:50.771 也就是只當y小於400時才執行它 0:02:50.771,0:02:53.369 所以就把那放進這兒,有了! 0:02:53.369,0:02:56.566 我們將這訊息一路寫到屏幕底了 0:02:56.566,0:02:59.470 而且你可以發現這比我們之前的方式簡單多了 0:02:59.470,0:03:04.295 之前方式花了我們很多時間去寫,但甚至還完成不到四分之一 0:03:04.295,0:03:08.090 所以我們捨棄那種方式,而有了我們現在的程式 0:03:08.090,0:03:11.361 現在,讓我們試著進一步了解發生了什麼事情 0:03:11.361,0:03:15.234 要做到這點,我將輸出每一次的y值,[br]我會說「y現在的值是」 0:03:15.234,0:03:19.410 然後我將跟著y直到訊息結束,於是我們可以盯著它 0:03:19.410,0:03:23.343 此刻,值每次增加20,而我們可以 0:03:23.343,0:03:29.337 只靠改變這裡的變數去變更它,[br]或你可以把它改成50 0:03:29.337,0:03:31.426 現在,它們正以50來增加 0:03:31.426,0:03:35.578 相似地,你可以繼續用其他的值來改變它們 0:03:35.578,0:03:40.831 且你可以看見那會怎麼影響程式會停在哪裡 0:03:40.831,0:03:45.747 要理解這一點,你其實可以將它想像成一個if述句 0:03:45.747,0:03:48.962 在這我們有我們的布林表示式就像你看到的 0:03:48.962,0:03:52.009 然後,我們只在布林值為真時 0:03:52.009,0:03:56.739 才執行此敘述的主體,否則就跳到結束 0:03:56.739,0:04:00.233 但有趣的是在while迴圈,我們其實在程式最後 0:04:00.233,0:04:02.724 有個祕密的事情在進行著,它說: 0:04:02.724,0:04:07.202 「回到迴圈的起始點」。這祕密指令意指 0:04:07.202,0:04:12.211 不像if述句一樣離開程式繼續往下走 0:04:12.211,0:04:17.462 而是每次執行迴圈本體,我們將再回去確認是否條件依然成立 0:04:17.462,0:04:20.314 如果成立,我們就會再重複一次 0:04:20.314,0:04:24.278 而就像你可能已經猜到的,第二次重複時,我們將再次做相同的事情 0:04:24.278,0:04:28.496 我們會回到起始點,確認y是否依然小於279? 0:04:28.496,0:04:31.565 如果是,就會再重複一次並繼續確認 0:04:31.565,0:04:34.591 但如果不是,我們回到開始這裡 0:04:34.591,0:04:38.478 最後,我們將離開並繼續往下執行其他程式 0:04:38.478,0:04:42.703 太好了,很快我們將會學到更多有趣的方式來使用迴圈 0:04:42.703,0:04:46.703 而現在,你已經有了一個很棒的開端