[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.98,0:00:05.58,Default,,0000,0000,0000,,我們又回到用函數\N來畫4個溫斯頓的程式了 Dialogue: 0,0:00:05.58,0:00:06.92,Default,,0000,0000,0000,,我修改了一下\N Dialogue: 0,0:00:06.92,0:00:09.24,Default,,0000,0000,0000,,以便顯示溫斯頓不同人生階段的年紀 Dialogue: 0,0:00:09.24,0:00:11.38,Default,,0000,0000,0000,,你等一下就會明白 Dialogue: 0,0:00:11.38,0:00:13.55,Default,,0000,0000,0000,,我要告訴你一件關於溫斯頓的事: Dialogue: 0,0:00:13.55,0:00:15.90,Default,,0000,0000,0000,,溫斯頓愛死甜甜圈了 Dialogue: 0,0:00:15.90,0:00:18.44,Default,,0000,0000,0000,,他每天吃3個 Dialogue: 0,0:00:18.44,0:00:21.65,Default,,0000,0000,0000,,難怪一張臉又大又黃 Dialogue: 0,0:00:21.65,0:00:25.31,Default,,0000,0000,0000,,為了提醒他\N甜甜圈對身體不好 Dialogue: 0,0:00:25.31,0:00:26.98,Default,,0000,0000,0000,,我想修改一下程式\N Dialogue: 0,0:00:26.98,0:00:31.76,Default,,0000,0000,0000,,以便顯示於每個年紀\N他累計吃下多少甜甜圈 Dialogue: 0,0:00:32.10,0:00:35.76,Default,,0000,0000,0000,,例如,他2歲時 Dialogue: 0,0:00:35.76,0:00:41.60,Default,,0000,0000,0000,,他共吃了3﹡365﹡2 Dialogue: 0,0:00:41.60,0:00:45.87,Default,,0000,0000,0000,,1天3個,1年365天,2年 Dialogue: 0,0:00:45.87,0:00:49.64,Default,,0000,0000,0000,,讓數量顯示在標頭下 Dialogue: 0,0:00:49.64,0:00:51.52,Default,,0000,0000,0000,,哇!2千個甜甜圈 Dialogue: 0,0:00:51.52,0:00:54.16,Default,,0000,0000,0000,,對2歲娃來說太多了 Dialogue: 0,0:00:54.16,0:00:56.81,Default,,0000,0000,0000,,現在他14歲 Dialogue: 0,0:00:56.81,0:01:04.03,Default,,0000,0000,0000,,他吃了 3﹡365﹡14 Dialogue: 0,0:01:04.03,0:01:07.64,Default,,0000,0000,0000,,共吃了1萬5千個甜甜圈 Dialogue: 0,0:01:08.45,0:01:13.05,Default,,0000,0000,0000,,我一直這樣算也行\N但我開始發現一個規律 Dialogue: 0,0:01:13.05,0:01:16.72,Default,,0000,0000,0000,,我正在重複我的運算 Dialogue: 0,0:01:16.72,0:01:20.32,Default,,0000,0000,0000,,而我只改變其中的一樣東西:年數 Dialogue: 0,0:01:20.32,0:01:22.87,Default,,0000,0000,0000,,每當我看到像這樣重複的程式碼 Dialogue: 0,0:01:22.87,0:01:28.23,Default,,0000,0000,0000,,我便想:「嗯,這能否寫成函數?」 Dialogue: 0,0:01:28.23,0:01:30.46,Default,,0000,0000,0000,,對,我們絕對可以的\N Dialogue: 0,0:01:30.46,0:01:32.80,Default,,0000,0000,0000,,我們動手吧 Dialogue: 0,0:01:32.80,0:01:34.42,Default,,0000,0000,0000,,我在這裡定義函數 Dialogue: 0,0:01:34.42,0:01:40.94,Default,,0000,0000,0000,,叫它做 calcTotalDonuts = function Dialogue: 0,0:01:40.94,0:01:44.23,Default,,0000,0000,0000,,裡面只有一個參數,年數 Dialogue: 0,0:01:44.23,0:01:49.31,Default,,0000,0000,0000,,因為那是我們每次做這計算時\N唯一變動的東西 Dialogue: 0,0:01:49.32,0:01:52.88,Default,,0000,0000,0000,,程式裡面,我們做計算 Dialogue: 0,0:01:52.88,0:02:01.49,Default,,0000,0000,0000,,將它存為變數\N也就是 3﹡365﹡numYears Dialogue: 0,0:02:01.49,0:02:03.15,Default,,0000,0000,0000,,我們現在有了這函數 Dialogue: 0,0:02:03.15,0:02:08.64,Default,,0000,0000,0000,,我將利用 calcTotalDonuts\N去取代在這裏的表示式 Dialogue: 0,0:02:08.64,0:02:12.83,Default,,0000,0000,0000,,以便召喚程式,及傳遞數值 2 Dialogue: 0,0:02:12.83,0:02:16.100,Default,,0000,0000,0000,,好,現在我們看不到任何總數 Dialogue: 0,0:02:16.100,0:02:18.96,Default,,0000,0000,0000,,嗯,怎麼了呢? Dialogue: 0,0:02:19.39,0:02:22.15,Default,,0000,0000,0000,,我們的函式確實計算了總數 Dialogue: 0,0:02:22.15,0:02:23.10,Default,,0000,0000,0000,,在這 Dialogue: 0,0:02:23.10,0:02:26.06,Default,,0000,0000,0000,,但它沒有告知任何人那總數 Dialogue: 0,0:02:26.06,0:02:30.25,Default,,0000,0000,0000,,好比學校老師點你回答問題 Dialogue: 0,0:02:30.25,0:02:31.70,Default,,0000,0000,0000,,而你只在腦中回答 Dialogue: 0,0:02:31.70,0:02:33.65,Default,,0000,0000,0000,,因爲你太害羞去講出答案 Dialogue: 0,0:02:33.65,0:02:37.38,Default,,0000,0000,0000,,你有答案,但老師永遠不會知道 Dialogue: 0,0:02:37.38,0:02:41.09,Default,,0000,0000,0000,,如果我們想函數\N傳某值給召喚它的人 Dialogue: 0,0:02:41.09,0:02:45.71,Default,,0000,0000,0000,,函數就要寫明去回傳 (return) 那值 Dialogue: 0,0:02:45.71,0:02:49.60,Default,,0000,0000,0000,,要函數回傳一個值 \N我們須輸入 return Dialogue: 0,0:02:49.60,0:02:51.28,Default,,0000,0000,0000,,不管它想回傳什麼 Dialogue: 0,0:02:51.28,0:02:55.14,Default,,0000,0000,0000,,可以是變數、數值或表示式 Dialogue: 0,0:02:55.14,0:02:57.75,Default,,0000,0000,0000,,這裡我們指明\Nreturn totalDonuts Dialogue: 0,0:02:57.75,0:03:01.87,Default,,0000,0000,0000,,所以誰召喚此函數\N誰就會得到這回答 Dialogue: 0,0:03:01.88,0:03:04.79,Default,,0000,0000,0000,,總計顯示出來了, 耶! Dialogue: 0,0:03:04.79,0:03:06.65,Default,,0000,0000,0000,,這裡我們可簡化函數 Dialogue: 0,0:03:06.65,0:03:08.34,Default,,0000,0000,0000,,不必儲存成變數 Dialogue: 0,0:03:08.34,0:03:10.05,Default,,0000,0000,0000,,只需把整個表示式 Dialogue: 0,0:03:10.05,0:03:13.61,Default,,0000,0000,0000,,寫在 return 裡\N函數就變成一行 Dialogue: 0,0:03:13.61,0:03:14.41,Default,,0000,0000,0000,,好 Dialogue: 0,0:03:15.08,0:03:17.96,Default,,0000,0000,0000,,現在我們可以來回顧和計算 Dialogue: 0,0:03:17.96,0:03:20.36,Default,,0000,0000,0000,,每個年紀吃下的甜甜圈總量 Dialogue: 0,0:03:20.36,0:03:24.26,Default,,0000,0000,0000,,就是召喚這函數\N傳遞年數 Dialogue: 0,0:03:24.26,0:03:28.70,Default,,0000,0000,0000,,嗯,這裡是 calcTotalDonuts(25) Dialogue: 0,0:03:28.70,0:03:36.04,Default,,0000,0000,0000,,位置沒錯 calcTotalDonuts(65) Dialogue: 0,0:03:36.37,0:03:40.24,Default,,0000,0000,0000,,好!哇!如果他吃到65歲 Dialogue: 0,0:03:40.24,0:03:45.15,Default,,0000,0000,0000,,他將吃下7萬個甜甜圈\N那真是超多甜甜圈 Dialogue: 0,0:03:45.15,0:03:48.05,Default,,0000,0000,0000,,我不覺得溫斯頓能辦到(笑) Dialogue: 0,0:03:48.05,0:03:50.33,Default,,0000,0000,0000,,不過現在我們寫了這函數 Dialogue: 0,0:03:50.33,0:03:53.19,Default,,0000,0000,0000,,做些小調整並不難 Dialogue: 0,0:03:53.19,0:03:55.14,Default,,0000,0000,0000,,好比溫斯頓看到這結果 Dialogue: 0,0:03:55.14,0:03:58.86,Default,,0000,0000,0000,,說: 「噢!這太多了\N如果我1天只吃1個?」 Dialogue: 0,0:03:58.86,0:04:02.75,Default,,0000,0000,0000,,那我們可以來到這\N修改這一個數字 Dialogue: 0,0:04:02.75,0:04:04.33,Default,,0000,0000,0000,,所有都改好了 Dialogue: 0,0:04:04.33,0:04:07.02,Default,,0000,0000,0000,,2萬3千個,還是很多 Dialogue: 0,0:04:07.02,0:04:10.49,Default,,0000,0000,0000,,也許溫斯頓說:\N「好吧好吧!如果我1週吃1個呢?」 Dialogue: 0,0:04:10.49,0:04:12.48,Default,,0000,0000,0000,,嗯,這比較合理 Dialogue: 0,0:04:12.48,0:04:15.02,Default,,0000,0000,0000,,那我們改 365 為 50 Dialogue: 0,0:04:15.02,0:04:17.52,Default,,0000,0000,0000,,因為一年有50週,對吧? Dialogue: 0,0:04:18.10,0:04:22.80,Default,,0000,0000,0000,,好,看來好多了,是吧?\N3千個,那蠻合理的 Dialogue: 0,0:04:22.80,0:04:27.03,Default,,0000,0000,0000,,所以你看,運用函數和數值回傳 Dialogue: 0,0:04:27.03,0:04:30.87,Default,,0000,0000,0000,,我們能保存程式碼,亦能保護生命